Dynamically set job inputs #24
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Merge group tests | ||
on: | ||
merge_group: | ||
pull_request: | ||
jobs: | ||
changes: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
jobs: ${{ steps.set-jobs.outputs.jobs }} | ||
steps: | ||
- id: set-jobs | ||
run: | | ||
echo 'jobs=["changes","test-ref-merge","test-ref-matrix"]' >> "$GITHUB_OUTPUT" | ||
test-ref-merge: | ||
runs-on: ubuntu-latest | ||
if: github.event_name == 'merge_group' | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Print branch names | ||
run: | | ||
echo "Head ref: ${{ github.event.merge_group.head_ref }}" | ||
echo "Base ref: ${{ github.event.merge_group.base_ref }}" | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.merge_group.base_ref }} | ||
test-ref-pr: | ||
runs-on: ubuntu-latest | ||
if: github.event_name == 'pull_request' | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Print branch name | ||
run: | | ||
echo "Base ref: ${{ github.base_ref }}" | ||
check-job-results: | ||
if: always() | ||
needs: fromJSON(jobs.changes.outputs.jobs) | ||
Check failure on line 41 in .github/workflows/test.yml
|
||
runs-on: ubuntu-latest | ||
steps: | ||
# - name: Check job results | ||
# id: check-results | ||
# run: | | ||
# # Convert JSON array to Bash array | ||
# mapfile -t job_names < <(echo '${{ fromJson(needs.changes.outputs.jobs) }}') | ||
# | ||
# # Create associative array of job results | ||
# declare -A job_results | ||
# for job in "${job_names[@]}"; do | ||
# job_results["$job"]=$(eval echo "\${{ needs.changes.${job}.result }}") | ||
# done | ||
# | ||
# # Iterate through jobs and get their results | ||
# failed_count=0 | ||
# for job in "${!job_results[@]}"; do | ||
# RESULT=${job_results[$job]} | ||
# if [[ "$RESULT" == "failure" ]]; then | ||
# failed_count=$((failed_count + 1)) | ||
# fi | ||
# echo "$job result: $RESULT" | ||
# done | ||
# | ||
# if [ "$failed_count" -gt 0 ]; then | ||
# echo "Some jobs failed" | ||
# echo "result=failure" | tee -a $GITHUB_OUTPUT | ||
# else | ||
# echo "All jobs succeeded or were skipped" | ||
# echo "result=success" | tee -a $GITHUB_OUTPUT | ||
# fi | ||
- name: Error on job failure | ||
run: | | ||
if [[ "${{ steps.check-results.outputs.result }}" == "failure" ]]; then | ||
exit 1 | ||
fi |