Автоматизация отправки частей git-репо в облачное хранилище Google - PullRequest
0 голосов
/ 29 апреля 2018

При настройке я думал, что я буду работать над своим репо и хранить его в частном порядке вместе с Gitlab. Затем я создал бы файл .gitlab-ci.yml, который при каждом нажатии запускает репо в Google Source Repo, который запускает действия по обновлению корзины проекта.

Я просмотрел руководство Создание статических учетных данных , которое, кажется, ссылается на очень устаревшую страницу, на которой содержится указание создать файл .gitcookies, в котором будут храниться ваши статические учетные данные. Я не понимаю, что он мне дает или как я могу поместить их в Gitlab в качестве секрета, чтобы использовать их для запуска удаленного репозитория git.

Этот подход кажется более простым, учитывая, что мне не нужно было создавать учетные данные, поскольку все в GCR имеет соответствующий доступ к этому проекту gcloud, но я могу быть совершенно неосновным здесь. Но, с другой стороны, создание статических учетных данных, которые я бы сохранял в Gitlab и которые затем могли синхронизироваться с хранилищем gcloud, не казалось мне полностью возможным из документации.

  1. Возможно ли то, что я пытаюсь сделать?
  2. Действительно ли проще просто создавать пользовательские учетные данные только для push-уведомлений и иметь бегуна Gitlab, управляющего синхронизацией сегмента?

Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2018

Если у вас есть доступ к вашему собственному серверу 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__
...