1. ホーム
  2. github

[解決済み] github-actionsのステップで、前のステップが失敗しても、ジョブを失敗させたまま実行する方法

2023-01-13 05:34:29

質問内容

Githubにある例に従って、githubアクションで自分のビルドをテストし、テスト結果を圧縮してアーティファクトとしてアップロードしようとしています。 https://help.github.com/en/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts#uploading-build-and-test-artifacts

しかし、テストが失敗したときにどうすればいいか困っています。これは私のアクションです。私のテストが合格すると、すべてがうまくいき、私の結果は zip され、アーティファクトとしてエクスポートされますが、私のテストが失敗すると、ジョブの残りのステップが停止するため、私の結果は決して公開されません。



continue-on-error: true を追加してみました。 https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error

これは、それが失敗した後に続行し、私のテスト結果をアップロードします。しかし、私のテストステップが失敗したにもかかわらず、ジョブが合格とマークされています。ステップが失敗しても、ジョブ全体を失敗とマークしながら、私のアーティファクトをアップロードさせる何らかの方法があるでしょうか?

name: CI
on:
  pull_request:
    branches:
    - master
  push:
    branches:
      - master

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1    
    - name: Test App
      run: ./gradlew test

    - name: Archive Rest Results
      uses: actions/upload-artifact@v1
      with:
        name: test-results
        path: app/build/reports/tests

どのように解決するのですか?

を追加することができます。

if: always()

をステップに追加すると、前のステップが失敗しても実行されるようになります。 https://help.github.com/en/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#job-status-check-functions

ということで、1つのステップの場合は以下のようになります。

steps:
- name: Build App
  run: ./build.sh

- name: Archive Test Results
  if: always()
  uses: actions/upload-artifact@v1
  with:
    name: test-results
    path: app/build

または、ジョブに追加することもできます。

jobs:
job1:
  job2:
    needs: job1
  job3:
    if: always()
    needs: [job1, job2]