【问题标题】:Github action optional step executionGithub action 可选步骤执行
【发布时间】:2021-02-23 22:19:51
【问题描述】:

如果上一步失败,我正在尝试执行一些选项步骤。 我需要下载旧工件以避免我的 Terraform 构建操作未检测到更改。因此,我添加了一个 diff 操作来确定构建 zip 层的 docker 文件是否已更改,如果没有更改,则应下载先前执行的旧工件。在某些情况下,最后一次执行不包含工件,例如工作的失败。在这种情况下,我想根据现有的 docker 镜像获取最新版本。 注意:代码是矩阵执行的一部分,但为简单起见,我将操作减少到问题区域。

  job_prepare:
     .....
  job_layers:
    needs: job_prepare
    runs-on: ubuntu-latest
    strategy:
      matrix: ${{fromJson(needs.job_prepare.outputs.layer_matrix)}}
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: matrix name
        run: |
          echo $GITHUB_WORKSPACE
          echo ${{ matrix.path }}
      - uses: technote-space/get-diff-action@v3
        id: git_diff
        with:
          PREFIX_FILTER: ${{ matrix.prefix }}
          SUFFIX_FILTER: Dockerfile
      - name: LayerDockerBuild
        id: layerDocker
        if: steps.git_diff.outputs.diff
        run: |
          docker build ...
          docker push ...
      - name: Layer via Artifacts
        if: (steps.git_diff.outputs.diff == false)
        uses: dawidd6/action-download-artifact@v2
        with:
          workflow: review.yml
          name: ${{ matrix.name }}
      - name: Layer via Docker
        if: steps.git_diff.outputs.diff && ${{ failure() }}
        id: layerD
        run: |
          ....
          docker pull "docker.pkg.github.com/$REPO_NAME/$IMAGE_ID:$VERSION"
          docker run --rm -v $GITHUB_WORKSPACE:/data docker.pkg.github.com/$REPO_NAME/$IMAGE_ID:$VERSION cp /packages/${{ matrix.name }}.zip /data
      - name: Upload layer zip
        if: ${{ always() }}
        uses: actions/upload-artifact@v2
        with:
          name: ${{ matrix.name }}
          path: ${{ matrix.name }}.zip

问题基本上是if: steps.git_diff.outputs.diff && ${{ failure() }}这一行的逻辑

感谢您在 diff 为 false 并且步骤 ~Layer via Artifacts~ 没有失败时如何设置步骤选项的任何提示。

【问题讨论】:

    标签: github-actions terraform-provider-aws aws-lambda-layers


    【解决方案1】:

    如果上一步不是失败,则要执行你的步骤,你可以设置 failure() 不带括号。有了if,就不需要括号了。

    if: steps.git_diff.outputs.diff && failure()
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-23
      • 2020-11-28
      • 1970-01-01
      • 2019-12-25
      • 2021-12-28
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      相关资源
      最近更新 更多