首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用docker优化gitlab-ci

使用docker优化gitlab-ci
EN

Stack Overflow用户
提问于 2018-06-20 15:19:00
回答 1查看 504关注 0票数 1

我有一个非常基本的asp.net核心mvc应用程序。

我已经安装了一个gitlab-ci服务器,并且我已经将我的源文件和项目文件推送到一个存储库。

我已经创建了这个.gitlab-ci.yml文件:

代码语言:javascript
复制
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 pileline中开始。

一切似乎都很正常。

我真的很想了解一切。

以下是我的问题:

首先,我可以在作业控制台中看到类似以下内容:

代码语言:javascript
复制
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

runner首先创建一个docker容器。最后,我们可以看到启动测试的dotnet命令。但在两者之间,我们可以看到作业正在从我的存储库获取源文件。这是逻辑,因为容器需要源文件。但是,正如您所看到的,我的.gitlab-ci.yml中没有说明要下载源文件的内容。这看起来像是魔法?但是我讨厌计算中的魔法!runner如何知道要下载哪些源文件,位于哪个目录?

第二个问题:在管道中创建了两个工作:一个用于构建,另一个用于测试。没有优化,第二个容器需要重新运行构建操作。有没有办法在单一的docker容器中做到这一点(为了优化)。

第三个,也是最后一个问题:作业已成功运行,但当我键入以下命令时,我可以看到两个容器条目:

代码语言:javascript
复制
docker ps -a

我可以看到"Exited (0) 11小时前“。为什么不自动删除这些容器?如果我运行数百个测试,我的跑步者计算机将没有空间和内存!

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-20 16:52:01

问题1:

运行器如何知道要下载哪些源文件,位于哪个目录?

我认为查看gitlab文档将会回答这个问题:

问题2:

为什么不自动删除这些容器?如果我运行数百个测试,我的跑步者计算机将没有空间和内存!

很抱歉这么直接,但稍微搜索一下可能已经回答了你的问题:https://gitlab.com/gitlab-org/gitlab-runner/issues/2151

gitlab开发人员Nikola Kovacs的回答:

这和预期的一样工作。缓存容器必须在构建后保留,以便下一次构建可以使用缓存。在构建之后删除它会违背它的目的。

您可以使用以下命令自动执行清理:https://gitlab.com/gitlab-org/gitlab-runner-docker-cleanup

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50942435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档