Skip to content

πŸ“¦ Project Build #32 #32

πŸ“¦ Project Build #32

πŸ“¦ Project Build #32 #32

Workflow file for this run

name: Project Build
run-name: "πŸ“¦ Project Build #${{ github.run_number }}"
on:
push:
branches:
- dev
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RELEASE_TYPE: "release"
DEV_ENVIRONMENT: ${{ github.ref_name != 'main' }}
jobs:
info:
name: πŸ–₯️ Project Info
runs-on: ubuntu-latest
outputs:
project_version: ${{ steps.project_version.outputs.value }}
project_name: ${{ steps.check.outputs.project_name }}
project_full_name: ${{ steps.check.outputs.project_name }}-${{ steps.check.outputs.project_version }}
minecraft_version: ${{ steps.check.outputs.minecraft_version }}
java_version: ${{ steps.check.outputs.java_version }}
exists: ${{ steps.check.outputs.exists }}
make_release: ${{ steps.check.outputs.make_release }}
steps:
- name: πŸ” Checkout
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0
- name: πŸ“₯ Get Project Name
id: project_name
uses: dschanoeh/get-property@v1.2.0
with:
file: gradle.properties
property: mod_name
- name: πŸ“₯ Get Project Name Suffix
id: project_name_suffix
uses: dschanoeh/get-property@v1.2.0
with:
file: gradle.properties
property: mod_name_suffix
- name: πŸ“₯ Get Project Version
id: project_version
uses: dschanoeh/get-property@v1.2.0
with:
file: gradle.properties
property: mod_version
- name: πŸ“₯ Get Minecraft Version
id: minecraft_version
uses: dschanoeh/get-property@v1.2.0
with:
file: gradle.properties
property: minecraft_version
- name: πŸ“₯ Get Java Version
id: java_version
uses: dschanoeh/get-property@v1.2.0
with:
file: gradle.properties
property: java_version
- name: πŸ” Check If Tag Exists
uses: mukunku/tag-exists-action@v1.7.0
id: check_tag
with:
tag: ${{ steps.project_version.outputs.value }}
- name: πŸ” Check
id: check
shell: bash
run: |
echo "make_release=${{ steps.check_tag.outputs.exists == 'false' && env.DEV_ENVIRONMENT == 'false' }}" >> $GITHUB_OUTPUT
echo "exists=${{ steps.check_tag.outputs.exists }}" >> $GITHUB_OUTPUT
echo "project_name=${{ steps.project_name.outputs.value }}-${{ steps.project_name_suffix.outputs.value }}" >> $GITHUB_OUTPUT
echo "project_version=${{ steps.project_version.outputs.value }}" >> $GITHUB_OUTPUT
echo "release_type=${{ env.RELEASE_TYPE }}" >> $GITHUB_OUTPUT
echo "minecraft_version=${{ steps.minecraft_version.outputs.value }}" >> $GITHUB_OUTPUT
echo "java_version=${{ steps.java_version.outputs.value }}" >> $GITHUB_OUTPUT
if ${{ env.DEV_ENVIRONMENT == 'true' }}; then
echo "project_version=build_#${{ github.run_number }}" >> $GITHUB_OUTPUT
echo "release_type=Unreleased" >> $GITHUB_OUTPUT
fi
- name: πŸ“ Generate Github Summary
uses: WcAServices/markdown-template-action@v1.1.1
with:
template: |
πŸ“ƒ **Name**: ${{ steps.check.outputs.project_name }}
πŸ“ƒ **Release**: `${{ steps.check.outputs.project_version }}`
πŸ“ƒ **Release Type**: `${{ steps.check.outputs.release_type }}`
πŸ“ƒ **Game Version**: `${{ steps.check.outputs.minecraft_version }}`
πŸ“ƒ **Dev Environment**: `${{ env.DEV_ENVIRONMENT }}`
πŸ“ƒ **Tag Exists**: `${{ steps.check.outputs.exists }}`
πŸ“ƒ **Make Release**: `${{ steps.check.outputs.make_release }}`
build:
name: πŸ“¦ Build Mod
needs: [info]
runs-on: ubuntu-latest
steps:
- name: πŸ” Checkout
uses: actions/checkout@v6.0.2
- name: πŸ“ Setup JDK
uses: actions/setup-java@v5.2.0
with:
distribution: 'temurin'
java-version: ${{ needs.info.outputs.java_version }}
- name: πŸ“ Setup Gradle
uses: gradle/actions/setup-gradle@v5.0.1
with:
cache-cleanup: always
cache-disabled: true
- name: πŸ”„ Grant Execute Permission For Gradlew
run: chmod +x gradlew
- name: πŸ“¦ Build
run: ./gradlew build -x spotlessCheck
- name: πŸ“¦ Rename Jar
shell: bash
run: |
if ${{ env.DEV_ENVIRONMENT == 'true' }}; then
mv build/libs/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}.jar build/libs/${{ needs.info.outputs.project_full_name }}.jar
fi
- name: πŸš€ Upload Artifact Jar
uses: actions/upload-artifact@v6.0.0
with:
name: ${{ needs.info.outputs.project_full_name }}
path: build/libs/${{ needs.info.outputs.project_full_name }}.jar
if-no-files-found: warn
release:
name: πŸš€ Release
needs: [info, build]
runs-on: ubuntu-latest
if: ${{ needs.info.outputs.make_release == 'true' }}
steps:
- name: πŸ“¦ Checkout
uses: actions/checkout@v6.0.2
- name: πŸ”’ Check if CURSEFORGE_TOKEN exist
shell: bash
run: |
if [ "${{ secrets.CURSEFORGE_TOKEN }}" == '' ]; then
echo '::error::No value found for secret key `CURSEFORGE_TOKEN`. See https://docs.github.com/en/actions/security-guides/ encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
fi
- name: πŸ“¦ Download artifact
uses: actions/download-artifact@v7.0.0
with:
merge-multiple: true
- name: πŸ” Check if artifact exist
id: check_artifact
shell: bash
run: |
if [ ! -f ${{ needs.info.outputs.project_full_name }}.jar ]; then
echo '::error::No value found for artifact `curseforge.zip`.' && exit 1
fi
echo "βœ”οΈ All artifacts found"
- name: πŸš€ Release
uses: Xikaro/game-publish@3.3.1
with:
modrinth-id: ${{ vars.MODRINTH_ID }}
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
modrinth-dependencies: |
JaCEZUhg(required)
7tG215v7(required)
curseforge-id: ${{ vars.CURSEFORGE_ID }}
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
curseforge-dependencies: |
gregtechceu-modern(required)
terrafirmacraft(required)
github-name: ${{ needs.info.outputs.project_version }}
github-tag: ${{ needs.info.outputs.project_version }}
github-generate-changelog: true
github-draft: false
github-prerelease: ${{ env.RELEASE_TYPE != 'release' }}
github-commitish: main
github-token: ${{ secrets.GITHUB_TOKEN }}
files: ${{ needs.info.outputs.project_full_name }}.jar
name: "${{ needs.info.outputs.project_full_name }}"
version: ${{ needs.info.outputs.project_version }}
version-type: ${{ env.RELEASE_TYPE }}
loaders: |
forge
neoforge
game-versions: ${{ needs.info.outputs.minecraft_version }}
game-version-filter: none
java: ${{ needs.info.outputs.java_version }}
retry-attempts: 2
retry-delay: 10000
fail-mode: fail