如何在 BitBucket Pipeline 中创建动态变量

gri*_*gon 1 bitbucket bitbucket-pipelines

有没有办法在管道的脚本中创建变量?看起来应该是可能的,但我还没有找到任何文档。我不断被重定向回 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
Run Code Online (Sandbox Code Playgroud)

我基于此示例,但我正在努力解决示例中的变量。

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

        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
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

bash: IMAGE: command not found
Run Code Online (Sandbox Code Playgroud)

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

有办法实现这一点吗?

dar*_*dee 6

正如错误所示,它们只是 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
Run Code Online (Sandbox Code Playgroud)