【问题标题】:How to create a dynamic variable in BitBucket Pipeline如何在 BitBucket Pipeline 中创建动态变量
【发布时间】:2021-01-21 20:46:44
【问题描述】:

有没有办法在管道中的脚本中创建变量?似乎应该是可能的,但是我找不到任何文档。我不断被重定向回 BitBucket 的部署或存储库变量。

我有这个工作正常的管道:

image: amazon/aws-cli
definitions:
  steps:
    - step: &buildImage
        name: Build Docker Image
        services:
          - docker
        script:
          - aws configure set aws_access_key_id "${AWS_KEY}"
          - aws configure set aws_secret_access_key "${AWS_SECRET}"
          - aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 12345.dkr.ecr.us-east-1.amazonaws.com
          - docker build -t 12345.dkr.ecr.us-east-1.amazonaws.com/myProject:latest .
          - docker push 12345.dkr.ecr.us-east-1.amazonaws.com/myProject:latest

pipelines:
  default:
    - step: *buildImage

我基于this example,但我正在努力处理示例中的变量。

当我像这样修改脚本部分时:

        script:
          - IMAGE = "12345.dkr.ecr.us-east-1.amazonaws.com/myProject"
          - TAG = "latest"
          - aws configure set aws_access_key_id "${AWS_KEY}"
          - aws configure set aws_secret_access_key "${AWS_SECRET}"
          - aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 12345.dkr.ecr.us-east-1.amazonaws.com
          - docker build -t $IMAGE:$TAG .
          - docker push $IMAGE:$TAG

我收到此错误

bash: IMAGE: command not found

我一直在寻找一种方法来创建这样的变量,但我所能找到的只是存储库或部署变量。这些似乎不是我需要的,因为我想在运行时定义值。

有没有办法做到这一点?

【问题讨论】:

    标签: bitbucket bitbucket-pipelines


    【解决方案1】:

    正如错误提示的那样,它们只是 bash 变量。如果您从变量声明行中删除空格,那应该可以工作。

    script:
      - IMAGE="12345.dkr.ecr.us-east-1.amazonaws.com/myProject"
      - TAG="latest"
      - aws configure set aws_access_key_id "${AWS_KEY}"
      - aws configure set aws_secret_access_key "${AWS_SECRET}"
      - aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 12345.dkr.ecr.us-east-1.amazonaws.com
      - docker build -t $IMAGE:$TAG .
      - docker push $IMAGE:$TAG
    

    【讨论】:

    • 是的,这就是答案。 Bash 不适用于变量与等号和值之间的空格。 TAG="latest" 是正确的,但 TAG = "latest" 尝试使用 TAG 作为命令。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2017-07-30
    • 2011-02-23
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多