Reapply "Run on pull requests only again" #517
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: Dev build and test | |
on: | |
push: | |
branches: | |
- '*' # matches every branch that doesn't contain a '/' | |
- '*/*' # matches every branch containing a single '/' | |
- '**' # matches every branch | |
- '!master' # excludes master | |
concurrency: | |
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-trigger_dev | |
cancel-in-progress: true | |
jobs: | |
# This job checks if the current commit is part of a pull request | |
# The output is then used to determine if the subsequent jobs should run (see the `if` in `setup-build-variables`) | |
# This is needed as github actions does not allow to run on every push except on pull request pushes | |
# general concept taken from: https://github.com/orgs/community/discussions/27071#discussioncomment-4943026 | |
get-pr-number: | |
name: π Get PR number if present | |
runs-on: ubuntu-latest | |
# Map a step output to a job output | |
outputs: | |
pr-number: ${{ steps.get-pr-number.outputs.pr-number }} | |
steps: | |
- uses: actions/github-script@v7 | |
id: get_issue_number | |
with: | |
script: | | |
if (context.issue.number) { | |
// Return issue number if present | |
return context.issue.number; | |
} else { | |
// Otherwise return issue number from commit | |
const data = ( | |
await github.rest.repos.listPullRequestsAssociatedWithCommit({ | |
commit_sha: context.sha, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
}) | |
).data[0]; | |
if (data) { | |
return data.number; | |
} else { | |
return ''; | |
} | |
} | |
result-encoding: string | |
- id: get-pr-number | |
run: | | |
echo "Got PR number: ${{steps.get_issue_number.outputs.result}}" | |
echo "pr-number=${{steps.get_issue_number.outputs.result}}" >> "$GITHUB_OUTPUT" | |
setup-build-variables: | |
needs: | |
- get-pr-number | |
# we only want to run this if we're not in a pull request. | |
# all subsequent jobs in this workflow depend on this one. So if we don't execute it, they won't be executed either | |
if: ${{ needs.get-pr-number.outputs['pr-number'] == '' }} | |
name: π οΈ Setup build variables | |
runs-on: ubuntu-latest | |
steps: | |
- run: | | |
echo "Setup done" | |
outputs: # defined here explicitly, so it only needs to be defined here. All other workflows can just reference it | |
godot-kotlin-jvm-version: "0.11.0-4.3" | |
godot-version: "4.3-stable" | |
build-version: "0.11.0" | |
jvm-version: "17" | |
build-jvm: | |
name: β Build Jvm | |
uses: ./.github/workflows/build_jvm.yml | |
needs: | |
- setup-build-variables | |
with: | |
godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} | |
jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} | |
secrets: inherit | |
build-linux: | |
name: π§ Build Linux | |
uses: ./.github/workflows/build_linux.yml | |
needs: | |
- setup-build-variables | |
with: | |
godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} | |
secrets: inherit | |
test-linux: | |
name: π§ Test Linux | |
uses: ./.github/workflows/test_linux.yml | |
needs: | |
- setup-build-variables | |
- build-jvm | |
- build-linux | |
with: | |
godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} | |
jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} | |
secrets: inherit | |
test-linux-exports: | |
name: π§ Test Linux Exports | |
uses: ./.github/workflows/test_linux_exports.yml | |
needs: | |
- setup-build-variables | |
- build-jvm | |
- build-linux | |
with: | |
godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} | |
jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} | |
build-version: ${{ needs.setup-build-variables.outputs['build-version'] }} | |
secrets: inherit |