GitLab CI/CD 的文檔 一次看個夠 Dokcer鏡像gitlab 文檔
3559
2025-03-31
簡介
本篇文章介紹三個關鍵詞,用于指定runner的tags,使用鏡像來構建運行作業,以及規定合適觸發作業的when關鍵詞。這些都是非常使用的基礎關鍵詞。對于我們編寫流水線非常有幫助。
下面為大家詳細介紹。
指定runner tags
tags是用于指定作業運行的runner,開發者在注冊runner時,會指定runner的tag,這是一個逗號分割的列表,在注冊后開發者也可以在Gitlab上進行修改。
假如一個runner的tag為[Sona, Galio],那么如果作業要使用該runner運行腳本的話可以這樣寫
GarenJob: script: echo 'The only limit to our realization of tomorrow will be our doubts of today.' tags: - Sona - Galio
如果runner有二個tag,你可以指定一個tag,也可以指定2個。如果指定一個,并且該tag在多個runner中都存在,那么作業會在二個runner隨機調度到其中一個。為了確保指定到固定的runner,建議在注冊runner時使用不同的tag,并且在作業下指定tag時,列出runner的所有tag。
在作業上tags并不是必填項,如果一個作業沒有配置tags那么該作業回去尋找該項目下,所有可以使用的runner,并且runner配置為不必指定tag也可以調用。
鏡像image
如果你的流水線要使用Docker鏡像來運行,或提供基礎服務,那么使用關鍵詞image將變的很簡單。
以下是一個使用image的例子
InstallJob: image: node:latest script: npm install
上面的例子就是使用nodejs的官方鏡像node來進行項目構建的。注意image在shell執行器下是不生效的。即使主機上已經安裝了Docker。
image的值可以是一個完整的鏡像地址,如registry.example.com/my/image:latest。
image除了指定鏡像名外,還可以重置鏡像的入口即 entrypoint
重置鏡像入口該配置對于一些二進制文件鏡像非常有用,比如 bitnami/kubectl 可以參考一下我的這篇文章
使用Gitlab CI/CD部署應用到Kubernetes集群的方案
deploy_k8s: image: name: bitnami/kubectl entrypoint: [""] script: - kubectl version
如果你要使用一個私有倉庫的鏡像,那么首先需要配置Docker授權,可以使用靜態授權,即賬號密碼登錄私有庫,
也可以使用Docker的秘鑰。
一般情況下使用的鏡像都是公開的,但也并不排除有需要使用私有鏡像的情況。這里介紹一下如何使用私有鏡像。
使用下面命令生成秘鑰
echo -n "my_username:my_password" | base64
my_username 與my_password都是登錄私有鏡像庫的賬號和密碼。
執行后會生成一個base64的字符串。
然后創建一個變量DOCKER_AUTH_CONFIG
DOCKER_AUTH_CONFIG變量的值為
{ "auths": { "<私有鏡像的域名>": { "auth": "上面生成的base64的字符串" } } }
然后就可以放心大膽地使用私有鏡像了。
還有一種方式是直接在GitLab Runner的配置文件里這樣寫
environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.example.com:5000\":{\"auth\":\"bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=\"}}}"]
更多方式可以查看這個文檔
運行條件when
關鍵詞when是用于配置滿足何種條件下作業才會運行。
一共有6個值
on_success (默認): 當前一階段的所有作業運行成功后,才會運行該作業
manual: 手動觸發作業
always: 不管前面作業的狀態如何,都會運行
on_failure: 當前面有一個作業運行失敗才會運行該作業
delayed:延遲運行該作業
never: 絕不運行該作業
使用案例
stages: - build - cleanup_build - test - deploy - cleanup build_job: stage: build script: - make build cleanup_build_job: stage: cleanup_build script: - cleanup build when failed when: on_failure test_job: stage: test script: - make test deploy_job: stage: deploy script: - make deploy when: manual cleanup_job: stage: cleanup script: - cleanup after jobs when: always
當build_job 失敗后,cleanup_build_job 作業將會運行
在流水線結束時總是執行cleanup_job 作業,無論前面的作業是成功或失敗
要想執行deploy_job 作業,必須在GitLab UI上點擊運行才可以,因為它是一個手動運行作業。
參考資料
https://docs.gitlab.com/ee/ci/yaml/#image
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#override-the-entrypoint-of-an-image
DevOps Git
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。