我有一个非常基本的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)”。为什么这些容器不会自动删除?如果我运行数百个测试,则我的跑步电脑将没有空间和内存!
谢谢
答案 0 :(得分: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