[英]Retrieving a CI variable outside the CI file in GitLab
我想使用 GitLab 中的預定義變量(例如 CI_COMMIT_AUTHOR)來檢索和使用項目信息。
我想在 .gitlab-ci.yml 文件之外使用該變量。
我正在編寫一個模板,所以當它被使用時,文件應該重新填充正確的信息。
例如,模板包含一個.yaml文件
apiVersion: sample.io/v1alpha1
kind: Component
metadata:
name: #said team app"my_awesome_app"
description: #description of app
annotations:
backstage.io/techdocs-ref: dir:.
spec:
type: documentation
lifecycle: experimental
owner: $CI_COMMIT_AUTHOR
如果要在.gitlab-ci.yml之外使用Gitlab變量,實現方法是通過Gitlab API查詢
但不幸的是,對於 Gitlab predefined
變量,似乎不存在用於檢索它們的 API
我的建議是在你的 gitlab-ci.yml 中創建一個包含你需要的所有變量的文件。 將其存儲為工件並通過 Gitlab API 檢索工件
為了實現這一點,首先向您的 gitlab yml 添加一個作業,它將預定義的變量存儲在一個工件中,例如
store_predefined_variables:
...
script:
- touch variables.txt
- echo "CI_COMMIT_AUTHOR=$CI_COMMIT_AUTHOR" >> variables.txt
artifacts:
paths:
- ./variables.txt
接下來檢索名為store_predefined_variables
https://docs.gitlab.com/ee/api/jobs.html#list-project-jobs的作業的id
GET /projects/:id/jobs
最后,使用job id
檢索包含所有所需變量https://docs.gitlab.com/ee/api/job_artifacts.html#get-job-artifacts的工件
GET /projects/:id/jobs/:job_id/artifacts
結合使用jq
命令的兩個 API 調用 abd,我們可以得到一個單行程序,它檢索名稱為store_predefined_variables
的最新作業的工件。 工件下載為artifacts.zip
wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML,like Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" --header "PRIVATE-TOKEN: <access_token>" "https://gitlab.com/api/v4/projects/<project_id>/jobs/$(curl -s --header "PRIVATE-TOKEN: <access_token>" "https://gitlab.com/api/v4/projects/<project_id>/jobs" | jq '[.[] | select(.name=="store_predefined_variables")] | .[0].id')/artifacts" -O artifacts.zip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.