-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathmirror.yml
More file actions
57 lines (56 loc) · 2.85 KB
/
mirror.yml
File metadata and controls
57 lines (56 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# yaml-language-server: $schema=https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json
.repo_pull_sync:
image: ghcr.io/cloud-pi-native/git-sync:1
variables:
CI_SKIP:
value: "false"
SYNC_ALL:
value: "false"
# Should be renamed to REF cause tags are also available
GIT_BRANCH_DEPLOY:
value: ""
PUSH_TAGS:
value: "false"
id_tokens:
VAULT_ID_TOKEN:
aud: $VAULT_SERVER_URL
before_script:
- export EXTRA_ARGS=""
- if [ ! -z $http_proxy ]; then export BUILD_ARGS="$BUILD_ARGS --build-arg http_proxy=$http_proxy"; fi
script:
- export VAULT_ADDR=$VAULT_SERVER_URL
- export VAULT_TOKEN="$(vault write ${EXTRA_VAULT_ARGS} -field=token auth/jwt/login role=default-ci jwt=$VAULT_ID_TOKEN)"
- export GIT_INPUT_USER=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_INPUT_USER ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- export GIT_INPUT_PASSWORD=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_INPUT_PASSWORD ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- export GIT_INPUT_URL=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_INPUT_URL ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- export GIT_OUTPUT_USER=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_OUTPUT_USER ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- export GIT_OUTPUT_PASSWORD=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_OUTPUT_PASSWORD ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- export GIT_OUTPUT_URL=`vault kv get ${EXTRA_VAULT_ARGS} -field=GIT_OUTPUT_URL ${VAULT_KV}/${CI_PROJECT_NAMESPACE}/${PROJECT_NAME}-mirror`
- |
GIT_OPTIONS=""
if [ "${CI_SKIP}" = 'true' ]; then
GIT_OPTIONS="${GIT_OPTIONS} -o ci.skip"
fi
if [ "${PUSH_TAGS}" = 'true' ]; then
GIT_OPTIONS="${GIT_OPTIONS} --tags"
fi
- |
if [ "${SYNC_ALL}" = 'true' ]; then
git clone --mirror ${EXTRA_GIT_ARGS} "https://${GIT_INPUT_USER}:${GIT_INPUT_PASSWORD}@${GIT_INPUT_URL}" ./clonerepo
else
git clone ${EXTRA_GIT_ARGS} "https://${GIT_INPUT_USER}:${GIT_INPUT_PASSWORD}@${GIT_INPUT_URL}" ./clonerepo;
fi
- cd ./clonerepo
- |
if [ "${SYNC_ALL}" = 'true' ]; then
printf "syncing all branches\n"
git -c http.postBuffer=262144000 ${EXTRA_GIT_ARGS} push --force --prune \
"http://${GIT_OUTPUT_USER}:${GIT_OUTPUT_PASSWORD}@${GIT_OUTPUT_URL}" \
"refs/heads/*:refs/heads/*" \
"refs/tags/*:refs/tags/*" \
${GIT_OPTIONS}
else
printf "syncing branch ${GIT_BRANCH_DEPLOY}\n"
git checkout ${GIT_BRANCH_DEPLOY} && \
git ${EXTRA_GIT_ARGS} push --force --prune "http://${GIT_OUTPUT_USER}:${GIT_OUTPUT_PASSWORD}@${GIT_OUTPUT_URL}" ${GIT_BRANCH_DEPLOY} ${GIT_OPTIONS}
fi