[英]Why do jobs using gitlab resource_groups not get started when they are ready?
我在使用 gitlab 資源組進行管道設計時遇到問題。 在這里查看我簡單的 reduced.gitlab-ci.yml:
stages:
- pre-build
- build
- test
pre-build:
stage: pre-build
script:
- echo "Pre build"
- sleep 5
build:
stage: build
needs: [pre-build]
script:
- sleep 100
test:
stage: test
needs: [pre-build, build]
script:
- echo "Test on hardware"
- sleep 40
resource_group: test-resource
我想要實現的目標:
我面臨的問題:讓我們使用上面 gitlab 文件中的示例。 如果您執行提交“A”,管道將開始運行並在應用程序之后到達測試作業。 105 秒。 問題是:如果您在這 105 秒內執行另一個提交“B”,則會發生一些有趣的事情:當“A”准備開始其測試工作時,它不會這樣做,因為提交“B”已經創建了一個較新的工作,即拉取資源組。
在我們真正的開發管道中,構建需要應用程序。 1.5小時。 這意味着,如果在此期間進行了另一次提交(很有可能),我們永遠不會進入測試作業/測試階段。
有沒有人有類似的問題,或者我做錯了什么? 我們通過實現下游 gitlab yaml 文件的觸發器解決了這個問題,但我想盡可能避免這種情況。
為什么使用 Gitlab resource_groups 的作業准備就緒后無法啟動?
因為當您使用“最新優先”流程模式時,它將從即將到來的作業列表中選擇第一個作業,狀態為created
、 scheduled
或waiting_for_resource
。
難道我做錯了什么?
我不認為你做錯了什么。 不幸的是,我認為這是流程模式的預期行為。
有沒有人有類似的問題?
我看到 Gitlab 問題跟蹤器上有一個問題描述了這個問題。 我完全同意問題作者的這句話:
包含
created
的行為似乎改變了resource_group
的定義,超出了鎖的范圍,因為這些作業並未積極爭用鎖,但仍在阻止其他作業獲取它。
因此,因為資源將 select created
作業,進程模式不僅阻止並發運行,而且如果created
了新作業(甚至不一定正在運行),還會阻止舊作業運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.