docker - Gitlab在docker镜像中运行阶段
问题描述
我是 GitLab 的新手,我正在尝试设置 CI 管道,我想从 docker 映像内部运行和 terraform 脚本,以确保我已经安装和构建了所有必要的基础映像。
目前,我对官方文档进行了一些调查的 CI 管道看起来像这样:
stages:
- terraform:check
.base-terraform:
image:
name: "hashicorp/terraform"
entrypoint: [""]
before_script:
- export GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS}
- terraform version
tf-fmt:
stage: terraform:check
extends: .base-terraform
script:
- make fmt
needs: []
使用上面的 YAML 文件,它下载了我不想要的最新版本的 Terraform(>=0.15),而且我需要其他依赖项,比如make
etc 等等。所以我在想是否有任何方法可以构建我自己的自定义图像使用它分阶段扩展,以便所有必要的依赖项都可用于 CI/CD 运行。
我的 DockerFile 看起来像:
FROM python:3.7-slim
RUN apt-get update && apt-get install -y curl git-core curl build-essential openssl libssl-dev unzip wget
RUN wget -O terraform.zip https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip && \
unzip terraform.zip && \
mv terraform /usr/local/bin/
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl && \
chmod +x ./kubectl && \
mv ./kubectl /usr/local/bin/kubectl
WORKDIR /src
COPY . .
我在思考正确的方向吗?或者在 gitlab 中有更简单的方法吗?我用 buildkite 完成了这样的任务,因为我在过去的经验中使用 buildkite 作为我的 CI 工具。
解决方案
推荐阅读
- java - 如何修复“无法解析方法 setText(java.lang.String)”错误?
- machine-learning - 什么被公认为 2018 年最好的图像分类神经网络?
- javascript - 通往另一个组件的门户
- flutter - FlareActor 在 Flutter 小部件中显示时获取/设置 .flr 动画的持续时间
- r - 如何在R中按计数排除行
- antlr - ANTLR:构建 AST 树时排除(跳过)标记
- php - 尝试从查询中获取结果作为 PHP 中的 PDO 对象
- excel - 如何使用 PowerShell 仅更改 Excel 中的空单元格
- css - 使用选择器的 LESS 嵌套
- ios - iOS - 如何始终在午夜获取日期?