Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 26 additions & 24 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,45 @@
# certain platforms or Java versions, and provides a first line of defence
# against bad commits.

name: build
on: [pull_request, push]
name: Build
on:
push:
branches:
- main
pull_request:

jobs:
build:
strategy:
matrix:
# Use these Java versions
java: [
21, # Current Java LTS
]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: validate gradle wrapper
uses: gradle/wrapper-validation-action@v2
- name: setup jdk ${{ matrix.java }}
uses: actions/setup-java@v4
- name: Checkout
uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Setup JDK 25
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: 'microsoft'
- name: make gradle wrapper executable
run: chmod +x ./gradlew
- uses: actions/cache@v4
java-version: 25
distribution: 'temurin'

- name: Setup cache
uses: actions/cache@v6
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: build

- name: Build
run: ./gradlew build
- name: capture build artifacts
if: ${{ matrix.java == '21' }} # Only upload artifacts built from latest java
uses: actions/upload-artifact@v4

- name: Capture build artifacts
uses: actions/upload-artifact@v7
with:
name: Artifacts
path: versions/**/build/libs/
114 changes: 80 additions & 34 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
name: Publish on GitHub, CurseForge & Modrinth
name: Publish (Modrinth, Curseforge, GH, Maven)

on: [ workflow_dispatch ]

env:
MINECRAFT_VERSION: 1.21.1
JAVA_VERSION: 21
VERSION: 1.9.2+1.21.1
RELEASE_NAME: Solstice 1.9.2 for Minecraft 1.21.1
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
Expand All @@ -19,47 +15,97 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Environment Variables
run: env

- name: Checkout Repository
uses: actions/checkout@v3
with:
submodules: true
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup Java
uses: actions/setup-java@v2
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: 21
java-version: 25

- name: Make Gradle Wrapper Executable
if: ${{ runner.os != 'Windows' }}
run: chmod +x ./gradlew
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
with:
validate-wrappers: 'true'

- name: Build
run: ./gradlew clean build

- name: Publish to Maven
run: ./gradlew publish
- name: Upload built jars
uses: actions/upload-artifact@v7
with:
name: mod-jars
path: |
**/build/libs/*.jar
!**/build/libs/*-sources.jar
!**/build/libs/*-javadoc.jar
!**/build/libs/*-plain.jar
retention-days: 1

publish:
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [ maven, modrinth, curseforge ]
steps:
- uses: actions/checkout@v6

- name: Download built jars
uses: actions/download-artifact@v8
with:
name: mod-jars
path: .

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: 25

- name: Publish
uses: Kir-Antipov/mc-publish@v3.3
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
with:
curseforge-id: 1149875
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
cache-read-only: true

modrinth-id: uIvrDZas
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
- name: Publish to ${{ matrix.target }}
run: ./gradlew ${{ matrix.target }} -PprebuiltJar

github-tag: "v${{env.VERSION}}"
github-token: ${{ secrets.GITHUB_TOKEN }}
github:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Download built jars
uses: actions/download-artifact@v8
with:
name: mod-jars
path: .

name: "${{env.RELEASE_NAME}}"
version: "${{env.VERSION}}"
version-type: release
changelog-file: CHANGELOG.md
- name: Get Version
id: get-version
run: |
VERSION=$(awk -F'[ ="]+' '$1 == "mod.version" {print $2}' stonecutter.properties.toml)
echo "version=$VERSION" >> $GITHUB_OUTPUT
if [[ "$VERSION" =~ -(alpha|SNAPSHOT) ]]; then
echo "prerelease=true" >> $GITHUB_OUTPUT
else
echo "prerelease=false" >> $GITHUB_OUTPUT
fi

loaders: fabric
game-versions: "${{env.MINECRAFT_VERSION}}"
java: "${{env.JAVA_VERSION}}"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: Solstice ${{ steps.get-version.outputs.version }}
prerelease: ${{ steps.get-version.outputs.prerelease == 'true' }}
draft: ${{ steps.get-version.outputs.prerelease == 'true' }}
generate_release_notes: true
files: |
**/build/libs/*.jar
!**/build/libs/*-sources.jar
!**/build/libs/*-javadoc.jar
!**/build/libs/*-plain.jar
Loading
Loading