Skip to content

feat(helm): add Artifact Hub distribution and multi-arch builds#80

Open
Sanjaykumar-2005 wants to merge 15 commits into
optiqor:mainfrom
Sanjaykumar-2005:feat/distribution-multi-arch
Open

feat(helm): add Artifact Hub distribution and multi-arch builds#80
Sanjaykumar-2005 wants to merge 15 commits into
optiqor:mainfrom
Sanjaykumar-2005:feat/distribution-multi-arch

Conversation

@Sanjaykumar-2005

Copy link
Copy Markdown

Changes:

  • Helm Distribution: Added helm-release.yml workflow to publish charts to gh-pages on tag push.
  • Artifact Hub: Added artifacthub-repo.yml and required annotations to Chart.yaml.
  • Multi-Arch Support: Updated ci.yml to build Docker images for amd64 and arm64 via QEMU.
  • Documentation: Added a dedicated Helm chart README and updated the main README with helm repo add instructions.

Verification:

  • helm lint passed via Docker.
  • Local Docker build initiated successfully.

Fixes #36

… builds

- Added helm-release.yml workflow for automated chart publishing.
- Added artifacthub-repo.yml and Chart.yaml annotations for Artifact Hub.
- Updated ci.yml for multi-arch (amd64/arm64) Docker builds.
- Added Helm chart README and updated main README instructions.

Signed-off-by: Sanjaykumar.M <sanjaykumar.m@example.com>
@github-actions

Copy link
Copy Markdown

🚀 First PR — welcome aboard!

A few things to expect:

  1. CI: every PR runs build + race tests + lint + (eventually) the kernel matrix. If something fails, the log will tell you exactly which gate.
  2. DCO: every commit needs Signed-off-by:git commit -s adds it automatically.
  3. Conventional Commits: PR titles like feat(doctor): add new rule or fix(bpf): handle X. We squash-merge by default.
  4. Review: a maintainer will review within 72 hours. Suggestions are conversations, not orders — push back if something doesn't fit your context.

If you get stuck, reply here or jump to Discussions. We want this PR to land.

@github-actions github-actions Bot added documentation Improvements or additions to documentation testing Tests and test coverage area/k8s Kubernetes integration labels May 16, 2026
@Sanjaykumar-2005 Sanjaykumar-2005 changed the title Publish the Kerno Helm chart to Artifact Hub and enable multi-arch container images. feat(helm): add Artifact Hub distribution and multi-arch builds May 16, 2026
btwshivam and others added 4 commits May 17, 2026 02:51
…ar links

Signed-off-by: btwshivam <shivam200446@gmail.com>
Signed-off-by: btwshivam <shivam200446@gmail.com>
Signed-off-by: btwshivam <shivam200446@gmail.com>
Adds a boolean flag to the doctor command to hide the ASCII art logo and metadata. This improves readability in CI/CD logs and automated environments. Includes updated PrettyRenderer logic and new unit tests.

Signed-off-by: Shine Srivastava <shinesri.code@gmail.com>

@btwshivam btwshivam left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

three things need real values before this can merge: artifacthub-repo.yml ships with placeholder uuid + email, the chart icon points at demo.gif (animated, megabytes, not a logo), and the post-release step cps a file that doesn't exist on gh-pages so it silently no-ops.

Comment thread artifacthub-repo.yml Outdated
@@ -0,0 +1,6 @@
# Artifact Hub repository metadata
# https://artifacthub.io/docs/topics/repositories/helm-charts/
repositoryID: 00000000-0000-0000-0000-000000000000 # Placeholder: update with real ID after manual submission

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

placeholder uuid will be rejected by Artifact Hub on submission. the comment says update with real ID after manual submission but as written the YAML is unusable. the email at line 5 is also a placeholder (btwshivam@example.com). either submit to Artifact Hub first, plug the real repositoryID in before merging, or drop the file entirely until you're ready to publish.

Comment thread deploy/helm/kerno/Chart.yaml Outdated
artifacthub.io/maintainers: |
- name: Shivam Kumar
github: btwshivam
icon: https://raw.githubusercontent.com/optiqor/kerno/main/demo.gif # Using demo.gif as a placeholder until a logo is available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

demo.gif is an animated multi-megabyte recording of the CLI. Artifact Hub and Helm UIs render this as the chart logo, sized down. an animated GIF is wrong for that use, and the file is large enough to slow page loads. either commit a small static PNG/SVG at deploy/helm/kerno/icon.png and point at the raw GitHub URL, or drop the icon: line until a real logo exists.

Comment thread .github/workflows/helm-release.yml Outdated
- name: Push Artifact Hub metadata
run: |
git checkout gh-pages
cp .github/artifacthub-repo.yml ./artifacthub-repo.yml || cp artifacthub-repo.yml ./artifacthub-repo.yml || true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this whole step silently no-ops. by the time git checkout gh-pages ran on line 43, the working tree is gh-pages content. the root artifacthub-repo.yml from main is gone, so both cp commands fail and || true swallows it. stash the file from main before switching branches:

FILE=$(mktemp)
cp artifacthub-repo.yml "$FILE"
git checkout gh-pages
cp "$FILE" ./artifacthub-repo.yml

or add a separate job that runs after release-chart and uses actions/checkout with ref: gh-pages and a second checkout for the file.

@btwshivam btwshivam left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

helm-release.yml's 'push artifact hub metadata' step never copies the file because git checkout gh-pages runs before the cp. plus the chart repo URL diverges from #36's kerno-charts, the artifacthub.io/maintainers annotation duplicates the standard maintainers: field, and artifacthub-repo.yml ships a placeholder UUID and fake email.

Comment thread .github/workflows/helm-release.yml Outdated
- name: Push Artifact Hub metadata
run: |
git checkout gh-pages
cp .github/artifacthub-repo.yml ./artifacthub-repo.yml || cp artifacthub-repo.yml ./artifacthub-repo.yml || true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this step never copies anything. git checkout gh-pages at line 43 replaces the working tree with gh-pages content, so neither .github/artifacthub-repo.yml nor ./artifacthub-repo.yml exists by the time cp runs. both attempts fail silently (|| true), the if [ -f ] evaluates false, and artifacthub-repo.yml never lands in gh-pages. fix: save it before the checkout.

cp artifacthub-repo.yml /tmp/ahr.yml
git checkout gh-pages
cp /tmp/ahr.yml ./artifacthub-repo.yml
git add artifacthub-repo.yml
git commit -m 'chore: update artifacthub-repo.yml' && git push origin gh-pages

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done this change

Comment thread artifacthub-repo.yml Outdated
@@ -0,0 +1,6 @@
# Artifact Hub repository metadata
# https://artifacthub.io/docs/topics/repositories/helm-charts/
repositoryID: 00000000-0000-0000-0000-000000000000 # Placeholder: update with real ID after manual submission

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

placeholder UUID and btwshivam@example.com will both be rejected by artifact hub on first crawl. the real repositoryID is generated by artifact hub when you submit the repo through their UI, so either fill it in after submission or drop this file from the PR until then. the email also needs to be the maintainer's real address, not @example.com.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

completed this

Comment thread deploy/helm/kerno/Chart.yaml Outdated
artifacthub.io/signKey: ""
artifacthub.io/containsSecurityUpdates: "false"
artifacthub.io/prerelease: "false"
artifacthub.io/maintainers: |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this duplicates the standard maintainers: field at line 10. artifact hub auto-reads maintainers: from Chart.yaml, so the annotation is redundant. it also uses github: as the username key, but the standard maintainers: schema uses url: (line 12 already has url: https://github.com/btwshivam). drop the annotation, keep the standard field.

Comment thread deploy/helm/kerno/Chart.yaml Outdated
artifacthub.io/maintainers: |
- name: Shivam Kumar
github: btwshivam
icon: https://raw.githubusercontent.com/optiqor/kerno/main/demo.gif # Using demo.gif as a placeholder until a logo is available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

points the chart logo at a 985K animated demo GIF (your own comment calls it a placeholder). artifact hub renders the icon prominently next to the chart name. either drop the icon: line so artifact hub shows a default, or land a real square static logo first.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

completed

Comment thread README.md Outdated

```bash
helm install kerno ./deploy/helm/kerno \
helm repo add kerno https://optiqor.github.io/kerno

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue #36 specifies https://optiqor.github.io/kerno-charts (a dedicated chart repo). this PR points to https://optiqor.github.io/kerno (main repo's gh-pages). the deviation matters because gh-pages on the main repo is often reserved for the project website. sharing it with chart-releaser indexes can cause conflicts later. confirm which URL is canonical, then update this README, helm-release.yml, and the artifact hub submission to match.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

completed

@github-actions github-actions Bot added the level:advanced 200+ lines or 6+ files (auto-applied) label May 17, 2026
Kshitij-K-Singh and others added 5 commits May 23, 2026 05:59
…qor#55)

* feat(cli): add shell completion for bash, zsh, fish, powershell
- Add kerno completion <bash|zsh|fish|powershell> command
- Auto-detect shell in install.sh and install completion
- Register --output flag values (pretty/json) for tab completion
- Update README with shell-specific setup instructions
- Mark completion command as hidden (plumbing, not feature)

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

* feat(cli): add shell completion for bash, zsh, fish, powershell
- Add kerno completion <bash|zsh|fish|powershell> command
- Auto-detect shell in install.sh and install completion
- Register --output flag values (pretty/json) for tab completion
- Update README with shell-specific setup instructions
- Use system-wide zsh path (/usr/local/share/zsh/site-functions)
- Show completion in --help (not hidden)

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

* fix(install): use system wide fish completion path

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

* fix(cli,install): use cmd.OutOrStdout() and explicit kerno path

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

---------

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>
* feat(cli): add no-color support for CLI output

* fix: address PR review comments

* refactor(cli): remove redundant NO_COLOR handling

Signed-off-by: Vidheendu Chaturvedi <vidheendu01@gmail.com>

* chore: rerun ci

* fix(cli): format doctor renderer

Signed-off-by: Vidheendu Chaturvedi <vidheendu01@gmail.com>

---------

Signed-off-by: Vidheendu Chaturvedi <vidheendu01@gmail.com>
* feat(cli): add man page generation via make manpage

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

* fix(manpages): removed dead code

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>

---------

Signed-off-by: Kshitij-K-Singh <kshitijk.singh.min24@itbhu.ac.in>
…oup (optiqor#88)

Bumps the actions group with 1 update: [actions/github-script](https://github.com/actions/github-script).


Updates `actions/github-script` from 7 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v7...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

@Sanjaykumar-2005 Sanjaykumar-2005 left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completed changes

… builds

- Added helm-release.yml workflow for automated chart publishing.
- Added artifacthub-repo.yml and Chart.yaml annotations for Artifact Hub.
- Updated ci.yml for multi-arch (amd64/arm64) Docker builds.
- Added Helm chart README and updated main README instructions.

Signed-off-by: Sanjaykumar.M <sanjaykumar.m@example.com>
@github-actions github-actions Bot added level:critical Touches BPF, security, or release surfaces (auto-applied) area/doctor Diagnostic engine and rules area/release Release tooling and packaging and removed level:advanced 200+ lines or 6+ files (auto-applied) labels May 24, 2026
@btwshivam

Copy link
Copy Markdown
Member

rebased the branch with main .. you added wamted others commits

@btwshivam btwshivam left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this branch merged main into itself (5501b86), so the diff balloons to ~24 files when 6 are real, and the merge silently reverts the shell-completion readme section from #55, which won't show in files-changed but lands on merge. rebase on main so the diff is just the helm work, then the inline notes.

## Installation

```bash
helm repo add kerno https://optiqor.github.io/kerno-charts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this tells users to add https://optiqor.github.io/kerno-charts, but helm-release.yml runs chart-releaser with charts_dir: deploy/helm against this repo, so the index publishes to this repo's gh-pages at https://optiqor.github.io/kerno, not a kerno-charts repo. as written helm repo add 404s. either publish to a separate optiqor/kerno-charts repo, or change the url here (and in README.md:121 and artifacthub-repo.yml) to optiqor.github.io/kerno.

Comment thread artifacthub-repo.yml
# 3. Artifact Hub will generate a repositoryID (UUID).
# 4. Uncomment and fill in the lines below, then open a PR.
#
# repositoryID: <uuid-generated-by-artifacthub>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

every line in this file is a comment, including repositoryID. as shipped it does nothing, Artifact Hub ownership isn't configured until a real repositoryID (or an owners block) is filled in. the PR says it adds the artifact hub config, but this is a placeholder. fill in the repositoryID, or say in the PR that hub registration is a follow-up.

- name: Push Artifact Hub metadata
run: |
cp artifacthub-repo.yml /tmp/ahr.yml
git checkout gh-pages

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

git checkout gh-pages here is fragile. chart-releaser-action pushes gh-pages over the api and doesn't leave a local gh-pages branch, so after a fresh checkout@v6 this either fails with pathspec gh-pages did not match or races chart-releaser's own push and hits a non-fast-forward. the job only runs on tag, so ci never exercised it. simpler: commit artifacthub-repo.yml to the gh-pages root once by hand, or use chart-releaser's own index/pages options instead of a manual checkout+push.

- kernel
- prometheus
- monitoring
apiVersion: v2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the whole file shows as changed, not just the new annotations, which means the line endings flipped (looks like CRLF). re-save as LF so the diff is only the annotations: block.

@btwshivam

Copy link
Copy Markdown
Member

any update?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/doctor Diagnostic engine and rules area/k8s Kubernetes integration area/release Release tooling and packaging documentation Improvements or additions to documentation level:critical Touches BPF, security, or release surfaces (auto-applied) testing Tests and test coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Distribution: publish Helm chart to Artifact Hub + multi-arch (amd64/arm64) container image

5 participants