[英]gitlab-ci optimisation with docker
我有一個非常基本的asp.net核心mvc Web應用程序。
我已經安裝了gitlab-ci服務器,並將源文件和項目文件推送到存儲庫中。
我創建了這個.gitlab-ci.yml文件:
image: microsoft/dotnet:latest
stages:
- build
- test
build:
stage: build
script:
- dotnet restore
- dotnet build
test:
stage: test
script:
- dotnet test Tests
我已經在gitlab服務器上設置了一個dockerRunner。
當我使用git推送內容時,構建和測試階段將從gitlab-ci堆砌線開始。
一切似乎都正常。
我真的很想了解一切。
這是我的問題:
首先,我可以在工作控制台中看到以下內容:
Pulling docker image microsoft/dotnet:latest ...
Using docker image sha256:xxxxxx for microsoft/dotnet:latest ...
Running on runner-xxxxxx-concurrent-0 via myserver...
....
Fetching changes...
....
HEAD is now at xxxxxx test
Checking out xxxxxx as mybranch...
...
$ dotnet test Tests
運行程序首先創建一個docker容器。 最后,我們可以看到啟動測試的dotnet命令。 但是,在兩者之間,我們可以看到工作是從存儲庫中獲取源文件。 這是邏輯,因為容器需要源文件。 但是,正如您所看到的,我的.gitlab-ci.yml中沒有任何內容可下載源文件。 這似乎是魔術嗎? 但是我討厭計算中的魔術! 運行程序如何知道在哪個目錄中下載哪些源文件?
第二個問題:在管道中創建了2個工作:一個用於建築,第二個用於測試。 沒有優化,第二個容器需要重新運行構建操作。 有沒有一種方法可以在單個docker容器中執行此操作(以進行優化)。
第三,也是最后一個問題:作業已成功運行,但是當我鍵入以下命令時,我可以看到2個容器條目:
docker ps -a
我可以看到“ 11小時前已退出(0)”。 為什么這些容器不會自動刪除? 如果我運行數百個測試,則我的跑步計算機將沒有空間和內存!
謝謝
問題1:
運行程序如何知道在哪個目錄中下載哪些源文件?
我認為研究gitlab文檔將回答這個問題:
問題2:
為什么這些容器不會自動刪除? 如果我運行數百個測試,則我的跑步計算機將沒有空間和內存!
很抱歉直接問您,但是很少使用Google搜索可以回答您的問題: https : //gitlab.com/gitlab-org/gitlab-runner/issues/2151
gitlab開發人員Nikola Kovacs的回答:
這正在按預期方式工作。 緩存容器必須在構建后保留,以便下一個構建可以使用緩存。 構建后將其刪除會破壞其目的。
您可以使用它來自動執行清理: https : //gitlab.com/gitlab-org/gitlab-runner-docker-cleanup
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.