如何在bitbucket-pipelines.yml中为步骤的YAML锚点传递参数
原生YAML锚点本身不支持直接传递参数,但你可以结合Bitbucket Pipelines的步骤变量特性 + YAML合并语法实现需求,最终配置写法非常接近你预期的效果,不需要再重复编写after-script逻辑,可直接运行的配置如下:
definitions: steps: - step: &node-build name: Build React app image: node:lts-alpine script: - npm install --no-optional - npm run build artifacts: - build/** - step: &aws-ecr-s3 name: AWS S3 deployment image: amazon/aws-cli script: - aws configure set aws_access_key_id "${AWS_KEY}" - aws configure set aws_secret_access_key "${AWS_SECRET}" - aws s3 cp ./build s3://${S3_BUCKET} --recursive pipelines: branches: master: - step: *node-build - step: <<: *aws-ecr-s3 variables: S3_BUCKET: "my-app-site-dev" staging: - step: *node-build - step: <<: *aws-ecr-s3 variables: S3_BUCKET: "my-app-site-uat"
实现逻辑说明:
- 所有需要动态传入的参数都可以提前在可复用步骤的script中用变量占位,不需要提前在项目的仓库变量中定义这些参数
- 调用锚点时只需要通过
variables字段给对应变量赋值即可,其余配置会完全继承锚点的定义,不需要重复编写逻辑 - 如果后续需要新增动态参数,只需要在variables中新增键值对即可,扩展性强
内容的提问来源于stack exchange,提问作者LuisEnMarroquin
相关产品推荐
相关产品推荐

