# Publishing werkcrappit is published to the Maven registry of git.javagil.de: ``` https://git.javagil.de/api/packages/mi/maven ``` Both modules and the Gradle plugin marker go there, so a build can resolve the Gradle plugin `de.javagil.werkcrappit` and the PIT plugin `de.javagil.werkcrappit:werkcrappit-pit` from it. ## Versions The build derives the version from the PR documents: the base version 0.26.14, raised by each PR document merged after it. A branch without a PR document fails `checkPrDocument`, since its merge would keep the version. `./gradlew changelog` writes the release notes of the PR documents and the entries of `CHANGELOG.md` up to 0.26.14 into `build/changelog/CHANGELOG.md`. A version is uploaded once and never replaced: the registry refuses a second upload. `tools/publish` therefore asks the registry first and does nothing when the version is there already, so a re-run of the same `main` build stays green. ## Who publishes The Werkator build `publish` runs `tools/publish` after every green build of `main`. It is split like Werkator's own deployment: - the repository's half in the committed `.werkator.yml`: the command; - the host's half in `.git/werkator/.werkator.yml` of the clone on mih09: the trigger, the status context and the token. A branch can neither add the trigger nor read the token, since host-authored triggers are pinned and the token exists only in the host's file. ### Host configuration (mih09) Create a Gitea access token with the scope `package: Read and Write` for the user that owns the packages. Add this to `/home/pacs/mih09/users/werkator/werkcrappit/.git/werkator/.werkator.yml` (mode 600): ```yaml builds: publish: trigger: afterSuccessOf: default branches: ["main"] statusContext: werkator/publish werkdock: env: GITEA_PACKAGES_TOKEN: "" ``` The sandbox shares the host's network, so the build reaches the registry. ## Publishing by hand ```bash GITEA_PACKAGES_TOKEN= tools/publish ``` Without a token, `./gradlew publishToMavenLocal` puts everything into `~/.m2` for a local trial.