2017-02-20 134 views
0

我想使用gitlab-ci自动执行我的部署过程。我现在通过ssh手动完成。步骤如下:使用gitlab-ci在Docker中构建.NET Core项目

体形:

  • DOTNET恢复
  • DOTNET发布

这给我留下了一个完整的.DLL文件的目录。我想这些部署到一个码头工人的容器,所以我跑:

  • 搬运工建立
  • 码头工人停止
  • 搬运工RM
  • 搬运工运行

不过,我有一个很难找到正确的方式在同一个.gitlab.ci.yml文件中。

我需要从microsoft/dotnet:latest的dotnet工具和docker:latest的docker cli工具。

我试图根据这些图像的每一个有两个阶段,但输出不共享。为了解决这个问题,我尝试使用artifact,但无法上传。

我找不到任何这个在线的例子,所以我不知道我是否做了不该做的事情。

回答

1

不太清楚你为什么在制作流程中做docker run,也不知道为什么artifact不起作用。我们正在做这件事情,以artifactdependencies的阶段。

为了适应您的需求,必须自定义构建图像是非常正常的。对于您的构建图像,您似乎需要docker以及dotnet。创建一个Dockerfile,将其用作构建图像,并让它从microsoft/dotnet继承。然后在该图像中安装docker。请记住在/var/run/docker.sock中挂载,以便容器可以使用docker守护进程。

您的新Dockerfile看起来就像这样:

FROM microsoft/dotnet 

RUN echo deb http://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list && \ 
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \ 
apt-get update && \ 
apt-get install -y docker-engine 

要在您的计算机上运行的图像使用

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock yournewimage 

您配置GitLab亚军配置文件中安装/var/run/docker.sock,那么你就可以在您的gitlab-ci.yml中使用新图像。

+0

我实际上并没有使用docker run,因为我被困在了工件问题上。但最终,我希望我的CI管道在每次提交时都要部署映像来掌握。 我一定会尝试你的Dockerfile。即使有人工制品,我想我可能更喜欢这个解决方案。我现在有点忙,但是我会在几天内回复你(并且如果有效的话,接受你的回答)。 –

+0

感谢Dockerfile。这部分工作就像一个魅力。我必须改变我的配置,如下所述:https:// gitlab。com/gitlab-org/gitlab-ci-multi-runner/issues/1905 我提出了一个问题与工件。我错误地认为每一步都可以继续,直到最后一个停止,只要它是相同的图像。 –

+0

回到这个。我发现一个解决方法后,我更新直接解决了这个问题。不过,我怀疑nginx背后的gitlab是带有伪像的问题,并且增加nginx的请求限制可能会解决此问题。 –

相关问题