ci: restore Gitea build workflow
All checks were successful
Build / build (push) Successful in 5m38s
All checks were successful
Build / build (push) Successful in 5m38s
This commit is contained in:
124
.gitea/workflows/build.yml
Normal file
124
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,124 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- artifacts
|
||||
tags:
|
||||
- "v*"
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Java 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: "21"
|
||||
|
||||
- name: Make Gradle wrapper executable
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build
|
||||
run: ./gradlew build --no-daemon
|
||||
|
||||
- name: Create Gitea release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
tag="${GITHUB_REF_NAME}"
|
||||
api="${GITHUB_SERVER_URL}/api/v1"
|
||||
release_name="WorldHandler ${tag}"
|
||||
jar="$(find build/libs -maxdepth 1 -name '*neoforge*.jar' -print -quit)"
|
||||
token="${GITEA_TOKEN:-${GITHUB_TOKEN:-}}"
|
||||
|
||||
if [ -z "${jar}" ]; then
|
||||
echo "No NeoForge jar found in build/libs" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${token}" ]; then
|
||||
echo "No Gitea token available" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
release_json="$(mktemp)"
|
||||
if ! curl -fsS \
|
||||
-H "Authorization: token ${token}" \
|
||||
-H "Accept: application/json" \
|
||||
"${api}/repos/${GITHUB_REPOSITORY}/releases/tags/${tag}" \
|
||||
-o "${release_json}"; then
|
||||
export tag release_name GITHUB_SHA
|
||||
python3 -c 'import json, os; print(json.dumps({"tag_name": os.environ["tag"], "target_commitish": os.environ["GITHUB_SHA"], "name": os.environ["release_name"], "body": "NeoForge 21.1.225 build for Minecraft 1.21.1.", "draft": False, "prerelease": False}))' > "${release_json}"
|
||||
curl -fsS \
|
||||
-X POST \
|
||||
-H "Authorization: token ${token}" \
|
||||
-H "Accept: application/json" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data-binary @"${release_json}" \
|
||||
"${api}/repos/${GITHUB_REPOSITORY}/releases" \
|
||||
-o "${release_json}"
|
||||
fi
|
||||
|
||||
release_id="$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["id"])' "${release_json}")"
|
||||
asset_name="$(basename "${jar}")"
|
||||
|
||||
python3 -c 'import json, sys; release = json.load(open(sys.argv[1])); asset_name = sys.argv[2]; [print(asset["id"]) for asset in release.get("assets", []) if asset.get("name") == asset_name]' "${release_json}" "${asset_name}" > assets-to-delete.txt
|
||||
|
||||
while read -r asset_id; do
|
||||
[ -z "${asset_id}" ] && continue
|
||||
curl -fsS \
|
||||
-X DELETE \
|
||||
-H "Authorization: token ${token}" \
|
||||
"${api}/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets/${asset_id}"
|
||||
done < assets-to-delete.txt
|
||||
|
||||
curl -fsS \
|
||||
-X POST \
|
||||
-H "Authorization: token ${token}" \
|
||||
-H "Accept: application/json" \
|
||||
-F "attachment=@${jar};type=application/java-archive" \
|
||||
"${api}/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets?name=${asset_name}"
|
||||
|
||||
- name: Publish jar to artifacts branch
|
||||
if: github.event_name != 'pull_request'
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p /tmp/worldhandler-artifacts
|
||||
cp build/libs/*.jar /tmp/worldhandler-artifacts/
|
||||
|
||||
git config user.name "Gitea Actions"
|
||||
git config user.email "actions@gitea.local"
|
||||
|
||||
git fetch origin artifacts || true
|
||||
git switch --force-create artifacts
|
||||
git rm -rf .
|
||||
|
||||
cp /tmp/worldhandler-artifacts/*.jar .
|
||||
cat > README.md <<'EOF'
|
||||
# WorldHandler build artifacts
|
||||
|
||||
This branch is maintained by the Gitea runner.
|
||||
Download the jar file from this branch.
|
||||
EOF
|
||||
|
||||
git add README.md *.jar
|
||||
git commit --allow-empty -m "Publish WorldHandler jar from ${GITHUB_SHA}"
|
||||
git push --force origin artifacts
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -130,3 +130,8 @@ bin/
|
||||
|
||||
### Changelog ###
|
||||
changelog.txt
|
||||
|
||||
### Local Codex build runtime ###
|
||||
.codex-jdk/
|
||||
.gradle-home/
|
||||
temurin-jdk21.zip
|
||||
|
||||
Reference in New Issue
Block a user