Skip to content

More talos bootstrap #2712

More talos bootstrap

More talos bootstrap #2712

---
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: "Helm Repository Sync"
on:
pull_request:
branches: ["main"]
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
env:
HOMEBREW_NO_ANALYTICS: "1"
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
any_changed: ${{ steps.changed-files.outputs.any_changed }}
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Get Changed Files
id: changed-files
uses: JJGadgets/tj-actions-changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b
with:
files: |
**/helmrelease.yaml
**/helm-values.yaml
helm-repository-sync:
name: Helm Repository Sync
needs: pre-job
runs-on: gha-runner-scale-set
if: ${{ needs.pre-job.outputs.any_changed == 'true' }}
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
# - name: Setup Homebrew
# uses: Homebrew/actions/setup-homebrew@master
# - name: Setup Workflow Tools
# run: brew install fluxcd/tap/flux
- name: Write kubeconfig
id: kubeconfig
uses: timheuer/base64-to-file@adaa40c0c581f276132199d4cf60afa07ce60eac # v1
with:
encodedString: ${{ secrets.KUBECONFIG }}
fileName: kubeconfig
- name: Get Changed Files
id: changed-files
uses: JJGadgets/tj-actions-changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b
with:
files: |
**/helmrelease.yaml
**/helm-values.yaml
safe_output: false
- name: Sync Helm Repository
env:
KUBECONFIG: ${{ steps.kubeconfig.outputs.filePath }}
shell: bash
run: |
declare -a repos=()
for f in ${{ steps.changed-files.outputs.all_changed_and_modified_files }}; do
cluster_name=$(echo "${f}" | awk -F'/' '{print $2}')
repo_namespace="$(yq -r '.spec.chart.spec.sourceRef.namespace' "${f}")"
repo_name="$(yq -r '.spec.chart.spec.sourceRef.name' "${f}")"
repos+=("${cluster_name}:${repo_namespace}:${repo_name}")
done
mapfile -t repos < <(printf "%s\n" "${repos[@]}" | sort -u)
for r in "${repos[@]}"; do
IFS=':' read -r cluster_name repo_namespace repo_name <<< "${r}"
flux \
--context ${cluster_name} \
--namespace ${repo_namespace} \
reconcile source helm ${repo_name} || true
done
helm-repository-sync-status:
needs: helm-repository-sync
name: Helm Repository Sync Success
runs-on: ubuntu-latest
if: ${{ always() }}
permissions: {}
steps:
- name: Any jobs failed?
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
- name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"