| --- |
| # SPDX-License-Identifier: Apache-2.0 |
| # Copyright 2026 The Linux Foundation |
| |
| name: voltha-helm-charts release |
| |
| # yamllint disable-line rule:truthy |
| on: |
| workflow_dispatch: |
| push: |
| branches: |
| - master |
| - voltha-* |
| |
| permissions: |
| contents: write |
| |
| env: |
| PUBLISH_URL: "charts.lfbroadband.org" |
| OLD_REPO_DIR: "cord-charts-repo" |
| NEW_REPO_DIR: "chart_repo" |
| SYNC_TARGET_USER: "jenkins" |
| SYNC_TARGET_SERVER: "static.lfbroadband.org" |
| |
| jobs: |
| publish-helm-repo: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout charts source |
| # yamllint disable-line rule:line-length |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| fetch-depth: 0 |
| |
| - name: Checkout published chart repository |
| # yamllint disable-line rule:line-length |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| repository: opencord/cord-charts-repo |
| token: ${{ secrets.CORD_CHARTS_REPO_TOKEN }} |
| path: ${{ env.OLD_REPO_DIR }} |
| fetch-depth: 0 |
| |
| - name: Checkout helm-repo-tools |
| # yamllint disable-line rule:line-length |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| repository: opencord/helm-repo-tools |
| path: helm-repo-tools |
| |
| - name: Set up Helm |
| uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1 |
| |
| - name: Add external Helm repositories |
| run: | |
| set -eu -o pipefail |
| helm repo add stable https://charts.helm.sh/stable |
| helm repo add rook-release https://charts.rook.io/release |
| helm repo add cord https://charts.lfbroadband.org |
| helm repo add elastic https://helm.elastic.co |
| helm repo add kiwigrid https://kokuwaio.github.io/helm-charts |
| |
| - name: Build/update chart repository index |
| run: ./helm-repo-tools/helmrepo.sh |
| |
| - name: Compute release version |
| id: version |
| run: echo "version=$(date -u +%Y%m%dT%H%M%SZ)" >> "$GITHUB_OUTPUT" |
| |
| - name: Commit, tag and push updated chart repository |
| id: publish |
| # Only commits when helmrepo.sh actually added/updated packages, and |
| # pushes both the commit and the date-based tag. |
| # yamllint disable-line rule:line-length |
| uses: stefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d # v7.2.0 |
| with: |
| repository: ${{ env.OLD_REPO_DIR }} |
| commit_message: >- |
| Update helm chart repository |
| commit_options: "--signoff" |
| commit_user_name: "VOLTHA Bot" |
| commit_user_email: "do-not-reply@opennetworking.org" |
| tagging_message: ${{ steps.version.outputs.version }} |
| |
| - name: Configure SSH access to static server |
| if: steps.publish.outputs.changes_detected == 'true' |
| env: |
| SSH_PRIVATE_KEY: ${{ secrets.STATIC_LFBB_JENKINS_SSH_KEY }} |
| run: | |
| set -eu |
| mkdir -p ~/.ssh |
| chmod 700 ~/.ssh |
| printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa |
| chmod 600 ~/.ssh/id_rsa |
| ssh-keyscan -H "$SYNC_TARGET_SERVER" >> ~/.ssh/known_hosts 2>/dev/null |
| |
| - name: Sync chart repository to static server |
| if: steps.publish.outputs.changes_detected == 'true' |
| run: | |
| set -eu -o pipefail |
| rsync -rvzh --delete-after --exclude=.git \ |
| "${OLD_REPO_DIR}/" \ |
| "${SYNC_TARGET_USER}@${SYNC_TARGET_SERVER}:/srv/sites/${PUBLISH_URL}/" |