Skip to content
Merged
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
39 changes: 30 additions & 9 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,16 @@ on:
required: false
type: boolean
default: false
gradle_project:
description: 'Gradle project path or name without leading colon'
required: false
type: string
default: ''
module_dir:
description: 'Module directory relative to repository root'
required: false
type: string
default: ''
secrets:
maven_url:
description: 'Maven URL'
Expand All @@ -51,6 +61,8 @@ jobs:
NOT_DEV: ${{ secrets.maven_url != '' && secrets.maven_user != '' && secrets.maven_pass != '' }}
CI_BUILD: ${{ inputs.ci_build }}
PR_BUILD: ${{ inputs.pr_build }}
GRADLE_PROJECT: ${{ inputs.gradle_project != '' && inputs.gradle_project || format('{0}-neoforge-1.21.1', inputs.module_id) }}
MODULE_DIR: ${{ inputs.module_dir != '' && inputs.module_dir || format('module.{0}', inputs.module) }}
steps:
- name: checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -79,23 +91,32 @@ jobs:
uses: gradle/actions/setup-gradle@v3

- name: Build
run: ./gradlew :${{ inputs.module_id }}-neoforge-1.21.1:build
run: ./gradlew :${{ env.GRADLE_PROJECT }}:build

- name: Get Version
id: version
shell: bash
run: |
MESSAGE=$(ls module.${{ inputs.module }}/build/libs/* | grep javadoc.jar -v | grep sources.jar -v | grep shadow.jar -v | grep slim.jar -v | awk -F '${{ inputs.mod_id }}-neoforge-|.jar' '{print $2}')
echo "version=$MESSAGE" >> $GITHUB_OUTPUT
ARTIFACT=$(find "$MODULE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' \
! -name '*-javadoc.jar' \
! -name '*-sources.jar' \
! -name '*-shadow.jar' \
! -name '*-slim.jar' | head -n 1)
FILENAME=$(basename "$ARTIFACT")
VERSION=${FILENAME#${{ inputs.mod_id }}-neoforge-}
VERSION=${VERSION%.jar}
echo "artifact=$ARTIFACT" >> $GITHUB_OUTPUT
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: capture build artifacts
uses: actions/upload-artifact@v4.3.3
with:
name: "${{ inputs.module_id }} ${{ steps.version.outputs.version }}"
path: module.${{ inputs.module }}/build/libs/${{ inputs.mod_id }}-neoforge-${{ steps.version.outputs.version }}.jar
path: ${{ steps.version.outputs.artifact }}

- name: Publish to maven
if: ${{ !inputs.pr_build && env.NOT_DEV == 'true' }}
run: ./gradlew :${{ inputs.module_id }}-neoforge-1.21.1:publish
run: ./gradlew :${{ env.GRADLE_PROJECT }}:publish
env:
MAVEN_URL: ${{ secrets.maven_url }}
MAVEN_USERNAME: ${{ secrets.maven_user }}
Expand All @@ -106,24 +127,24 @@ jobs:
uses: actions/upload-artifact@v4.3.3
with:
name: "${{ inputs.module_id }}-deploy"
path: module.${{ inputs.module }}/build/staging-deploy/
path: ${{ env.MODULE_DIR }}/build/staging-deploy/

- name: gametest
if: ${{ inputs.ci_build && inputs.gametest }}
uses: Anvil-Dev/dedicated-server-launch-test@1.21.1-neoforge
with:
mod: module.${{ inputs.module }}/build/libs/${{ inputs.mod_id }}-neoforge-${{ steps.version.outputs.version }}.jar
mod: ${{ steps.version.outputs.artifact }}

- name: Upload Release Jar
if: ${{ !inputs.ci_build && !inputs.pr_build }}
uses: softprops/action-gh-release@v0.1.15
with:
files: |
module.${{ inputs.module }}/build/libs/${{ inputs.mod_id }}-neoforge-${{ steps.version.outputs.version }}.jar
${{ steps.version.outputs.artifact }}

- name: Upload MCMOD
if: ${{ inputs.module == 'main' && !inputs.pr_build }}
run: ./gradlew :${{ inputs.module_id }}-neoforge-1.21.1:publishMods
run: ./gradlew :${{ env.GRADLE_PROJECT }}:publishMods
env:
CURSEFORGE_TOKEN: ${{ secrets.curseforge_token }}
MODRINTH_TOKEN: ${{ secrets.modrinth_token }}
36 changes: 35 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ on:
- .github/workflows/generate-matrix.js
- gradle/**
- module.*/src/**
- module.sync/processor/src/**
- module.*/build.gradle
- module.sync/processor/build.gradle
- module.*/gradle.properties
- module.sync/processor/gradle.properties
- build.gradle
- gradle.properties
- settings.gradle
Expand All @@ -33,6 +36,22 @@ jobs:

# ── Build (topological levels) ──────────────────────────────────

processor-build:
needs: [prepare]
uses: ./.github/workflows/build_and_test.yml
with:
module: sync
module_id: anvillib-sync-processor
mod_id: anvillib_sync_processor
ci_build: true
pr_build: false
gradle_project: anvillib-sync-neoforge-1.21.1:anvillib-sync-processor-neoforge-1.21.1
module_dir: module.sync/processor
secrets:
maven_url: ${{ secrets.MAVEN_URL }}
maven_user: ${{ secrets.MAVEN_USER }}
maven_pass: ${{ secrets.MAVEN_PASS }}

build-l0:
needs: [prepare]
strategy:
Expand Down Expand Up @@ -66,7 +85,7 @@ jobs:
maven_pass: ${{ secrets.MAVEN_PASS }}

build-l2:
needs: [prepare, build-l1]
needs: [prepare, build-l1, processor-build]
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.level_2) }}
uses: ./.github/workflows/build_and_test.yml
Expand All @@ -83,6 +102,21 @@ jobs:

# ── Maven Central deploy ────────────────────────────────────────

processor-deploy:
needs: [processor-build]
uses: ./.github/workflows/publish_maven_central.yml
with:
module: sync
module_id: anvillib-sync-processor
gradle_project: anvillib-sync-neoforge-1.21.1:anvillib-sync-processor-neoforge-1.21.1
module_dir: module.sync/processor
secrets:
maven_central_username: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
maven_central_password: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
signing_key: ${{ secrets.SIGNING_KEY }}
signing_public_key: ${{ secrets.SIGNING_PUBLIC_KEY }}
signing_password: ${{ secrets.SIGNING_PASSWORD }}

deploy-l0:
needs: [prepare, build-l0]
strategy:
Expand Down
17 changes: 15 additions & 2 deletions .github/workflows/publish_maven_central.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ on:
description: 'Module ID to build'
required: true
type: string
gradle_project:
description: 'Gradle project path or name without leading colon'
required: false
type: string
default: ''
module_dir:
description: 'Module directory relative to repository root'
required: false
type: string
default: ''
secrets:
maven_central_username:
description: 'Maven Central Username'
Expand All @@ -30,6 +40,9 @@ on:
jobs:
publish:
runs-on: ubuntu-latest
env:
GRADLE_PROJECT: ${{ inputs.gradle_project != '' && inputs.gradle_project || format('{0}-neoforge-1.21.1', inputs.module_id) }}
MODULE_DIR: ${{ inputs.module_dir != '' && inputs.module_dir || format('module.{0}', inputs.module) }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -54,10 +67,10 @@ jobs:
uses: actions/download-artifact@v4
with:
name: ${{ inputs.module_id }}-deploy
path: module.${{ inputs.module }}/build/staging-deploy/
path: ${{ env.MODULE_DIR }}/build/staging-deploy/

- name: Publish to Maven Central
run: ./gradlew :${{ inputs.module_id }}-neoforge-1.21.1:jreleaserDeploy --no-configuration-cache
run: ./gradlew :${{ env.GRADLE_PROJECT }}:jreleaserDeploy --no-configuration-cache
env:
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.maven_central_username }}
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.maven_central_password }}
Expand Down
17 changes: 16 additions & 1 deletion .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ on:
- .github/workflows/generate-matrix.js
- gradle/**
- module.*/src/**
- module.sync/processor/src/**
- module.*/build.gradle
- module.sync/processor/build.gradle
- module.*/gradle.properties
- module.sync/processor/gradle.properties
- build.gradle
- gradle.properties
- settings.gradle
Expand All @@ -39,6 +42,18 @@ jobs:

# ── Build (topological levels) ──────────────────────────────────

processor-build:
needs: [prepare]
uses: ./.github/workflows/build_and_test.yml
with:
module: sync
module_id: anvillib-sync-processor
mod_id: anvillib_sync_processor
ci_build: true
pr_build: true
gradle_project: anvillib-sync-neoforge-1.21.1:anvillib-sync-processor-neoforge-1.21.1
module_dir: module.sync/processor

build-l0:
needs: [prepare]
strategy:
Expand All @@ -64,7 +79,7 @@ jobs:
pr_build: true

build-l2:
needs: [prepare, build-l1]
needs: [prepare, build-l1, processor-build]
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.level_2) }}
uses: ./.github/workflows/build_and_test.yml
Expand Down
33 changes: 32 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@ jobs:

# ── Build (topological levels) ──────────────────────────────────

processor-build:
needs: [prepare]
uses: ./.github/workflows/build_and_test.yml
with:
module: sync
module_id: anvillib-sync-processor
mod_id: anvillib_sync_processor
ci_build: false
pr_build: false
gradle_project: anvillib-sync-neoforge-1.21.1:anvillib-sync-processor-neoforge-1.21.1
module_dir: module.sync/processor
secrets:
maven_url: ${{ secrets.MAVEN_URL }}
maven_user: ${{ secrets.MAVEN_USER }}
maven_pass: ${{ secrets.MAVEN_PASS }}

build-l0:
needs: [prepare]
strategy:
Expand Down Expand Up @@ -55,7 +71,7 @@ jobs:
maven_pass: ${{ secrets.MAVEN_PASS }}

build-l2:
needs: [prepare, build-l1]
needs: [prepare, build-l1, processor-build]
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.level_2) }}
uses: ./.github/workflows/build_and_test.yml
Expand All @@ -72,6 +88,21 @@ jobs:

# ── Maven Central deploy ────────────────────────────────────────

processor-deploy:
needs: [processor-build]
uses: ./.github/workflows/publish_maven_central.yml
with:
module: sync
module_id: anvillib-sync-processor
gradle_project: anvillib-sync-neoforge-1.21.1:anvillib-sync-processor-neoforge-1.21.1
module_dir: module.sync/processor
secrets:
maven_central_username: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
maven_central_password: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
signing_key: ${{ secrets.SIGNING_KEY }}
signing_public_key: ${{ secrets.SIGNING_PUBLIC_KEY }}
signing_password: ${{ secrets.SIGNING_PASSWORD }}

deploy-l0:
needs: [prepare, build-l0]
strategy:
Expand Down
Loading