From 7cfd399f926df630e892eebad6352fbecc89afe6 Mon Sep 17 00:00:00 2001 From: itqop Date: Sat, 18 Oct 2025 23:25:47 +0300 Subject: [PATCH] add build.yml --- .gitea/workflows/build.yml | 82 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..6e5b28e --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,82 @@ +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"