Я экспериментировал со следующим .gitlab-ci.yml
, чтобы посмотреть, смогу ли я получить задание пометить сборку, которая затем вызовет другой экземпляр того же конвейера; и следующее делает это (с отредактированным токеном личного доступа).
Мне пришлось добавить токен триггера и токен личного доступа, чтобы этот тест работал.
Это сработало, как и ожидалось - Я бы нажал на конвейер с помощью curl
, чтобы запустить его, а затем он создал бы тег, и это вызвало бы другой конвейер, который запустил бы развертывание.
Вот полная рабочая .gitlab-ci.yml
:
createtag:
script:
- git config --global user.email "me@example.com"
- git config --global user.name "My Name"
- git tag -m 'tag message' $(date +%s) origin/master
- git remote add mygitlab https://oauth2:__MYTOKEN__@gitlab.com/atsaloli/trigger-test.git
- git push --tags mygitlab
only:
- triggers
deploy_to_somewhere:
script:
- echo run deploy script
only:
- tags
и снимок экрана, показывающий два экземпляра конвейера:
Итак, то, что вы описали, может определенно работать - я бы Посмотрите немного поближе на свою систему, чтобы увидеть, работает ли каждая часть как следует - например, команды git
, которые вы дали, я не вижу, как они будут работать ...
Где у вас есть :
# Create new tag and push to repo
- git tag $NEW_TAG master
- git push --tags
Я обнаружил, что у меня не работает.
Сначала «мастер» не был известен git ссылка:
$ git tag $(date +%s) master
fatal: Failed to resolve 'master' as a valid ref.
Затем «происхождение / мастер» сработало, но мне пришлось установить свою личность:
$ git tag -m 'tag message' $(date +%s) origin/master
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@runner-72989761-project-3569621-concurrent-0.(none)')
Наконец, я должен был предоставить gitlab-ci-token:
$ git config --global user.email "me@example.com"
$ git config --global user.name "My Name"
$ git tag -m 'tag message' $(date +%s) origin/master
$ git push --tags
remote: You are not allowed to upload code.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.com/atsaloli/test.git/': The requested URL returned error: 403
Так что, как только я обработал все это, я обнаружил, что могу автоматически пометить репо, что приведет к другому экземпляру трубопровод для запуска.