Gitlab Docker映像脚本-如果条件不起作用

sd2nnvve  于 2023-03-07  发布在  Docker
关注(0)|答案(2)|浏览(141)

使用python image和if条件编写了下面的gitlab管道。

.chk-bracket:
  image: "python:3.7"
  before_script:
    - apt update
    - apt install jq -y 
    - pip install awscli
    
  script:
    - echo $CI_COMMIT_MESSAGE
    - |
      if [[ $CI_COMMIT_MESSAGE = *"_test"* ]]; then
        echo "testing"
      fi
  rules:
    - if: $CI_COMMIT_BRANCH =~ /^develop/ && $CI_COMMIT_MESSAGE =~ /.*build_test.*/

后来我们用docker image代替python image进行了重构,if条件开始失败,它没有打印测试,当然我在原来复杂的gitlab管道代码中简化了if条件

.chk-bracket:
  image: "docker:stable"
  before_script:
    - apk update
    - apk add py-pip jq bash
    - pip install awscli
  script:
    - echo $CI_COMMIT_MESSAGE
    - |
      if [[ $CI_COMMIT_MESSAGE = *"_test"* ]]; then
        echo "testing"
      fi
  rules:
    - if: $CI_COMMIT_BRANCH =~ /^develop/ && $CI_COMMIT_MESSAGE =~ /.*build_test.*/

有什么线索说明为什么这种情况在docker图像中不起作用吗?

czfnxgou

czfnxgou1#

这是因为python:3.7使用debian作为它的基础映像,而docker:stable使用alpine作为它的基础映像,Alpine使用ash作为默认shell而不是bash。

if [ -z "${CI_COMMIT_TAG##*"dev"*}" ]; then
          echo "Building dev Image..."
          docker build --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG . --build-arg VERSION=$CI_COMMIT_TAG
        fi
xe55xuns

xe55xuns2#

正如@antoniomerlin所描绘的,dind的图像是阿尔卑斯山。
There is a ubuntu-dind version,也许还有更多...
在alpine中安装aws cli(v2)是一个真实的的痛苦,there is already a detailed answer how to do that

相关问题