diff --git a/.gitea/maven-settings.xml b/.gitea/maven-settings.xml
new file mode 100644
index 0000000..6809dae
--- /dev/null
+++ b/.gitea/maven-settings.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ gitea
+ Relism
+ ${env.PACKAGES_TOKEN}
+
+
+
diff --git a/.gitea/workflows/publish-maven.yml b/.gitea/workflows/publish-maven.yml
new file mode 100644
index 0000000..52fcbc5
--- /dev/null
+++ b/.gitea/workflows/publish-maven.yml
@@ -0,0 +1,50 @@
+name: Publish Maven packages
+
+# FastPathRouter's own POM keeps `1.1.0` as its committed version — that's what local
+# `mvn install` (Flash's normal dev loop, see its pom.xml `fpr-core` dependency comment)
+# always produces, and changing it here would break that. Gitea's Maven registry, unlike a
+# real snapshot repository, refuses to re-publish an existing name+version (must delete
+# first — see https://docs.gitea.com/usage/packages/maven#publish-a-package), so every push
+# instead publishes under a throwaway version stamped with the commit it built from
+# (`1.1.0-`), via `versions:set` on a checkout copy — never touching the
+# committed POMs. Consumers (Flash5's pom.xml) pin `fpr-core`'s version to one specific
+# published build and bump it by hand to pick up newer FastPathRouter changes — same
+# precedent as Flash5's own publish-maven.yml, which this workflow otherwise mirrors exactly.
+on:
+ push:
+ branches: [master]
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ # No actions/checkout here on purpose: it's a Node-based action, and this container
+ # (chosen for its preinstalled mvn/JDK 21) has no Node — checkout would fail with
+ # "node: executable file not found". A plain git clone needs neither.
+ container:
+ image: maven:3.9-eclipse-temurin-21
+ steps:
+ - name: Checkout
+ run: |
+ apt-get update && apt-get install -y --no-install-recommends git
+ git clone https://git.pixel-services.com/Relism/FastPathRouter.git .
+ git checkout ${{ gitea.sha }}
+
+ - name: Stamp every module with a commit-scoped version
+ run: |
+ SHORT_SHA=$(git rev-parse --short HEAD)
+ mvn -B versions:set -DnewVersion="1.1.0-${SHORT_SHA}" -DprocessAllModules=true -DgenerateBackupPoms=false
+ echo "Publishing as 1.1.0-${SHORT_SHA}"
+
+ - name: Deploy to the Gitea Maven registry
+ env:
+ # Not GITEA_TOKEN: Gitea's own job token can't publish to package registries at
+ # all (a known, still-unimplemented limitation — see
+ # https://github.com/go-gitea/gitea/issues/23642). Confirmed by testing on this same
+ # instance for Flash5's identical workflow: GITEA_TOKEN authenticated fine against
+ # the plain API but still got 401 from this endpoint no matter the auth style.
+ # PACKAGES_TOKEN is a real PAT with write:package scope.
+ PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
+ run: |
+ mvn -B -s .gitea/maven-settings.xml -DskipTests deploy \
+ -DaltReleaseDeploymentRepository=gitea::https://git.pixel-services.com/api/packages/Relism/maven \
+ -DaltSnapshotDeploymentRepository=gitea::https://git.pixel-services.com/api/packages/Relism/maven