Lea*_*oob 7 python gitlab gitlab-ci kaniko
从 gitlab 文档中可以看出如何使用 kaniko 创建 docker 镜像:
build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
only:
- tags
Run Code Online (Sandbox Code Playgroud)
但我想先运行测试(pytest),然后再将其推送到容器注册表。任何帮助是极大的赞赏。谢谢!
我假设您想在正在为其构建映像的 Docker 容器内运行测试。
到目前为止我想出的最好的解决方案是
Dockerfiletest-image工作中,运行 Kaniko 而无需在最后推送映像(这将在映像构建期间运行您的测试)build-image,运行 Kaniko 并推送图像,并使用--target指令指定要推送的图像的阶段/层这是一个例子:
.gitlab-ci.yml
build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- >-
echo "{\"auths...}" > /kaniko/.docker/config.json
script:
- >-
/kaniko/executor
--context $KANIKO_BUILD_CONTEXT
--dockerfile $DOCKERFILE_PATH
--destination $IMAGE_TAG
--target image
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM ubuntu as image
RUN apt update -y && \
apt upgrade -y
RUN apt install -y git
FROM devimage as test
# smoke test to see whether git was installed as expected
RUN git --version
# you can add further tests here...
Run Code Online (Sandbox Code Playgroud)
这将在 Docker 构建的第二阶段运行测试。您还可以在此处安装测试框架和其他仅供测试的资源,这些资源不应放入推送到容器注册表的映像中。
如果测试失败,Kaniko 不会推送图像。
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |