Skip to content

FINALLY fixed the autobuilder #10

FINALLY fixed the autobuilder

FINALLY fixed the autobuilder #10

Workflow file for this run

name: Java CI with Gradle
on:
push:
branches:
- main
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write # Needed for creating releases
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Make Gradlew Executable
run: chmod +x ./gradlew # Ensure gradlew has execute permissions
- name: Build with Gradle Wrapper
run: ./gradlew build --no-daemon
- name: Extract current version from gradle.properties
id: get_version
run: |
version=$(grep -oP '(?<=mod_version = ).*' gradle.properties)
echo "mod_version=$version" >> $GITHUB_ENV
- name: Get latest release tag (including pre-releases)
id: get_latest_release
run: |
# Fetch all tags, including pre-releases
git fetch --tags
# Get the latest tag including pre-releases
latest_release_tag=$(git describe --tags $(git rev-list --tags --max-count=1) --abbrev=0 || echo "none")
echo "latest_release_tag=$latest_release_tag" >> $GITHUB_ENV
echo "Latest release tag: $latest_release_tag"
- name: Check if version has changed
id: version_check
run: |
current_version="${{ env.mod_version }}"
latest_release_tag="${{ env.latest_release_tag }}"
if [ "$latest_release_tag" = "none" ]; then
echo "No previous release found. Proceeding with build."
echo "build_required=true" >> $GITHUB_ENV
elif [ "$current_version" != "$latest_release_tag" ]; then
echo "Version has changed from $latest_release_tag to $current_version. Proceeding with build."
echo "build_required=true" >> $GITHUB_ENV
else
echo "Version has not changed. Skipping build."
echo "build_required=false" >> $GITHUB_ENV
fi
- name: Build with Gradle
if: env.build_required == 'true'
run: ./gradlew build --no-daemon
- name: Create GitHub Release
if: env.build_required == 'true' && github.ref == 'refs/heads/main'
run: |
changelog=$(git log $(git describe --tags --abbrev=0 @^)..@ --pretty=format:"%h - %s")
tag_name=${{ env.mod_version }}
release_name="${{ env.mod_version }}"
gh release create $tag_name --title "$release_name" --notes "$changelog" --target main
- name: Upload JAR to Release
if: env.build_required == 'true' && github.ref == 'refs/heads/main'
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.version_check.outputs.upload_url }}
asset_path: ./build/libs/XAT-${{ env.mod_version }}.jar # Only the main JAR file
asset_name: "XAT-${{ env.mod_version }}.jar"
asset_content_type: application/java-archive