Skip to content

feat(xnat): install plugins from S3 (per-plugin source:s3 + s3.syncPrefix)#32

Merged
kathrynalpert merged 3 commits into
mainfrom
feat/xnat-s3-plugin-install
Jun 24, 2026
Merged

feat(xnat): install plugins from S3 (per-plugin source:s3 + s3.syncPrefix)#32
kathrynalpert merged 3 commits into
mainfrom
feat/xnat-s3-plugin-install

Conversation

@kathrynalpert

Copy link
Copy Markdown
Contributor

What

Adds an S3 source to the chart's plugin-installer seam so a deployer can stage plugin jars to a bucket and have them pulled in-cluster by the AWS CLI using the pod's IRSA role — no registry/credentials in the cluster.

  • source: s3 (per plugin) → aws s3 cp <uri>; URI defaults to s3://<pluginInstaller.s3.bucket>/<prefix>/<target> (per-plugin s3Uri overrides).
  • pluginInstaller.s3.syncPrefix: true → one init container copies the whole s3://<bucket>/<prefix>/ tree into the plugins dir (no per-plugin list).

New values: pluginInstaller.s3.{image,bucket,prefix,region,syncPrefix} (image defaults to public.ecr.aws/aws-cli/aws-cli).

Why

Useful for any deployer who builds/stages plugin jars to object storage (e.g. a release pipeline) and wants the test/runtime cluster to pull the exact staged bytes via IRSA rather than resolve from Maven/registries at boot.

Compatibility

Additive. The existing coordinates / url / file source forms and the OCI image form render unchanged; the new init containers only appear when source: s3 / syncPrefix are set. Verified with helm lint + helm template (image form byte-identical to baseline).

🤖 Generated with Claude Code

@kathrynalpert kathrynalpert force-pushed the feat/xnat-s3-plugin-install branch from b5735d4 to 29fa0a6 Compare June 24, 2026 02:30
Add an S3 source to the plugin-installer seam so a deployer can stage plugin
jars to a bucket and have them pulled in-cluster with the AWS CLI (pod IRSA
role), no registry/credentials required:

- per-plugin `source: s3` -> `aws s3 cp <uri>` (uri defaults to
  s3://<pluginInstaller.s3.bucket>/<prefix>/<target>, or per-plugin s3Uri)
- `pluginInstaller.s3.syncPrefix: true` -> one init container copies the whole
  s3://<bucket>/<prefix>/ tree into the plugins dir (no per-plugin list)

Coordinates/url/file source forms and the image form are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andrey-embarklabs and others added 2 commits June 23, 2026 23:24
- Chart.yaml 2.0.0 -> 2.2.0: the version must exceed the highest published
  tag (xnat-2.1.0) or chart-releaser cuts no new tag on merge, leaving nothing
  for a consumer to pin the s3 plugin-install feature to.
- syncPrefix: make pluginInstaller.s3.prefix required. An empty prefix made
  'aws s3 cp --recursive s3://<bucket>//' copy the WHOLE bucket into the
  plugins dir; now it fails fast at render.
@kathrynalpert kathrynalpert merged commit ecf1178 into main Jun 24, 2026
4 checks passed
@andrey-embarklabs andrey-embarklabs deleted the feat/xnat-s3-plugin-install branch June 24, 2026 15:41
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.

2 participants