diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 187dc914cc03b6eedff5c2bc249779fea3d0cdf0..17be43fd6361be5ab3039e07878057fccfa07e57 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -6,12 +6,27 @@ on: - "master" pull_request: types: [synchronize, labeled, unlabeled] + workflow_run: + workflows: [External Trigger Filter] + types: [completed] concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} cancel-in-progress: true jobs: + external-filter: + if: github.event.pull_request.head.repo.full_name == github.repository || github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-22.04 + timeout-minutes: 3 + steps: + - run: | + if ${{ github.event.pull_request.head.repo.full_name == github.repository }}; then + echo 'Running Chromatic workflow within the organization.' + elif ${{ github.event.workflow_run.conclusion == 'success' }}; then + echo "Running Chromatic workflow for the external contributor. Thank you!" + fi + files-changed: name: Check which files changed runs-on: ubuntu-22.04 @@ -29,8 +44,10 @@ jobs: filters: .github/file-paths.yaml fe-chromatic: - needs: files-changed - if: contains(github.event.pull_request.labels.*.name, 'chromatic') || (github.ref_name == 'master' && needs.files-changed.outputs.frontend_all == 'true') + needs: [files-changed, external-filter] + if: | + (needs.external-filter.result == 'success' && contains(github.event.pull_request.labels.*.name, 'chromatic')) || + (github.ref_name == 'master' && needs.files-changed.outputs.frontend_all == 'true') runs-on: ubuntu-22.04 steps: - name: Checkout repository