gitlab - 如何使用不同的 docker 镜像在每个阶段运行脚本?
问题描述
从 .gitlab-ci.yml 开始,如下所示:
image: docker:latest
services:
- docker:dind
stages:
- stage1
- stage2
doStage1:
stage: stage1
script:
- docker build -t <container> .
- docker push <container>
only:
- master
doStage2:
stage: stage2
image: alpine:latest
script:
script:
- cat /etc/os-release
only:
- master
我原以为 stage2 是在 alpine docker 映像上运行的,但事实并非如此,cat 命令的输出向我显示:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
这是gitlab runner os,我在这里误解了什么?来自 gitlab ci docs 说我们可以在每个阶段使用不同的 docker 图像
解决方案
如果有人对这个问题感兴趣,最后我弄清楚发生了什么。gitlab 运行器配置了shell执行器而不是docker执行器,因为它无法处理 image: 属性。
我用 docker executor 配置了另一个运行器,一切都按预期工作。
推荐阅读
- python - 将空格分隔的字符串附加到列表
- c++ - 智能指针的 C++17 和模板参数推导
- python - 在一定长度后将 Python dict 输出中断到新行
- javascript - React Native:道具更改导致触摸事件取消
- python - 在 TensorFlow 中实现 UNet
- c# - 计算平均值并显示输入和计算结果的程序
- git - 我是否应该始终排除 git LFS 文件的文本属性?
- c# - 关闭 TcpClient 后如何避免 ObjectDisposed 异常
- android - 调试应用程序后,Gradle 任务 assembleDebug 失败,退出代码为 1
- mysql - 按真假属性 1-N 关系过滤