使用gitlab-ci在docker中构build.NET Core项目

我想用gitlab-ci自动化我的部署过程。 我现在通过ssh手动完成。 步骤是:

build立:

  • dotnet恢复
  • dotnet发布

这使我的目录充满了.dll。 我想将这些部署到一个docker容器,所以我运行:

  • dockerbuild设
  • docker停止
  • docker工人
  • docker运行

但是,我很难find正确的方式来做在相同的.gitlab.ci.yml文件。

我需要来自microsoft/dotnet:latest的dotnet工具microsoft/dotnet:latest的docker cli工具。

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

我在网上找不到任何这样的例子,所以我想知道我是否正在做一些不该做的事情。

不太清楚为什么你要在你的构buildpipe道中做docker run ,也不知道为什么artifact不能工作。 我们正在做这个确切的事情与artifactdependencies阶段。

为了适应您的需求,必须自定义构build图像是非常正常的。 对于你的构build图像,你似乎需要dockerdotnet一起。 创build一个您将用作构build映像的Dockerfile ,并让它从microsoft/dotnetinheritance。 然后在该映像中安装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 

你configurationGitLab在runnerconfiguration文件中挂载/var/run/docker.sock ,然后你可以在你的gitlab-ci.yml使用新的图像。