All checks were successful
semantic-release / release (push) Successful in 49s
102 lines
3.2 KiB
YAML
102 lines
3.2 KiB
YAML
name: Helm publish
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
chart-directory:
|
|
description: |
|
|
Root directory of the Helm chart.
|
|
Example: `charts/my-app`.
|
|
type: string
|
|
default: '.'
|
|
chart-version:
|
|
description: |
|
|
Chart version to publish (e.g., `1.2.3`).
|
|
If empty, the version from `Chart.yaml` is used.
|
|
type: string
|
|
default: ''
|
|
required: false
|
|
app-version:
|
|
description: |
|
|
Application version to embed in the chart (e.g., `1.2.3`).
|
|
If empty, the `appVersion` from `Chart.yaml` is used.
|
|
type: string
|
|
default: ''
|
|
required: false
|
|
oci-registry:
|
|
description: |
|
|
OCI registry to push the chart to.
|
|
Example: `harbor.example.com`.
|
|
type: string
|
|
required: true
|
|
repository:
|
|
description: |
|
|
Repository path within the OCI registry.
|
|
Example: `myorg/charts`.
|
|
type: string
|
|
required: true
|
|
helm-version:
|
|
description: |
|
|
Helm version to install.
|
|
Example: `v3.14.0`. Defaults to `latest`.
|
|
type: string
|
|
default: 'latest'
|
|
secrets:
|
|
OCI_REGISTRY_USERNAME:
|
|
description: 'Username for the OCI registry.'
|
|
required: true
|
|
OCI_REGISTRY_PASSWORD:
|
|
description: 'Password for the OCI registry.'
|
|
required: true
|
|
|
|
jobs:
|
|
publish:
|
|
name: Publish Helm chart
|
|
runs-on: ubuntu-custom
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Override chart version
|
|
if: ${{ inputs.chart-version != '' }}
|
|
run: |
|
|
sed -i "s/^version:.*/version: ${{ inputs.chart-version }}/" \
|
|
"${{ inputs.chart-directory }}/Chart.yaml"
|
|
echo "Chart version set to: ${{ inputs.chart-version }}"
|
|
|
|
- name: Override app version
|
|
if: ${{ inputs.app-version != '' }}
|
|
run: |
|
|
sed -i "s/^appVersion:.*/appVersion: \"${{ inputs.app-version }}\"/" \
|
|
"${{ inputs.chart-directory }}/Chart.yaml"
|
|
echo "App version set to: ${{ inputs.app-version }}"
|
|
|
|
- name: Update Helm dependencies
|
|
run: |
|
|
if grep -q '^dependencies:' "${{ inputs.chart-directory }}/Chart.yaml" 2>/dev/null; then
|
|
helm dependency update "${{ inputs.chart-directory }}"
|
|
fi
|
|
|
|
- name: Login to OCI registry
|
|
run: |
|
|
echo "${{ secrets.OCI_REGISTRY_PASSWORD }}" | \
|
|
helm registry login "${{ inputs.oci-registry }}" \
|
|
--username "${{ secrets.OCI_REGISTRY_USERNAME }}" \
|
|
--password-stdin
|
|
|
|
- name: Package chart
|
|
run: |
|
|
helm package "${{ inputs.chart-directory }}" --destination /tmp/helm-packages
|
|
ls -la /tmp/helm-packages/
|
|
|
|
- name: Push chart to OCI registry
|
|
run: |
|
|
for pkg in /tmp/helm-packages/*.tgz; do
|
|
echo "Pushing $pkg to oci://${{ inputs.oci-registry }}/${{ inputs.repository }}"
|
|
helm push "$pkg" "oci://${{ inputs.oci-registry }}/${{ inputs.repository }}"
|
|
done
|
|
|
|
- name: Logout from OCI registry
|
|
if: always()
|
|
run: helm registry logout "${{ inputs.oci-registry }}"
|