Skip to content
name: Build Pre-Release version and Publish
on:
workflow_dispatch:
inputs:
release-beta:
description: 'Publish a beta release?'
required: true
type: boolean
push:
branches:
- "1.21"
jobs:
build-and-publish-pre-release:
strategy:
matrix:
# Use thses Java versions:
java: [ 21 ] # Current Java LTS and current latest Java version
# Use these operating systems:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Store all lowercase commit message
run: |
echo COMMIT_MESSAGE=$( git log --format=%B --no-merges -n 1 | tr '[:upper:]' '[:lower:]' ) >> ${GITHUB_ENV}
echo COMMIT_MESSAGE_ALL=$( git log --format=%B --no-merges -n 1 ) >> ${GITHUB_ENV}
- name: Detect if a beta release should be published
if: ${{ contains(env.COMMIT_MESSAGE, '[publish beta]') || inputs.release-beta }}
run: |
echo "PUBLISH_BETA=true" >> ${GITHUB_ENV}
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: ${{ matrix.java }}
- name: Show Java version
run: java -version
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Show Gradle version
run: gradle --version
- name: Build with Gradle (DEV)
if : ${{ env.PUBLISH_BETA != 'true' }}
run: gradle getVersion build --stacktrace
- name: Build with Gradle (BETA)
if : ${{ env.PUBLISH_BETA == 'true' }}
env:
REDEN_BUILD_TYPE: "BETA"
run: gradle getVersion build --stacktrace
- name: Get Mod Name
id: get_mod_name
uses: christian-draeger/read-properties@1.1.1
with:
path: gradle.properties
properties: 'mod_name'
- name: Get Mod Version
id: get_mod_version
run: |
echo "mod_version=$(cat build/.reden-version)" >> $GITHUB_OUTPUT
echo "short_mod_version=$(cat build/.reden-short-version)" >> $GITHUB_OUTPUT
- name: Upload assets to GitHub Action
if: success() || failure()
uses: actions/upload-artifact@v3
with:
name: "[DEV-CI#${{ github.run_number }}] ${{ steps.get_mod_name.outputs.mod_name }} ${{ steps.get_mod_version.outputs.mod_version }} - Java ${{ matrix.java }}"
path: |
build/libs/*.jar
build/reports/tests/
- name: Publish to GitHub Pre-Releases
if: ${{ env.PUBLISH_BETA == 'true' && matrix.java == 21 }} # Only publish the version built with Java LTS
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: build/libs/*.jar
generateReleaseNotes: true
name: "[CI#${{ github.run_number }}] ${{ steps.get_mod_name.outputs.mod_name }} Mod Pre-Release ${{ steps.get_mod_version.outputs.mod_version }}"
prerelease: true
tag: "beta/${{ steps.get_mod_version.outputs.mod_version }}"
- name: Publish to Modrinth & CurseForge
if: ${{ env.PUBLISH_BETA == 'true' && matrix.java == 17 }} # Only publish the version built with Java LTS
uses: Kir-Antipov/mc-publish@v3.3
with:
# Publish to Modrinth
modrinth-id: xRu8OXEJ
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
# Publish to CurseForge
curseforge-id: 903236
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
# Universal Configurations
files: |
build/libs/*-@(beta).jar
build/libs/*-@(beta)*@(ci)*[0123456789].jar
name: "${{ steps.get_mod_name.outputs.mod_name }} Pre-Release ${{ steps.get_mod_version.outputs.mod_version }}"
version: "${{ steps.get_mod_version.outputs.short_mod_version }}"
version-type: beta
loaders: |
fabric
quilt
modrinth-featured: false
dependencies: |
carpet
malilib
fabric-api
fabric-language-kotlin
owo-lib
java: |
17
18
19
20
21
retry-attempts: 2
retry-delay: 10000
changelog: ${{ env.COMMIT_MESSAGE_ALL }}