From 3b3a96949024853e7f9a872cbb11e5bccfc4d92e Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 27 Apr 2026 01:10:33 +0200 Subject: [PATCH] ci: restore Gitea build workflow --- .gitea/workflows/build.yml | 124 +++++++++++++++++++++++++++++++++++++ .gitignore | 5 ++ 2 files changed, 129 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..1610d55 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -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 diff --git a/.gitignore b/.gitignore index d01de4e..3f48e46 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,8 @@ bin/ ### Changelog ### changelog.txt + +### Local Codex build runtime ### +.codex-jdk/ +.gradle-home/ +temurin-jdk21.zip