我是 gitlab ci/cd 的新手。查看文档,它建议我们可以在 gilab pipeline 中定义/设置 ci/cd 步骤。另外,设置 webhook 集成。是否可以设置一个步骤并通过网络调用的发布请求来调用该步骤?在下面的示例中,我知道,我可以自动执行提到的步骤或从浏览器手动调用它。但是,是否可以通过网络调用调用每个步骤,例如 test-job1 和 test-job-2 ?
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
test-job1:
stage: test
script:
- echo "This job tests something"
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
我已经设置了一个 gitlab 存储库,并在我的 gitlab ci 文件中添加了 ci/cd 步骤。
您可以使用 Gitlab 的 API 运行手动作业。
curl --request POST "https://gitlab.example.com/api/v4/projects/1/jobs/1/play" \
--header "Content-Type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>"
您的工作需要添加“何时:手动”,或者一条使其成为手动工作的规则。
test-job1:
stage: test
when: manual
script:
- echo "This job tests something"
为了获取作业 ID,您可能需要执行其他 API 调用,例如列出管道作业。请注意,您可能需要分页,因为它返回最后 20 个管道。在这里你可以获得所有手工作业:
curl --globoff --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs?scope[]=manual"