name: Release on: push: tags: - 'v*' jobs: validate: runs-on: ubuntu-24.04 outputs: paper_version: ${{ steps.get_version.outputs.paper_version }} velocity_version: ${{ steps.get_version.outputs.velocity_version }} paper_jar_name: ${{ steps.get_version.outputs.paper_jar_name }} velocity_jar_name: ${{ steps.get_version.outputs.velocity_jar_name }} steps: - name: Checkout repository uses: actions/checkout@v6 - name: Extract versions from gradle.properties id: get_version run: | PAPER_VERSION=$(grep '^paperVersion=' gradle.properties | cut -d'=' -f2) VELOCITY_VERSION=$(grep '^velocityVersion=' gradle.properties | cut -d'=' -f2) echo "paper_version=$PAPER_VERSION" >> $GITHUB_OUTPUT echo "velocity_version=$VELOCITY_VERSION" >> $GITHUB_OUTPUT echo "paper_jar_name=LunaticChat-$PAPER_VERSION.jar" >> $GITHUB_OUTPUT echo "velocity_jar_name=LunaticChat-$VELOCITY_VERSION-velocity.jar" >> $GITHUB_OUTPUT echo "Paper version: $PAPER_VERSION, Velocity version: $VELOCITY_VERSION" - name: Check if release already exists env: GH_TOKEN: ${{ github.token }} run: | TAG_NAME=${GITHUB_REF#refs/tags/} if gh release view "$TAG_NAME" &> /dev/null; then echo "Error: Release $TAG_NAME already exists" exit 1 fi echo "Release validation passed: $TAG_NAME does not exist yet" build: runs-on: ubuntu-24.04 needs: validate steps: - name: Checkout repository uses: actions/checkout@v6 - name: Setup Development Environment uses: jdx/mise-action@v4 - name: Setup Gradle uses: gradle/actions/setup-gradle@v6 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with shadowJar run: ./gradlew :platform-paper:shadowJar :platform-velocity:shadowJar --parallel --no-daemon - name: Upload build artifacts uses: actions/upload-artifact@v7 with: name: LunaticChat-${{ github.ref_name }} path: | platform-paper/build/libs/${{ needs.validate.outputs.paper_jar_name }} platform-velocity/build/libs/${{ needs.validate.outputs.velocity_jar_name }} retention-days: 90 release: runs-on: ubuntu-24.04 needs: [validate, build] permissions: contents: write env: MODRINTH_CHANNEL: release MODRINTH_PAPER_GAME_VERSIONS: "26.2.x" MODRINTH_VELOCITY_GAME_VERSIONS: |- 1.21.x 26.1.x 26.2.x MODRINTH_MC_VERSION: "26.2" steps: - name: Checkout repository uses: actions/checkout@v6 - name: Download build artifact uses: actions/download-artifact@v8 with: name: LunaticChat-${{ github.ref_name }} - name: Create GitHub Release env: GH_TOKEN: ${{ github.token }} run: | TAG_NAME=${GITHUB_REF#refs/tags/} PAPER_VERSION=${{ needs.validate.outputs.paper_version }} VELOCITY_VERSION=${{ needs.validate.outputs.velocity_version }} PAPER_JAR_NAME=${{ needs.validate.outputs.paper_jar_name }} VELOCITY_JAR_NAME=${{ needs.validate.outputs.velocity_jar_name }} # The notes point at the changelog on the documentation site rather than # repeating it here, so the release notes live in exactly one place. cat > /tmp/release-notes.md <