我有一个非常基本的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服务器上设置了一个docker runner .
当我用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
我可以看到“退出(0)11小时前” . 为什么不自动删除这些容器?如果我运行了数百次测试,我的跑步计算机就会没有空间和内存!
谢谢
1 回答
问题1:
我想调查gitlab文档会回答这个问题:
https://docs.gitlab.com/ee/ci/yaml/#git-strategy
https://docs.gitlab.com/ee/ci/yaml/#git-checkout
https://docs.gitlab.com/ee/ci/yaml/#custom-build-directories
问题2:
很抱歉直接,但谷歌搜索可能已经回答了你的问题:https://gitlab.com/gitlab-org/gitlab-runner/issues/2151
来自gitlab开发人员Nikola Kovacs的回答: