我遇到一个问题,无法在 Bitbucket 的自定义管道中顺序执行多个可重用步骤。我的目标是设置 AWS 凭证,然后部署 Go 应用程序,但管道仅在执行第一步后就停止了。
这是我的管道配置的简化版本以及我尝试过的不同方法:
管道配置:
image: golang:1.22
definitions:
steps:
- step: &setup-aws-credentials
name: Setup AWS Credentials
oidc: true
script:
- apt-get update && apt-get install -y curl unzip
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- unzip awscliv2.zip
- ./aws/install
- aws --version
# Additional commands for AWS CLI setup...
- step: &manual-deploy-script
name: Manual Deploy to Dev
script:
- # Script for deployment...
pipelines:
custom:
Deploy:
- step:
<<: *setup-aws-credentials
<<: *manual-deploy-script
尝试 1:使用 YAML 合并 <<: to include both steps under a single - step.
此方法仅运行 setup-aws-credentials 步骤,而不会执行 manual-deploy-script。没有具体的错误信息;管道根本不会继续执行第一个脚本。
尝试 2:在单步序列中组合脚本。
pipelines:
custom:
Deploy:
- step:
name: Deploy to Development
script:
- *setup-aws-credentials
- *manual-deploy-script
此修改会导致 YAML 解析错误,因为语法不支持在脚本数组中直接包含锚点。
您的 bitbucket-pipelines.yml 中的 [pipelines > 有错误 自定义 > 部署 > 0 > 步骤 > 脚本 > 0]。命令缺失或为空 细绳。此列表中的每个项目都应该是单个命令 定义管道调用的字符串或映射。
问题:
如何正确构建 Bitbucket 管道以在触发时按顺序执行 AWS 凭证设置和应用程序部署脚本?我正在寻找一种方法来重用这些步骤,而无需复制脚本内容。
我很感激有关如何在 Bitbucket Pipelines 中正确配置多个可重用步骤的任何见解或示例。
我假设您只想共享脚本,同时保留完整的步骤定义?这就是我在管道中进行设置的方式,这使得脚本步骤在单个块中运行。这不会留下最漂亮的跑步效果,但由于到目前为止它对我有用,而且几乎从未失败,所以这是可以接受的。
基本上只需单独定义脚本块,然后将它们放置在您定义的步骤中即可。然后,您可以在自定义组合中重复使用和组合脚本定义。
image: golang:1.22
definitions:
scripts:
- script: &aws-setup-scripts |-
apt-get update && apt-get install -y curl unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
aws --version
# Additional commands for AWS CLI setup...
- script: &same-for-these |-
# Script for deployment...
steps:
- step: &setup-aws-credentials
name: Setup AWS Credentials
oidc: true
script:
- *aws-setup-script
- step: &manual-deploy-script
name: Manual Deploy to Dev
script:
- *same-for-these
pipelines:
custom:
Deploy:
- step:
- *aws-setup-scripts
- *same-for-these