Skip to content

feat(ci): publish snapshots and build docker images on every main push#134

Merged
TheMeinerLP merged 3 commits into
mainfrom
feat/snapshot-and-docker-publish
Jun 21, 2026
Merged

feat(ci): publish snapshots and build docker images on every main push#134
TheMeinerLP merged 3 commits into
mainfrom
feat/snapshot-and-docker-publish

Conversation

@TheMeinerLP

@TheMeinerLP TheMeinerLP commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Problem

The release-please pipeline published Maven artifacts and Docker images only on a real release, and the release Docker build was broken: release 2.0.0 (#129) failed because the Docker job couldn't resolve the private net.onelitefeather:vulpes-model dependency (Username must not be null!). Snapshots (2.0.1-SNAPSHOT, …) never triggered publish or docker at all.

Changes

  • Snapshots: new version job reads gradle.properties on non-release pushes; publish-snapshot + docker-snapshot run on every non-release push when the version is SNAPSHOT/BETA/ALPHA. Maven publish auto-routes to the snapshot repo.
  • Docker build fixed & decoupled from Gradle: the Gradle step that generates the Micronaut optimized context now runs in the new reusable gradle-docker-context.yml producer (carries the private Maven credentials via secrets: inherit) and uploads the context as an artifact. The toolchain-agnostic docker-publish.yml consumes it via artifact-name. Both release and snapshot paths run build-context* → docker*.
  • Added the workflow_dispatch trigger the docker job already referenced (manual image re-publish), matching Otis.

⚠️ Merge order

Depends on OneLiteFeatherNET/workflows#15 (merged + released as v2.3.0) first — the @v2.3.0 refs won't resolve until then. Sequence:

  1. Merge & release workflows#15 → v2.3.0.
  2. Merge ci: Maven/java release-please flow + split Gradle from Docker publish Otis#131 and this PR.

Verification

  • Version extraction tested locally → 2.0.1-SNAPSHOTis_snapshot=true.
  • All workflow YAML validated.
  • Root cause confirmed from the failed run log of release 2.0.0 (chore(main): release 2.0.0 #129).

🤖 Generated with Claude Code

The release-please pipeline only published Maven artifacts and Docker
images on a real release (`release_created == true`). Two gaps followed:

- The release Docker build failed with "Username must not be null!"
  because docker-publish.yml never received the private OneLiteFeather
  Maven credentials needed to resolve `net.onelitefeather:vulpes-model`.
  Fixed upstream in OneLiteFeatherNET/workflows (>= v2.3.0); bump refs.
- Snapshot versions (release-please's Java SNAPSHOT bumps, e.g.
  2.0.1-SNAPSHOT) never triggered publish or docker, so build.gradle.kts'
  snapshot-repo routing was dead code.

Add a `version` job that reads gradle.properties on non-release pushes
and drives new `publish-snapshot` / `docker-snapshot` jobs whenever the
version is a SNAPSHOT/BETA/ALPHA. Also add the `workflow_dispatch`
trigger the docker job already referenced (manual image re-publish).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Test results

 27 files   27 suites   3s ⏱️
 53 tests  41 ✅ 12 💤 0 ❌
159 runs  123 ✅ 36 💤 0 ❌

Results for commit 2e607e8.

♻️ This comment has been updated with latest results.

TheMeinerLP and others added 2 commits June 21, 2026 18:01
The shared docker-publish workflow no longer hardcodes the OneLiteFeather
Maven secrets; it exposes a generic `build-env` input instead. Forward
the credentials that way so the Gradle build inside the docker / docker-
snapshot jobs can resolve the private vulpes-model dependency.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docker-publish.yml is now a pure, toolchain-agnostic Docker build. Move
the Gradle step that generates the Micronaut optimized context into the
new reusable gradle-docker-context.yml producer, which uploads the
context as an artifact for docker-publish to consume.

Both the release and snapshot paths now run:
  build-context* (Gradle) -> docker* (docker-publish via artifact-name)

The producer carries the private Maven credentials (secrets: inherit),
so the Docker job no longer needs them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@TheMeinerLP TheMeinerLP merged commit 08c16fa into main Jun 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant