78 lines
2.7 KiB
YAML
78 lines
2.7 KiB
YAML
name: Build and Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: java-latest
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
run: apt-get update && apt-get install -y jq curl
|
|
|
|
- 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 -s -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
|
|
|
|
- name: Upload JAR to Release
|
|
run: |
|
|
curl -s -X POST \
|
|
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
|
|
-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 }}"
|
|
echo "✓ JAR uploaded to Release"
|
|
|
|
- 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 -s -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 to Registry"
|