我想使用gitlab-ci自动化我的部署过程。我现在通过ssh手动执行此操作。步骤是:
构建
这给我留下了一个充满.dlls的目录。我想将它们部署到docker容器中,所以我运行:
但是,我很难找到在同一.gitlab.ci.yml
文件中执行这两种操作的正确方法。
我需要来自microsoft/dotnet:latest
的dotnet工具和来自docker:latest
的docker cli工具。
我尝试了基于这些图像的两个阶段,但输出不是共享的。为了解决这个问题,我尝试使用artifact
,但无法上传。
我无法在网上找到任何这样的例子,所以我想知道我是否做了一些不应该做的事情。
答案 0 :(得分:1)
不完全确定您为什么在构建管道中执行docker run
,以及为什么artifact
不起作用。我们正在使用artifact
和dependencies
。
无论如何,必须自定义构建映像才能满足您的需求。对于您的构建图像,您似乎需要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
中使用新图像。