Bitbucket 管道:无法在自定义管道中执行多个可重用步骤

问题描述 投票:0回答:1

我遇到一个问题,无法在 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 中正确配置多个可重用步骤的任何见解或示例。

yaml bitbucket pipeline bitbucket-pipelines
1个回答
0
投票

我假设您只想共享脚本,同时保留完整的步骤定义?这就是我在管道中进行设置的方式,这使得脚本步骤在单个块中运行。这不会留下最漂亮的跑步效果,但由于到目前为止它对我有用,而且几乎从未失败,所以这是可以接受的。

基本上只需单独定义脚本块,然后将它们放置在您定义的步骤中即可。然后,您可以在自定义组合中重复使用和组合脚本定义。

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
© www.soinside.com 2019 - 2024. All rights reserved.