如何依据@actions/upload-artifact@v2运行或跳过状态触发后续操作
问题原因
你的配置存在两个核心问题导致后续步骤无法触发:
- GitHub Actions 中所有步骤默认自带
if: success()隐式条件,只有当前面所有步骤都执行成功时才会运行当前步骤。如果你的yarn test执行失败触发了制品上传步骤,后续两个 echo 步骤会因为前置步骤存在失败状态直接被跳过,不会执行你写的条件判断。 - 步骤被跳过后的
conclusion字段值为skipped而不是skip,拼写错误导致条件永远无法匹配。
修正方案
给后续两个步骤加上 always() 修饰符,强制无论前置步骤成败都执行条件判断,同时修正状态值拼写即可:
jobs: test: runs-on: ubuntu-20.04 container: buildkite/puppeteer steps: - uses: actions/checkout@v2 - run: yarn test - name: artifacts uses: actions/upload-artifact@v2 id: archive if: failure() # Only upload if the build failed with: name: diff path: __diff_output__ - name: run if nothing was archived if: always() && steps.archive.conclusion == 'skipped' run: echo not archived - name: run if something was archived if: always() && steps.archive.conclusion == 'success' run: echo archived
如果你担心前面步骤出现被取消的状态也触发执行,可以把 always() 替换为 !cancelled(),这样手动取消工作流时不会执行这两个步骤。
内容的提问来源于stack exchange,提问作者Fez Vrasta
相关产品推荐
相关产品推荐

