Bitbucket 管道 - 分配自定义变量

Bitbucket pipeline - assign custom variables

我想使用 bash 命令分配自定义变量

image: alpine

pipelines:
  default:
      - step:
          name: docker-login
          services:
            - docker
          script:
            - docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
            - echo "logged in to docker hub"
            - echo $VERSION
          variables:
            VERSION: cat ./version.txt
      - step: 
          name: build-image
          services:
            - docker
          script:
            - echo "running docker image test"
      - step:
          name: 'set ssh env'
          script:
            - pipe: atlassian/ssh-run:0.4.0
              variables:
                SSH_USER: $SSH_USER
                SERVER: '$HOST'
                COMMAND: 'pwd'

我没有得到文件的输出。正确的语法是什么?

“在 bitbucket-pipelines.yml 中设置环境变量”目前是一个开放的建议,收集对 Bitbucket Cloud 的兴趣:BCLOUD-17453

如果您的 运行 步骤所在的基础映像不支持在外部设置环境变量。你不能创建这样的变量。例如,您的管道图像 atlassian/ssh-run:0.4.0 设置了这些环境变量,因此您可以定义。但是 docker-login 步骤将使用 image: alpine 作为其基础,并且此基础映像没有设置要配置的环境变量。 Bitbucket 中有三种类型的变量(工作区变量、存储库变量和部署变量。)none 满足您在此用例中的需要。因为所有这些变量类型都是静态的并且工作方式为 key/value.

我们可以试试下面的其他方法;

image: alpine

pipelines:
  default:
      - step:
          name: docker-login
          services:
            - docker
          script:
            - docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
            - echo "logged in to docker hub"
            - export VERSION=$(cat ./version.txt)
            - echo $VERSION

使用 linux 命令创建变量在这里会有帮助。另外,请记住,这些类型的变量(在本例中为 $VERSION 变量)只会在其步骤中被识别。如果你想携带到其他步骤,你应该使用工件。