Если у вас есть доступ к вашему собственному серверу GitLab, вы можете вместо этого убедиться, что git использует помощник по учетным данным, который будет кэшировать ваши учетные данные на стороне сервера.
Или выполните ту же операцию на компьютере агента сборки GitLab.
в Linux или MacOS X):
git config credential.helper gcloud.sh
или в Windows:
git config credential.helper gcloud.cmd
Если нет (имеется в виду gitlab.com, нет контроля / доступа к серверу / агенту GitLab), вам нужно будет включить скрипт, который будет генерировать этот файл gitcookie в источниках вашего репо в зашифрованном виде.
См., Например, mholt/caddy/dist/gitcookie.sh.enc
, который используется mholt/caddy/.travis.yml#L17
в TravisCI (но может быть адаптирован к GitLab CI)
#Decrypts a script that installs an authenticated cookie
# for git to use when cloning from googlesource.com.
# Bypasses "bandwidth limit exceeded" errors.
# See github.com/golang/go/issues/12933
- if [ "$TRAVIS_PULL_REQUEST" = "false" ];
then openssl aes-256-cbc -K $encrypted_3df18f9af81d_key \
-iv $encrypted_3df18f9af81d_iv \
-in dist/gitcookie.sh.enc -out dist/gitcookie.sh -d; fi
$encrypted_3df18f9af81d_key
и $encrypted_3df18f9af81d_iv
будут переданы в сборку во время выполнения.
Это потому, что TravisCI поддерживает передачу зашифрованных переменных .
Точно так же GitLab-CI предлагает защищенные переменные .
Пример gitcookie.sh
:
#!/bin/sh
touch ~/.gitcookies
chmod 0600 ~/.gitcookies
git config --global http.cookiefile ~/.gitcookies
tr , \\t <<\__END__ >>~/.gitcookies
go.googlesource.com,FALSE,/,TRUE,1234...(customid),o,git-shenli.pingcap.com=1/afgrd....(secret)
go-review.googlesource.com,FALSE,/,TRUE,1234...(customid),o,git-shenli.pingcap.com=1/afgrd....(secret)
__END__