# test branch name: PR Edit Trigger on: pull_request: types: - opened - reopened - edited - labeled - unlabeled permissions: pull-requests: write contents: read jobs: check-pr-trigger: name: Check PR Trigger runs-on: ubuntu-latest outputs: require_validation: ${{ steps.check.outputs.require_validation }} file_label_change: ${{ steps.check.outputs.file_label_change }} steps: - name: Check PR Trigger id: check uses: actions/github-script@v8 with: script: | let requireValidation = true; let fileLabelChange = false; /* * If triggered by label change, ignore unrelated labels. */ const action = context.payload.action; if (action === 'labeled' || action === 'unlabeled') { const changedLabel = context.payload.label?.name; const relevantLabels = [ 'Feature', 'Bug Fix', 'Infrastructure', 'Breaking API' ]; const fileLabels = [ 'File Major', 'File Minor', ]; if (!relevantLabels.includes(changedLabel)) { core.info( `Ignoring unrelated label change: ${changedLabel}` ); requireValidation = false; } if (fileLabels.includes(changedLabel)) { core.info( `File version label change detected: ${changedLabel}` ); fileLabelChange = true; } } /* * Set workflow outputs. */ core.setOutput( 'require_validation', requireValidation.toString() ); core.setOutput( 'file_label_change', fileLabelChange.toString() ); /* * Log what will run. */ if (requireValidation) { core.info('PR type validation required.'); } else { core.info('PR type validation not required.'); } if (fileLabelChange) { core.info('File version label change detected.'); } else { core.info('No file version label change detected.'); } validate-pr-type: needs: check-pr-trigger if: ${{ needs.check-pr-trigger.outputs.require_validation == 'true' }} uses: ./.github/workflows/pr_type_validation.yaml with: pr_number: ${{ github.event.pull_request.number }} permissions: pull-requests: write contents: read milestone: needs: validate-pr-type uses: ./.github/workflows/pr_milestone.yaml with: pr_number: ${{ github.event.pull_request.number }} permissions: pull-requests: write contents: read detector-labels: needs: validate-pr-type uses: ./.github/workflows/pr_detector_labels.yaml with: pr_number: ${{ github.event.pull_request.number }} permissions: pull-requests: write issues: read file-version: needs: check-pr-trigger if: ${{ needs.check-pr-trigger.outputs.file_label_change == 'true' }} uses: ./.github/workflows/pr_file_version.yaml with: pr_number: ${{ github.event.pull_request.number }} permissions: pull-requests: write contents: read