{"id":29427517,"url":"https://github.com/evokomms/helm-deployment-action","last_synced_at":"2026-04-28T17:31:35.022Z","repository":{"id":296211231,"uuid":"991947969","full_name":"EvoKomms/helm-deployment-action","owner":"EvoKomms","description":"Gitbub Action to deploy through Helm charts with support for Github Variables for K8s configmaps and Secrets for K8s secrets","archived":false,"fork":false,"pushed_at":"2025-07-08T18:28:40.000Z","size":173,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-08T19:31:09.520Z","etag":null,"topics":["action","ci","ci-cd","cicd","cicd-helm","continuous-deployment","continuous-integration","helm","helm-deployment","kubernetes-deployment"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EvoKomms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-28T11:44:30.000Z","updated_at":"2025-07-08T18:28:44.000Z","dependencies_parsed_at":"2025-07-01T10:46:55.632Z","dependency_job_id":null,"html_url":"https://github.com/EvoKomms/helm-deployment-action","commit_stats":null,"previous_names":["korekomms/helm-deployment-action","evokomms/helm-deployment-action"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/EvoKomms/helm-deployment-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvoKomms%2Fhelm-deployment-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvoKomms%2Fhelm-deployment-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvoKomms%2Fhelm-deployment-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvoKomms%2Fhelm-deployment-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EvoKomms","download_url":"https://codeload.github.com/EvoKomms/helm-deployment-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvoKomms%2Fhelm-deployment-action/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264995725,"owners_count":23695024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","ci","ci-cd","cicd","cicd-helm","continuous-deployment","continuous-integration","helm","helm-deployment","kubernetes-deployment"],"created_at":"2025-07-12T13:09:03.469Z","updated_at":"2026-04-16T11:03:02.674Z","avatar_url":"https://github.com/EvoKomms.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helm Deployment Action\n\n[![⌛️ Build](https://github.com/KoreKomms/helm-deployment-action/actions/workflows/pr-checks.yml/badge.svg?branch=main)](https://github.com/KoreKomms/helm-deployment-action/actions/workflows/pr-checks.yml)\n\n\nGithub Action to deploy Helm Charts. Supports deployment of Github Variables and Github Secrets to Kubernetes as ConfigMaps and Secrets respectively. This action also support custom environment variables.\n\n## Helm Chart Format\n\nThe `values.yaml` needs to have variables for configuring secrets and configmaps. These variable names can be specified in the action inputs.\n\n```yml\nconfig: []\nsecrets: []\nenvVars: []\n```\n\nBoth config and secrets must be array of objects with 2 fields:\n* `key`\n* `value`\n\nEnvironment variables must be of array of objects with 2 fields:\n* `name`\n* `value`\n\nThe corresponding configmap.yaml\n\n```yml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ .Release.Name }}-configmap\ndata:\n  {{- range .Values.config }}\n  {{ .key | quote }}: {{ .value | quote }}\n  {{- end }}\n```\n\nThe corresponding secrets.yaml\n\n```yml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ .Release.Name }}-secret\ntype: Opaque\ndata:\n  {{- range .Values.secrets }}\n  {{ .key | quote }}: {{ .value | b64enc | quote }}\n  {{- end }}\n```\n\nA snippet of the corresponding deployment.yaml\n\n```yml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"auth-service.fullname\" . }}\n  labels:\n    {{- include \"auth-service.labels\" . | nindent 4 }}\nspec:\n  .\n  .\n  .\n  template:\n    .\n    .\n    .\n    spec:\n      containers:\n        - name: {{ .Chart.name }}\n          env:\n          {{- range .Values.envVars }}\n          - name: {{ .name }}\n            value: {{ .value | quote }}\n          {{- end }}\n```\n\n## Github Variables \u0026 Secrets\n\n### Limitations\n\nThe environment name must always be in uppercase, because Github uppercases the variable and secret names.\n\nThe Github Variables and Secrets that need to be deployed must be in a particular format.\n\n* They must begin with `DEPLOYMENT_`\n* They can have a prefix (after the `DEPLOYMENT_`) - This is helpful if you have other secrets/variables that already begin with `DEPLOYMENT_`. For example, if the prefix is `PROJECTX`, the Secret/Variable name will need to start with `DEPLOYMENT_PROJECTX_`.\n* They can specify the deployment environment. You have the ability to use the same action for deploying to different environments. This part will be useful in that case. For example, for DEV environment specific Secrets/Variables, the name will then need to begin with `DEPLOYMENT_PROJECTX_DEV_`\n* The rest of the name can be anything, based on your readability.\n* The values will need to be in a very specific format too. They will need to be a Json object with 3 fields\n  * `key` - The secret/Config key\n  * `value` - The secret/Config value\n  * `chart` - The name of the Helm chart (or deployment, if the chart name is different from the deployment name), for which the secret/variable is applicable\n\nAn example value can be something like this:\n\n```json\n{ \"key\": \"db.username\", \"value\": \"postgres\", \"chart\": \"auth-service\" }\n```\n\n## Complex Values\n\nFor complex values, you'd want to not use the helm set variable from the command line directly. Instead, you can use the `useFile` field to create a temporary values yaml file, and use that Helm can use to deploy the variable for the chart.\n\n```json\n{ \"key\": \"db.config\", \"value\": \"{ \\\"host\\\": \\\"db.example.com\\\", \\\"port\\\": 5432, \\\"username\\\": \\\"postgres\\\", \\\"password\\\": \\\"mysecretpassword\\\" }\", \"useFile\": true, \"chart\": \"auth-service\" }\n```\n\n## Direct Variables\n\nThere may be situations where you'd want to pass direct helm variables, and set their values. For those, we can use the Github variables with a special prefix. For example, if the prefix is `HELMVAR`, the variable name will need to start with `DEPLOYMENT_\u003cprefix\u003e[_\u003cenvironment\u003e]_HELMVAR_`. An example value can be:\n\n```json\n{ \"key\": \"ingress.tls[0].hosts[0]\", \"value\": \"my-svc.example.com\", \"chart\": \"common-config\" }\n```\n\nThis will be passed as `--set ingress.tls[0].hosts[0]=my-svc.example.com` in the Helm command during deployment.\n\n## Global Direct variables\n\nTo support situations where the same direct variable needs to be passed to multiple (all) charts, the chart key is optional. This is only the case for direct helm variables, as opposed to configmaps and secrets, which might create confusion if the keys are the same across multiple configmaps and secrets. For direct variables on the other hand, if the chart key is not provided, the variable will be passed to all Helm charts during deployment.\n\nFor example:\n\n```json\n{ \"key\": \"baseSubdomain\", \"value\": \"prod-us-east1.example.com\" }\n```\n\n## Example Action\n\nThe following example action will deploy the `auth-service` Helm chart.\n\n```yml\nname: \"⌛️ Deploy Helm Chart\"\n\non:\n  workflow_dispatch:\n\njobs:\n  helm-deploy:\n    steps:\n      - name: Deploy\n        uses: KoreKomms/helm-deployment-action@v1\n        with:\n          helmChartUrl: oci://myregistry.example.com/mycompanyinc/auth-service\n          helmChartVersion: 1.2.3\n          registryUsername: myhelmregistryuser\n          registryPassword: mySuperSecretPassword # Don't use this as your password, dahoy!\n          # name: auth-service - This is not needed since this name is the same as the chart name in the helmChartUrl above.\n          githubSecretVariablePrefix: PROJECTX\n          deploymentEnvironment: DEV # Note that Github always uppercases the secret and variable names\n          namespace: project-x\n          helmConfigMapVariableName: config\n          helmSecretVariableName: secrets\n          helmEnvVarVariableName: envVars\n          kubeConfig: ${{ secrets.KUBE_CONFIG }}\n          secrets: ${{ secrets | toJson }}\n          variables: ${{ vars | toJson }}\n          environmentVariables: '{ \"NODE_OPTIONS\": \"--max-old-space-size=8192\", \"JAVA_OPTS\": \"-Xms128m -Xmx256g\", \"SPRING_PROFILES_ACTIVE\": \"k8s,dev\" }'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevokomms%2Fhelm-deployment-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevokomms%2Fhelm-deployment-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevokomms%2Fhelm-deployment-action/lists"}