簡體   English   中英

用docker優化gitlab-ci

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM