# source repo .gitlab-ci.yml # requires a project access token (Project > Settings > Access tokens): # - TOKEN with read_repository, write_repository; Role: Maintainer # # disable protected branch for Maintainer (Project > Settings > Repository): # - main branch allowed to merge, allowed to push and merge maintainer; allowed to force push on # # requires the following gitlab variables (Project > Settings > CI/CD > Variables): # - REPO_NAME: gitlab.com// (Protected, Masked, Expanded) # - SOURCE_REPO: https://cgit.example.com/ (Protected, Masked, Expanded) # - TOKEN: (Protected, Masked, Expanded) # stages: - mirror mirror-from-cgit: stage: mirror image: ubuntu:20.04 before_script: - apt-get update -y && apt-get install -y git - git config --global user.name "CI" - git config --global user.email "ci@gitlab.com" script: - git clone --mirror "$SOURCE_REPO" temp_repo - cd temp_repo - TARGET_REPO="https://oauth2:$TOKEN@$REPO_NAME" - git remote set-url origin "$TARGET_REPO" - git push --prune --mirror only: - schedules