Release LITIENGINE #1047
This file contains hidden or 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: Release LITIENGINE | |
| on: | |
| push: | |
| tags: | |
| - '[0-9]+.[0-9]+.[0-9]+' | |
| workflow_dispatch: | |
| inputs: | |
| scope: | |
| type: choice | |
| description: "SCOPE: One of major, minor, or patch (defaults to minor), indicating which component of the version should be incremented. If the previous version was 1.2.3, a scope of minor would result in 1.3.0." | |
| required: true | |
| default: 'minor' | |
| options: | |
| - patch | |
| - minor | |
| - major | |
| stage: | |
| type: choice | |
| description: "STAGE: Either snapshot or final, indicating the stage of development. A snapshot is a development version, while final marks a stable release." | |
| required: true | |
| default: 'snapshot' | |
| options: | |
| - snapshot | |
| - final | |
| schedule: | |
| # Midnight every day | |
| - cron: "0 0 * * *" | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| name: Release build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| packages: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: JDK Setup | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 25 | |
| - name: Gradle Setup | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Update CITATION.cff | |
| if: inputs.stage == 'final' | |
| run: | | |
| release_date=$(date +'%Y-%m-%d') | |
| projectVersion=$(./gradlew properties -Preckon.scope=${{inputs.scope}} -Preckon.stage=${{inputs.stage}} | grep '^version:' | awk '{print $2}') | |
| echo "RELEASE_VERSION=$projectVersion" >> "$GITHUB_ENV" | |
| sed -i "s/^version: .*/version: $projectVersion/" CITATION.cff | |
| sed -i "s/^date-released: .*/date-released: '$release_date'/" CITATION.cff | |
| - name: Commit CITATION.cff | |
| if: inputs.stage == 'final' | |
| uses: EndBug/add-and-commit@v9 | |
| with: | |
| message: 'Update CITATION.cff for release ${{ env.RELEASE_VERSION }}' | |
| committer_name: GitHub Actions | |
| committer_email: [email protected] | |
| add: 'CITATION.cff' | |
| - name: Increment version | |
| run: | | |
| ./gradlew reckonTagCreate -Preckon.scope=${{inputs.scope}} -Preckon.stage=${{inputs.stage}} | |
| git push --tags | |
| - name: Publish | |
| env: | |
| ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} | |
| ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} | |
| ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.PGP_SECRET }} | |
| ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.PGP_PASSPHRASE }} | |
| run: ./gradlew publish | |
| - name: Create release notes | |
| if: inputs.stage == 'final' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| tag: ${{ github.ref_name }} | |
| run: | | |
| gh release create "$RELEASE_VERSION" \ | |
| --repo="$GITHUB_REPOSITORY" \ | |
| --title="$RELEASE_VERSION" \ | |
| --generate-notes \ | |
| --draft | |
| - name: Announce release | |
| if: inputs.stage == 'final' | |
| run: | | |
| curl -X POST "https://fosstodon.org/api/v1/statuses" \ | |
| -H "Authorization: Bearer ${{ secrets.MASTODON_ACCESS_TOKEN }}" \ | |
| -d "status=#LITIENGINE version ${{ env.RELEASE_VERSION }} has just been released! | |
| #GameDev #indiedev #videogames #IndieGameDev | |
| ${{ github.server_url }}/${{ github.repository }}/releases/tag/$RELEASE_VERSION" \ | |
| package: | |
| name: Package distribution | |
| if: inputs.stage == 'final' | |
| needs: release | |
| strategy: | |
| matrix: | |
| os: [ ubuntu-latest, macos-latest, windows-latest ] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Fetch all tags | |
| run: git pull --tags --force | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 25 | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Package | |
| shell: bash | |
| run: | | |
| projectVersion=$(./gradlew properties | grep '^version:' | awk '{print $2}') | |
| echo "RELEASE_VERSION=$projectVersion" >> "$GITHUB_ENV" | |
| ./gradlew jpackage -Prelease=true | |
| - name: Upload package | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: utiLITI-${{ runner.os }} | |
| path: utiliti/build/jpackage | |
| - name: Set up Butler | |
| if: runner.arch == 'X64' | |
| uses: jdno/setup-butler@v1 | |
| - name: Upload to itch.io | |
| if: runner.arch == 'X64' | |
| env: | |
| BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }} | |
| run: | | |
| butler push utiliti/build/jpackage gurkenlabs/litiengine:${{ runner.os }} --userversion ${{ env.RELEASE_VERSION }} |