83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: lint-test-helm
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches:
 | 
						|
      - main
 | 
						|
    paths:
 | 
						|
      - 'clusters/**'
 | 
						|
      - ! 'clusters/*/archive'
 | 
						|
 | 
						|
  pull_request:
 | 
						|
    branches:
 | 
						|
      - main
 | 
						|
    paths:
 | 
						|
      - 'clusters/**'
 | 
						|
      - ! 'clusters/*/archive'
 | 
						|
 | 
						|
jobs:
 | 
						|
  helm-lint:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      - name: Checkout
 | 
						|
        uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
          fetch-depth: 0
 | 
						|
 | 
						|
      - name: Check Branch Exists
 | 
						|
        id: check-branch-exists
 | 
						|
        uses: GuillaumeFalourd/branch-exists@v1.1
 | 
						|
        with:
 | 
						|
          branch: "origin/${{ github.base_ref }}"
 | 
						|
 | 
						|
      - name: Branch Does Not Exist
 | 
						|
        if: steps.check-branch-exists.outputs.exists == 'false'
 | 
						|
        run: echo "Branch origin/${{ github.base_ref }} was not found, likely already merged"
 | 
						|
 | 
						|
      - name: Set up Helm
 | 
						|
        if: steps.check-branch-exists.outputs.exists == 'true'
 | 
						|
        uses: azure/setup-helm@v4
 | 
						|
        with:
 | 
						|
          token: ${{ secrets.GITEA_TOKEN }}
 | 
						|
          version: latest
 | 
						|
 | 
						|
      - name: Lint Helm Chart
 | 
						|
        if: steps.check-branch-exists.outputs.exists == 'true'
 | 
						|
        run: |
 | 
						|
          set -e  # Exit immediately if a command exits with a non-zero status.
 | 
						|
 | 
						|
          TARGET_BRANCH="origin/${{ github.base_ref }}"
 | 
						|
          echo ">> Target branch for diff is: $TARGET_BRANCH"
 | 
						|
 | 
						|
          CHANGED_FILES=$(git diff --name-only "$TARGET_BRANCH" -- 'clusters/**')
 | 
						|
 | 
						|
          echo ">> Found changed files:"
 | 
						|
          echo "$CHANGED_FILES"
 | 
						|
 | 
						|
          # For each changed file, find its parent chart directory (the one with Chart.yaml).
 | 
						|
          # Then, create a unique list of those directories.
 | 
						|
          CHANGED_CHARTS=$(echo "$CHANGED_FILES" | while read -r file; do
 | 
						|
            dir=$(dirname "$file")
 | 
						|
            while [[ "$dir" != "." && ! -f "$dir/Chart.yaml" ]]; do
 | 
						|
              dir=$(dirname "$dir")
 | 
						|
            done
 | 
						|
            if [[ "$dir" != "." ]]; then
 | 
						|
              echo "$dir"
 | 
						|
            fi
 | 
						|
          done | sort -u)
 | 
						|
 | 
						|
          if [[ -z "$CHANGED_CHARTS" ]]; then
 | 
						|
            echo ">> Could not determine changed charts. This could happen if only files outside a chart were changed."
 | 
						|
            exit 0
 | 
						|
          fi
 | 
						|
 | 
						|
          echo ">> Running helm lint on changed charts:"
 | 
						|
          echo "$CHANGED_CHARTS"
 | 
						|
 | 
						|
          echo "$CHANGED_CHARTS" | while read -r chart; do
 | 
						|
            echo ">> Building dependency for "$chart" ..."
 | 
						|
            helm dependency build "$chart"
 | 
						|
            echo ">> Linting $chart..."
 | 
						|
            helm lint "$chart"
 | 
						|
          done
 |