gpt4 book ai didi

docker - 无法使用 “only/except : changes”创建CI管道

转载 作者:行者123 更新时间:2023-12-02 18:35:02 24 4
gpt4 key购买 nike

我有以下git repo结构:

.
├── docker
│   ├── Dockerfile
│   └── requirements.txt
└── software
├── app
│   └── app.py
└── Dockerfile
docker文件夹负责创建将由我的应用程序使用的docker镜像。

然后,如果我更改 docker文件夹下的某些文件,我想重新创建 base image,然后使用最后创建的 app image创建新的 base image

但是,如果仅更改我的应用程序,则在 software文件夹下,我只想触发该应用程序镜像的阶段。

在我的 .gitlab-ci.yml文件下面:
image: docker:latest

services:
- docker:dind

stages:
- buildDockerImage
- buildAppImage

build docker image:
stage: buildDockerImage
script:
- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
- docker build --target final --build-arg docker_image_version=$CI_COMMIT_SHORT_SHA -t $DOCKER_IMAGE_NAME docker
- docker tag $DOCKER_IMAGE_NAME $CI_REGISTRY/xx/$APP_IMAGE_NAME:base
- docker push $CI_REGISTRY/xx/$APP_IMAGE_NAME
only:
changes:
- docker/**/*

build app image:
stage: buildAppImage
script:
- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
- docker build --build-arg app_image_version=$CI_COMMIT_SHORT_SHA -t $APP_IMAGE_NAME software
- docker tag $APP_IMAGE_NAME $CI_REGISTRY/xx/$APP_IMAGE_NAME:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY/xx/$APP_IMAGE_NAME
except:
changes:
- docker/**/*
only / except : changes可以很好地识别更改的位置,但是如果我更改 docker文件夹,则不会在两个阶段都创建管道。它仅创建 buildDockerImage

如果删除 only / except : changes配置,则管道将按预期工作。

有可能实现我的需求吗?我的意思是,如果只更改应用程序,则不想运行 buildDockerImage,但是如果确实更改了 base image,则需要在管道中同时运行 buildDockerImagebuildAppImage

最佳答案

因此,如果我正确理解,您想:

  • 仅当buildDockerImage位置更改时才构建docker/**/*,因此此阶段的当前Yaml很好。
  • 构建buildAppImage
  • 总是,只是buildAppImage阶段
  • 除去除外条款
  • 仅适用于对docker位置的更改,请替换为仅和2个位置:

  •       only:
    changes:
    - docker/**/*
    - software/**/*

    关于docker - 无法使用 “only/except : changes”创建CI管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60714294/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com