Script for mirroring all repositories of a Github organization or Gitlab groups to AWS CodeCommit. This script is intended to run as a cronjob, typically.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gh_cc_mirror
.gitignore
LICENSE
NOTICE
README.md
requirements.txt
setup.py

README.md

Github - Gitlab - AWS CodeCommit - Mirror

CLI-Commands for mirroring all repositories of a Github organization or a Gitlab group to AWS CodeCommit.

These commands are intended to run as a cronjob, typically.

Installation

Python >= 3.5 is required.

pip install gh-cc-mirror

Two commands are available after installing:

  • gh-cc-mirror (Github -> CodeCommit)
  • gl-cc-mirror (Gitlab -> CodeCommit)

Usage Github => CodeCommit

$ gh-cc-mirror -h
usage: 

    This command will mirror all repositories of an organization from Github to AWS CodeCommit.
    This script is intended to run as a cronjob, typically.
    
       [-h] --github-user GITHUB_USER --github-token GITHUB_TOKEN
       --github-organization GITHUB_ORGANIZATION --cc-user CC_USER
       --cc-password CC_PASSWORD [--dir DIR] [--prefix PREFIX]
       [--aws-access-key AWS_ACCESS_KEY]
       [--aws-secret-access-key AWS_SECRET_ACCESS_KEY]
       [--aws-region AWS_REGION] [--pushed-within PUSHED_WITHIN]

optional arguments:
  -h, --help            show this help message and exit
  --dir DIR             Working directory
  --prefix PREFIX       Prefix for CodeCommit repository name.
  --aws-access-key AWS_ACCESS_KEY
                        AWS access key
  --aws-secret-access-key AWS_SECRET_ACCESS_KEY
                        AWS secret access key
  --aws-region AWS_REGION
                        AWS region
  --pushed-within PUSHED_WITHIN
                        Limit repositories with changes pushed with given
                        period, in minutes!

required named arguments:
  --github-user GITHUB_USER
                        Github user account
  --github-token GITHUB_TOKEN
                        Github personal API access token
  --github-organization GITHUB_ORGANIZATION
                        Github organization
  --cc-user CC_USER     CodeCommit user name
  --cc-password CC_PASSWORD
                        CodeCommit password

Usage Gitlab => CodeCommit

$ gl-cc-mirror -h
usage: 

    This command will mirror all repositories of groups from Gitlab to AWS CodeCommit.
    This script is intended to run as a cronjob, typically.
    
       [-h] --gitlab-token GITLAB_TOKEN --gitlab-groups GITLAB_GROUPS
       [--gitlab-host GITLAB_HOST] --cc-user CC_USER --cc-password CC_PASSWORD
       [--dir DIR] [--prefix PREFIX] [--aws-access-key AWS_ACCESS_KEY]
       [--aws-secret-access-key AWS_SECRET_ACCESS_KEY]
       [--aws-region AWS_REGION] [--pushed-within PUSHED_WITHIN]

optional arguments:
  -h, --help            show this help message and exit
  --gitlab-host GITLAB_HOST
                        Gitlab host, default https://gitlab.com
  --dir DIR             Working directory
  --prefix PREFIX       Prefix for CodeCommit repository name.
  --aws-access-key AWS_ACCESS_KEY
                        AWS access key
  --aws-secret-access-key AWS_SECRET_ACCESS_KEY
                        AWS secret access key
  --aws-region AWS_REGION
                        AWS region
  --pushed-within PUSHED_WITHIN
                        Limit repositories with changes pushed with given
                        period, in minutes!

required named arguments:
  --gitlab-token GITLAB_TOKEN
                        Gitlab personal API access token
  --gitlab-groups GITLAB_GROUPS
                        Gitlab groups, comma-separated string of groupd ids.
  --cc-user CC_USER     CodeCommit user name
  --cc-password CC_PASSWORD
                        CodeCommit password

Authentication

Git connections to Github, Gitlab and AWS CodeCommit are made via https://.

For authentication at Github, a Personal Access Token is needed.

For authentication at Gitlab, a Personal Access Token with api and read_repository permissions is needed.

HTTPS credentials for CodeCommit have to be generated via AWS IAM.

IAM rules

Access rights needed by AWS, for listing and creating CodeCommit repositoires:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:CreateRepository",
                "codecommit:List*"
            ],
            "Resource": "*"
        }
    ]
}

License

Copyright 2017, 2018 dpa-infocom GmbH

Apache License, Version 2.0 - see LICENSE for details