This project publishes binaries and a packaged Helm chart through GitHub Releases, plus container images through GitHub Container Registry (GHCR).
Docker Hub is optional. The default open-source release path does not require a Docker Hub account, namespace, access token, or repository secret.
-
Make sure GitHub CLI is logged in as the project owner:
gh auth status
Expected account:
Colvin-Y -
Keep the repository private while reviewing the initial open-source import. When ready to publish, change the repository visibility to Public from GitHub repository settings.
-
Leave GitHub Actions enabled. The workflows declare their own minimum token permissions:
- release workflow:
contents: write - docker workflow:
contents: read,packages: write
If the Docker workflow fails with a package permission error, check:
Repository Settings -> Actions -> General -> Workflow permissionsUse read and write workflow permissions when the repository policy blocks package publishing.
- release workflow:
-
After the first image is published, check the package under:
https://github.com/users/Colvin-Y/packages/container/package/kubernetes-ontologyPublic GHCR packages can be pulled without authentication. If the package is private, change the package visibility to Public before documenting it for external users.
Before tagging, run local validation from a disposable kind cluster and an explicit kubeconfig. Do not let release checks fall back to an ambient developer kubeconfig:
export KO_KIND_KUBECONFIG=/private/tmp/kubernetes-ontology-kind-kubeconfig
kind export kubeconfig --name kind --kubeconfig "${KO_KIND_KUBECONFIG}"
KUBECONFIG="${KO_KIND_KUBECONFIG}" make ci
kubectl --kubeconfig "${KO_KIND_KUBECONFIG}" get nodesThen run the live diagnostic smoke tests against that same kubeconfig.
Use semantic version tags:
git tag v0.1.5
git push origin v0.1.5Replace v0.1.5 with the release tag you are publishing.
Pushing the tag starts both workflows:
-
.github/workflows/release.ymlcreates a GitHub Release and uploads per-platform archives containingkubernetes-ontology(CLI),kubernetes-ontologyd(server),kubernetes-ontology-viewer, README files,QUICKSTART.md,CHANGELOG.md,AI_CONTRACT.md, the local config example, and a packaged Helm chart archive. -
.github/workflows/docker.ymlbuilds and pushes a multi-architecture image:ghcr.io/colvin-y/kubernetes-ontology:v0.1.5 ghcr.io/colvin-y/kubernetes-ontology:0.1.5 ghcr.io/colvin-y/kubernetes-ontology:latest
The Docker workflow also supports manual workflow_dispatch runs with an
explicit version input, which is useful for retrying image publishing.
Check the workflow runs:
gh run list --workflow Release --limit 5
gh run list --workflow Docker --limit 5Check the release assets:
gh release view v0.1.5Inspect one binary archive and the Helm chart archive when release packaging changes:
gh release download v0.1.5 --pattern 'kubernetes-ontology_v0.1.5_linux_amd64.tar.gz' --clobber
tar -tzf kubernetes-ontology_v0.1.5_linux_amd64.tar.gz | grep -E 'kubernetes-ontologyd$|kubernetes-ontology$|QUICKSTART.md|local/kubernetes-ontology.yaml.example'
gh release download v0.1.5 --pattern 'kubernetes-ontology-0.1.5.tgz' --clobber
helm show chart kubernetes-ontology-0.1.5.tgzPull the image:
docker pull ghcr.io/colvin-y/kubernetes-ontology:v0.1.5Deploy through Helm:
helm upgrade --install kubernetes-ontology ./charts/kubernetes-ontology \
--namespace kubernetes-ontology \
--create-namespace \
--set image.repository=ghcr.io/colvin-y/kubernetes-ontology \
--set image.tag=v0.1.5 \
--set cluster=your-logical-cluster \
--set contextNamespaces='{default,kube-system}'Expose the server locally:
kubectl -n kubernetes-ontology port-forward svc/kubernetes-ontology 18080:18080Query it with the release CLI:
kubernetes-ontology --server http://127.0.0.1:18080 --statusThe skill is distributed from the repository default branch, not from release archives. Keep marketplace pages pointed at the live repository path so users get the newest onboarding workflow:
https://github.com/Colvin-Y/kubernetes-ontology/tree/main/skills/kubernetes-ontology-access
For each release:
-
Keep
skills/kubernetes-ontology-access/SKILL.mdmetadata aligned with the release you are documenting. -
Push the skill and README changes to the default branch before refreshing marketplace entries.
-
Ensure GitHub repository topics include:
claude-skills claude-code-skill agent-skills codex-skills kubernetes devops troubleshootingWith an authenticated GitHub CLI:
gh repo edit Colvin-Y/kubernetes-ontology \ --add-topic claude-skills \ --add-topic claude-code-skill \ --add-topic agent-skills \ --add-topic codex-skills
-
Refresh the manually submitted registries:
https://skills.re/submit: submit the repository URL and selectskills/kubernetes-ontology-access.https://skillhub.pm/submit: submit as a Skill in the DevOps & Infrastructure category.
-
SkillsMP has no manual submit flow yet. It indexes GitHub daily, so verify after the next sync:
curl -fsS 'https://skillsmp.com/api/v1/skills/search?q=kubernetes-ontology-access&limit=10'
If you later want Docker Hub as an additional mirror:
-
Create a Docker Hub account and repository such as
colviny/kubernetes-ontology. -
Create a Docker Hub access token.
-
Add GitHub repository secrets:
DOCKERHUB_USERNAME DOCKERHUB_TOKEN -
Extend
.github/workflows/docker.ymlwith a seconddocker/login-actionstep and additionaldocker.io/...image tags.
Keep GHCR as the default path unless there is a specific reason to add the extra registry.