Skip to content

Release LITIENGINE #1049

Release LITIENGINE

Release LITIENGINE #1049

Workflow file for this run

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 }}