Переменные в GitLab не передаются между заданиями.Есть еще люди, которые спрашивают, можно ли это сделать, хотя:
https://gitlab.com/gitlab-org/gitlab-ce/issues/47517
Я сам не использовал среды в GitLab, но по этой ссылке это выглядит как среда:url весьма ограничен в том, что вы можете с ним делать:
https://docs.gitlab.com/ce/ci/yaml/#environmenturl
Должна быть возможность использовать API для ручного запуска нового конвейера из задания сборки:
https://docs.gitlab.com/ee/ci/triggers/#triggering-a-pipeline
У них есть некоторые функции, которые облегчают, если вы платный клиент, но я думаю, что в любом случае должно быть возможно достичь того, чего вы хотите.Вы можете использовать что-то вроде этого из вашей работы в d_build:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"token":"token", "ref":"my-branch", "variables": {"url_endpoint": "myendpoint"}}' \
https://gitlab.com/api/v4/projects/:iid/trigger/pipeline
Вам потребуется получить токен доступа:
https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html
И вы можете отправить его по адресускрипт GitLab, использующий переменные или защищенные переменные:
https://docs.gitlab.com/ce/ci/variables/#variables
Ваш файл gitlab-ci будет выглядеть примерно так:
stages:
- build
- deploy
d_build:
stage: build
tags:
- my-runner
script:
- echo "Build"
- sh testScript.sh
- [curl script here]
except:
variables:
- $url_endpoint
d_review:
stage: deploy
environment:
name: staging
url: $url_endpoint
tags:
- my-runner
script:
- echo "Foo"
only:
variables:
- $url_endpoint
"only" и "кроме "ключевые слова должны сделать так, чтобы при нажатии выполнялось только задание на сборку, а d_review запускался только тогда, когда установлена эта переменная, которая должна присутствовать только при запуске задания.
У меня нетпроверил это, но я надеюсь, что это даст вам возможность поработатьЯ действительно надеюсь, что есть более простое решение, что это!