Migration
From GitHub to CodeQuay, with your CI still running
The idea in one line: you push only to CodeQuay, and GitHub becomes a copy that updates automatically after every push. Your GitHub Actions pipelines stay where they are.
How it works
Five steps, zero downtime
Imports and mirrors are managed from the console, or from the command line on the server.
- 01
Authorize the instance key
On GitHub, add CodeQuay's public key as a deploy key for the repository. The private key never leaves the server.
- 02
Import the repository
Every branch and every tag, the default branch already protected, indexes ready for fast browsing. If it's interrupted, run it again and it picks up where it left off.
- 03
Check the history for secrets
The import scans the entire history and reports the type, file, line and commit of every potential secret, without ever showing its value.
- 04
Turn on the GitHub mirror
From then on, every push CodeQuay accepts is replicated to GitHub within seconds, and GitHub Actions runs just like today.
- 05
Switch the remote. That's it
For developers it's a single command per clone: the history is identical, nothing to download again.
Import
Bring your full history, and know what's in it
The import copies every branch and every tag (not GitHub pull requests), protects the default branch and scans the entire history for private keys and tokens.
- Secrets it finds have already been exposed: they need to be rotated, deleting them from the code isn't enough
- From then on, secret blocking stops new ones from getting back in
- Safe to re-run: if it's interrupted it resumes and catches up, without overwriting new work
Mirror to GitHub
Your CI stays put, for as long as you want
New and updated branches, new tags, deleted branches: everything is replicated to GitHub a few seconds after the push to CodeQuay.
Whenever you're ready, your workflows can move to CodeQuay Actions, with the same syntax as GitHub Actions. CodeQuay Actions
-
Workflows run just like today
Replicated pushes are real pushes to the GitHub repository, so they trigger your on: push workflows.
-
Secrets and environments stay on GitHub
No CI configuration to move before you get started.
-
If GitHub doesn't respond, CodeQuay retries
With increasing back-off, and it alerts admins on the first failure and again on recovery. Developers' pushes aren't affected.
-
GitHub becomes a copy
You push only to CodeQuay; with a ruleset on GitHub, only CodeQuay's deploy key can write.
For developers
One command, then back to coding
Branches, tags, commits and hashes stay the same. Only the remote URL changes, and from then on protections, secret blocking and the audit log work for you.
Coming from another platform? It's standard git: a git push --mirror is all it takes. And you can leave the same way, with a git clone --mirror.
# HTTPS (with a CodeQuay personal token)$ git remote set-url origin https://git.codequay.it/acme/portale/api.git# or SSH (with a key registered in the console)$ git remote set-url origin ssh://git@git.codequay.it:2222/acme/portale/api.git$ git fetch origin $ git clone --mirror https://current-server.example/acme/api.git$ cd api.git# only if present: drop the pull request refs$ git for-each-ref --format='delete %(refname)' refs/pull | git update-ref --stdin$ git push --mirror https://git.codequay.it/acme/portale/api.git Why CodeQuay
More of what sets CodeQuay apart
Ready to bring your repositories to CodeQuay?
Create your account, start free and begin with an import. Want to know if it's right for your team, or need a dedicated instance? Get in touch.