name: Build and Release on: push: tags: - 'v*' workflow_dispatch: jobs: build: runs-on: ubuntu-22.04 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' cache: 'gradle' - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Extract version from gradle.properties id: version run: | VERSION=$(grep "^mod_version=" gradle.properties | cut -d'=' -f2 | tr -d ' ') echo "mod_version=$VERSION" >> $GITHUB_OUTPUT echo "Mod version: $VERSION" - name: Build with Gradle run: ./gradlew jar --no-daemon - name: Find JAR file id: jar run: | JAR_PATH=$(find build/libs -name "*.jar" ! -name "*-sources.jar" ! -name "*-javadoc.jar" -type f | head -n 1) JAR_NAME=$(basename "$JAR_PATH") echo "jar_path=$JAR_PATH" >> $GITHUB_OUTPUT echo "jar_name=$JAR_NAME" >> $GITHUB_OUTPUT echo "Found JAR: $JAR_NAME" - name: Create Release id: create_release run: | TAG_NAME="v${{ steps.version.outputs.mod_version }}" RELEASE_NAME="Release $TAG_NAME" RESPONSE=$(curl -X POST \ -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"$TAG_NAME\",\"name\":\"$RELEASE_NAME\",\"draft\":false,\"prerelease\":false}" \ "https://git.itqop.pw/api/v1/repos/itqop/whitelist-neoforge/releases") RELEASE_ID=$(echo "$RESPONSE" | jq -r '.id') echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT echo "Release created with ID: $RELEASE_ID" - name: Upload JAR to Release run: | curl -X POST \ -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@${{ steps.jar.outputs.jar_path }}" \ "https://git.itqop.pw/api/v1/repos/itqop/whitelist-neoforge/releases/${{ steps.create_release.outputs.release_id }}/assets?name=${{ steps.jar.outputs.jar_name }}" - name: Upload to Gitea Package Registry run: | VERSION="${{ steps.version.outputs.mod_version }}" JAR_PATH="${{ steps.jar.outputs.jar_path }}" JAR_NAME="${{ steps.jar.outputs.jar_name }}" curl -X PUT \ -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ -H "Content-Type: application/java-archive" \ --data-binary @"$JAR_PATH" \ "https://git.itqop.pw/api/packages/itqop/generic/whitelist-neoforge/$VERSION/$JAR_NAME" echo "Package uploaded: https://git.itqop.pw/itqop/-/packages/generic/whitelist-neoforge/$VERSION"