Backup organization's GitHub repositories with Github CLI.
- Clones repository with --mirror mode
- Clones repository wiki if exists
- Gets repository issues as JSON
- Creates tar.gz archive file
- Sync backup archives to S3 bucket
- Github CLI
- jq
- awscli
Note: all these are pre-installed on Github Action runners and in Docker image (see below).
These scripts can be used with e.g. CI workflow, Docker container or as it is:
GH_OWNER=myorg GH_LIST_LIMIT=5 ./backup.shS3_BUCKET=mybucket AWS_ACCESS_KEY_ID=mykey AWS_SECRET_ACCESS_KEY=mysecret ./s3.shSee Github workflow to see how to use with Github Actions workflow.
For backup.sh:
| Name | Value | Description |
|---|---|---|
| GH_TOKEN | Specific token to use | |
| GH_OWNER | octocat | GitHub organization |
| GH_LIST_LIMIT | 100 | How many repositories to backup |
| GIT_CLONE_MODE | ssh | Clone using ssh or https |
For s3.sh:
| Name | Value | Description |
|---|---|---|
| S3_BUCKET | Target S3 bucket for backups | |
| AWS_ACCESS_KEY_ID | awscli credential | |
| AWS_SECRET_ACCESS_KEY | awscli credential | |
| AWSCLI_FLAGS | --only-show-errors --no-progress | Flags for awscli |
| S3_REGION | eu-central-1 | Default region |
Use prebuild image:
docker run -ti --rm -e GH_TOKEN=YOUR_PAT -e GH_OWNER=myorg -e GH_LIST_LIMIT=5 \
-v `pwd`/backups:/app/backups ghcr.io/druidfi/git-backupperBuild image as git-backupper:latest:
docker build . --progress plain -t git-backupper- Add S3 script running to Docker image
- Possibility to backup custom repositories