4444 base : main
4545 filters : |
4646 src:
47+ - 'bindings/**'
4748 - 'src/**'
4849 - 'crates/**'
4950 - 'examples/**'
7576 jq -c . matrix.json > matrix-one-line.json
7677 echo "matrix=$(cat matrix-one-line.json)" >> $GITHUB_OUTPUT
7778
79+ check-is-fork :
80+ runs-on : ubuntu-latest
81+ outputs :
82+ is_fork : ${{ steps.check-fork.outputs.is_fork }}
83+ steps :
84+ - name : Check if fork
85+ id : check-fork
86+ run : |
87+ if [ "${{ github.event_name }}" == "pull_request" && "${{ github.repository }}" != "${{ github.event.pull_request.head.repo.full_name }}" ]; then
88+ echo "This is a forked repository."
89+ echo "is_fork=true" >> $GITHUB_OUTPUT
90+ else
91+ echo "This is not a forked repository."
92+ echo "is_fork=false" >> $GITHUB_OUTPUT
93+ fi
7894 check :
79- needs : [check-needs-run, generate-job-matrix]
95+ needs : [check-needs-run, generate-job-matrix, check-is-fork ]
8096 permissions :
8197 pull-requests : write
8298 contents : write
@@ -103,49 +119,57 @@ jobs:
103119 # # run: |
104120 # # sudo rm -rf /usr/share/dotnet; sudo rm -rf /opt/ghc; sudo rm -rf "/usr/local/share/boost"; sudo rm -rf "$AGENT_TOOLSDIRECTORY"
105121 - name : Checkout
106- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' }}
122+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') }}
107123 uses : actions/checkout@v4
108124 - uses : actions-rs/toolchain@v1
109- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' }}
125+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') }}
110126 with :
111127 toolchain : stable
112- override : true
128+ override : false
129+ - name : Print versions
130+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') }}
131+ run : |
132+ echo "Rust version: $(rustc --version)"
133+ echo "Clippy version: $(cargo clippy --version)"
134+ echo "Active toolchain: $(rustup show active-toolchain)"
135+ continue-on-error : true
136+
113137 - name : Rust Cache
114- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' }}
138+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') }}
115139116140 with :
117141 # reasoning: we want to cache xtask, most of the jobs in the matrix will be sped up a good bit thanks to that
118142 save-if : ${{ github.ref == 'refs/heads/main' }}
119143 cache-all-crates : true
120144
121145 - name : Setup
122- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' }}
146+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') }}
123147 run : |
124148 cargo xtask init
125149
126150 - name : Setup GPU Drivers
127- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && matrix.run_args.requires_gpu }}
151+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') && matrix.run_args.requires_gpu }}
128152 run : |
129153 sudo add-apt-repository ppa:kisak/turtle -y
130154 sudo apt-get install --no-install-recommends libxkbcommon-x11-0 xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
131155 - name : Check
132- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && !matrix.run_args.requires_gpu }}
156+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') && !matrix.run_args.requires_gpu }}
133157 run : |
134158 ${{ matrix.run_args.command }}
135159 - name : Check With virtual X11 server
136- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && matrix.run_args.requires_gpu }}
160+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') && matrix.run_args.requires_gpu }}
137161 run : |
138162 xvfb-run ${{ matrix.run_args.command }}
139163
140164 - name : Upload coverage artifact
141- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && matrix.run_args.generates_coverage }}
165+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') && matrix.run_args.generates_coverage }}
142166 uses : actions/upload-artifact@v4
143167 with :
144168 name : code-coverage-report
145169 path : target/coverage/html/
146170
147171 - name : Update coverage badge
148- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && matrix.run_args.generates_coverage }}
172+ if : ${{ needs.check-needs-run.outputs.any-changes == 'true' && (matrix.run_args.run_on_forks || needs.check-is-fork.outputs.is_fork != 'true') && matrix.run_args.generates_coverage }}
149173 continue-on-error : true
150174 run : |
151175 git checkout -b chore/_update-coverage-badge || git checkout chore/_update-coverage-badge
@@ -164,43 +188,18 @@ jobs:
164188 PRNUMBER=$(cat pr_number.txt)
165189 gh pr merge $PRNUMBER --squash
166190 fi
167- generate_bindings :
168- name : Bindings - Synchronise
169- permissions :
170- contents : write
171- pull-requests : write
191+
192+ rollup-check :
193+ name : Required Checks Successful
194+ needs : [check]
172195 runs-on : ubuntu-latest
196+ if : ${{ always() }}
173197 steps :
174- - name : Checkout
175- uses : actions/checkout@v4
176- with :
177- ref : ${{ github.head_ref || github.ref_name }}
178- - name : Rust Cache
179- if : ${{ needs.check-needs-run.outputs.any-changes == 'true' }}
180- 181- with :
182- # reasoning: we want to cache xtask, most of the jobs in the matrix will be sped up a good bit thanks to that
183- save-if : ${{ github.ref == 'refs/heads/main' }}
184- cache-all-crates : true
185- - name : Setup Bot GitHub Credentials
186- run : |
187- git config user.name "github-actions[bot]"
188- git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
189- - name : Setup
190- run : |
191- cargo xtask init
192- - name : Generate Bindings
193- run : |
194- cargo xtask codegen
195- - name : Check for changes
196- id : check_changes
197- run : |
198- if [[ -n $(git status --porcelain) ]]; then
199- echo "changes=true" >> "$GITHUB_OUTPUT";
200- fi
201- - name : Commit Changes
202- if : steps.check_changes.outputs.changes
203- run : |
204- git add -A
205- git commit -m "chore(codegen): update bevy bindings"
206- git push
198+ - name : Check if all jobs succeeded
199+ run : |
200+ if [[ "${{ needs.check.result }}" != "success" ]]; then
201+ echo "One or more checks failed. See detailed job results above."
202+ exit 1
203+ else
204+ echo "All checks passed successfully!"
205+ fi
0 commit comments