Основываясь на документации gitlab, можно запустить задание в конвейере ci/cd, а также передать некоторые параметры в запросе POST. образец ниже. как правильно читать/анализировать переменные.json в задании gitlab ci/cd? скажем, я хочу запустить test-job1 в своем конвейере с помощью следующей команды Curl, как прочитать параметры, переданные в @variables.json в .gitlab-ci?
curl --request POST "https://gitlab.example.com/api/v4/projects/project_id/trigger/pipeline" \
--header "Content-Type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data @variables.json
.gitlab-ci.yml
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
test-job1:
stage: test
script:
- python3 mydumbscript.py $arg1 $arg2 $arg3
test-job2:
stage: test
script:
- echo "This job tests something, but takes more time than test-job1."
- echo "After the echo commands complete, it runs the sleep command for 20 seconds"
- echo "which simulates a test that runs 20 seconds longer than test-job1"
- sleep 20
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
environment: production
Учитывая пример variables.json
файла, такой:
{
"job_variables_attributes": [
{
"key": "MY_VAR_1",
"value": "foo"
},
{
"key": "MY_VAR_2",
"value": "bar"
}
]
}
Затем в задании, которое будет выполнено, вы можете сделать что-то вроде следующего:
test-job1:
stage: test
script:
- python3 mydumbscript.py $MY_VAR_1 $MY_VAR_2
По сути, --data @variables.json
экспортирует определенные переменные в ваш JSON, чтобы они были доступны в задании, поэтому вы можете использовать их так же, как если бы они были определены в ключевом слове variables
.
Рад был помочь! Да, вы можете это сделать, хотя это будет совершенно отдельный вопрос — вы можете использовать rules
, чтобы контролировать выполнение ваших заданий, чтобы достичь такого уровня контроля.
спасибо — вот мой новый вопрос — stackoverflow.com/questions/78238090/…
я разместил здесь новый вопрос - stackoverflow.com/questions/78238090/…
Ответил там!
Спасибо. У меня есть одно небольшое сомнение: можно ли запустить определенное задание через API gitlab?