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

Using gitlab-ci to build .NET Core projects in docker

我想使用 gitlab-ci 自动化我的部署过程。我目前正在通过 ssh 手动执行此操作。步骤是:

建造:

这给我留下了一个充满 .dll 的目录。我想将它们部署到 docker 容器中,所以我 运行:

但是,我很难找到在同一个 .gitlab.ci.yml 文件中执行这两项操作的正确方法。

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

我尝试根据这些图像中的每一个设置两个阶段,但未共享输出。为了解决这个问题,我尝试使用 artifact,但上传失败。

我在网上找不到这样的例子,所以我想我是不是在做一些不应该做的事情。

不太清楚为什么要在构建管道中执行 docker run,也不太清楚为什么 artifact 不起作用。我们正在使用 artifactdependencies.

分阶段进行这件事

无论如何,必须自定义构建映像以满足您的需求是很正常的。对于您的构建映像,您似乎需要 dockerdotnet。创建一个将用作构建映像的 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

你在运行ner配置文件中配置GitLab挂载/var/run/docker.sock,然后你就可以在你的gitlab-ci.yml.

中使用新镜像了