gitea workflow I hope
This commit is contained in:
128
.gitea/workflows/build.yml
Normal file
128
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,128 @@
|
||||
name: Build Minecraft Mod
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Make gradlew executable
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build mod
|
||||
run: ./gradlew build
|
||||
|
||||
- name: Read mod info
|
||||
id: mod_info
|
||||
run: |
|
||||
NAME=$(grep "^archives_base_name" gradle.properties | cut -d'=' -f2)
|
||||
VERSION=$(grep "^mod_version" gradle.properties | cut -d'=' -f2)
|
||||
|
||||
if [ -z "$NAME" ] || [ -z "$VERSION" ]; then
|
||||
echo "Failed to read mod info"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR="build/libs/${NAME}-${VERSION}.jar"
|
||||
|
||||
if [ ! -f "$JAR" ]; then
|
||||
echo "Jar not found: $JAR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "NAME=$NAME" >> $GITEA_ENV
|
||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
||||
echo "JAR=$JAR" >> $GITEA_ENV
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: minecraft-mod
|
||||
path: ${{ env.JAR }}
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: minecraft-mod
|
||||
path: ./release-artifacts/
|
||||
|
||||
- name: Install jq
|
||||
run: sudo apt-get update && sudo apt-get install -y jq
|
||||
|
||||
- name: Read mod info again
|
||||
run: |
|
||||
NAME=$(grep "^archives_base_name" gradle.properties | cut -d'=' -f2)
|
||||
VERSION=$(grep "^mod_version" gradle.properties | cut -d'=' -f2)
|
||||
|
||||
echo "NAME=$NAME" >> $GITEA_ENV
|
||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
||||
|
||||
- name: Determine tag
|
||||
run: |
|
||||
BASE="${NAME}-${VERSION}"
|
||||
TAG="$BASE"
|
||||
i=1
|
||||
|
||||
while true; do
|
||||
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
|
||||
"${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/tags/$TAG")
|
||||
|
||||
if [ "$STATUS" = "404" ]; then
|
||||
break
|
||||
fi
|
||||
|
||||
TAG="${BASE}($i)"
|
||||
i=$((i+1))
|
||||
done
|
||||
|
||||
echo "TAG=$TAG" >> $GITEA_ENV
|
||||
|
||||
- name: Create release
|
||||
run: |
|
||||
curl -X POST "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases" \
|
||||
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"tag_name\": \"${TAG}\",
|
||||
\"name\": \"${TAG}\"
|
||||
}"
|
||||
|
||||
- name: Get release ID
|
||||
run: |
|
||||
RELEASE_ID=$(curl -s \
|
||||
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
|
||||
"${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/tags/${TAG}" \
|
||||
| jq -r '.id')
|
||||
|
||||
echo "RELEASE_ID=$RELEASE_ID" >> $GITEA_ENV
|
||||
|
||||
- name: Upload jar to release
|
||||
run: |
|
||||
FILE=$(ls ./release-artifacts/*.jar | head -n 1)
|
||||
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
|
||||
-H "Content-Type: application/java-archive" \
|
||||
--data-binary @"$FILE" \
|
||||
"${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/${RELEASE_ID}/assets?name=$(basename $FILE)"
|
||||
Reference in New Issue
Block a user