Skip to content

feat(ci): add reusable Gradle native image workflow - #42

Merged
lusu007 merged 5 commits into
mainfrom
feat/reusable-native-gradle
Nov 1, 2026
Merged

lusu007 merged 5 commits into
mainfrom
feat/reusable-native-gradle

Conversation

@lusu007

@lusu007 lusu007 commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Pull Request

Description

Native service builds share one reusable Gradle workflow. Callers select Micro and optionally Distroless and can run their packaged-image contracts before publication. Builds verify non-root runtime identity, source labels and native binary checksums; pull requests never publish images.

Publish standard release tags from the exact verified Native/Micro image: main produces edge and a short SHA, stable vX.Y.Z produces X.Y.Z and latest, prereleases produce only their version. Reject invalid version tags before registry login or publication. Preserve immutable native SHA tags and the optional Distroless comparison target.

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • ♻️ Refactoring
  • 📚 Documentation
  • 🔧 Chore

Related Issues

No linked issue.

Testing

  • Unit tests pass
  • Manual testing completed
  • New tests added for new functionality

17 workflow contract tests pass. Shell execution tests cover allowed/invalid targets, BuildKit secret arguments, protected Maven property files and cleanup after both successful and failed hooks. Existing runner routing checks cover public/private repositories and missing payloads. Service image integration remains covered by repository-owned verification hooks.

Risk

This additive workflow runs only for callers. Native compilation needs up to 8 GiB heap; private repositories use the existing 16 GiB runner class. Publication requires successful unit tests, binary checks and any configured runtime contracts. Cold Kotlin compilation receives a 4 GiB Gradle heap inside the existing 16 GiB runner; the native compiler is capped at 8 GiB. Both runtime bases are built together, checksummed, and the exact tested image is published without recompilation. No deployment is performed.

How to revert

Revert this commit and restore affected callers to their prior workflow revision.

Checklist

  • I have performed a self-review of my own code
  • Tests have been added/updated and pass (if needed)
  • Documentation has been updated (if needed)

@lusu007
lusu007 merged commit c38f5b1 into main Nov 1, 2026
3 checks passed
@lusu007
lusu007 deleted the feat/reusable-native-gradle branch November 1, 2026 22:17
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