143 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
| name: Go
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches: [ main ]
 | |
|     paths-ignore: [ '**.md', '**/docs/**' ]
 | |
|   pull_request:
 | |
|     branches: [ main ]
 | |
|     paths-ignore: [ '**.md', '**/docs/**' ]
 | |
| 
 | |
| jobs:
 | |
|   lint:
 | |
|     runs-on: ubuntu-latest
 | |
|     timeout-minutes: 10
 | |
|     steps:
 | |
|       - uses: actions/checkout@v5
 | |
|       - uses: actions/setup-go@v6
 | |
|         with:
 | |
|           go-version-file: go.mod
 | |
|           cache: false
 | |
|       - uses: golangci/golangci-lint-action@v8
 | |
|         with:
 | |
|           version: v2.1.6
 | |
| 
 | |
|   tests:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - uses: actions/checkout@v5
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
|       - uses: actions/setup-go@v6
 | |
|         with:
 | |
|           go-version-file: go.mod
 | |
|       - name: Build
 | |
|         run: make build build-test-tools
 | |
|       - name: Test
 | |
|         run: make check test
 | |
|       - name: Archive built binaries
 | |
|         run: tar -cvf built-binaries.tar helmfile diff-yamls dyff
 | |
|       - uses: actions/upload-artifact@v4
 | |
|         with:
 | |
|           name: built-binaries-${{ github.run_id }}
 | |
|           path: built-binaries.tar
 | |
|           retention-days: 1
 | |
|       - name: Display built binaries
 | |
|         run: ls -l helmfile diff-yamls dyff
 | |
| 
 | |
|   integration_tests:
 | |
|     needs: tests
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       matrix:
 | |
|         include:
 | |
|           # Helm maintains the latest minor version only and therefore each Helmfile version supports 2 Helm minor versions.
 | |
|           # That's why we cover only 2 Helm minor versions in this matrix.
 | |
|           # See https://github.com/helmfile/helmfile/pull/286#issuecomment-1250161182 for more context.
 | |
|           - helm-version: v3.17.4
 | |
|             kustomize-version: v5.2.1
 | |
|             plugin-secrets-version: 4.6.5
 | |
|             plugin-diff-version: 3.11.0
 | |
|             extra-helmfile-flags: ''
 | |
|           - helm-version: v3.17.4
 | |
|             kustomize-version: v5.4.3
 | |
|             # We assume that the helm-secrets plugin is supposed to
 | |
|             # work with the two most recent helm minor versions.
 | |
|             # Once it turned out to be not practically true,
 | |
|             # we will mark this combination as failable,
 | |
|             # and instruct users to upgrade helm and helm-secrets at once.
 | |
|             plugin-secrets-version: 4.6.5
 | |
|             plugin-diff-version: 3.12.5
 | |
|             extra-helmfile-flags: ''
 | |
|           - helm-version: v3.18.6
 | |
|             kustomize-version: v5.2.1
 | |
|             plugin-secrets-version: 4.6.5
 | |
|             plugin-diff-version: 3.11.0
 | |
|             extra-helmfile-flags: ''
 | |
|           - helm-version: v3.18.6
 | |
|             kustomize-version: v5.4.3
 | |
|             plugin-secrets-version: 4.6.5
 | |
|             plugin-diff-version: 3.12.5
 | |
|             extra-helmfile-flags: ''
 | |
|           # In case you need to test some optional helmfile features,
 | |
|           # enable it via extra-helmfile-flags below.
 | |
|           - helm-version: v3.18.6
 | |
|             kustomize-version: v5.4.3
 | |
|             plugin-secrets-version: 4.6.5
 | |
|             plugin-diff-version: 3.12.5
 | |
|             extra-helmfile-flags: '--enable-live-output'
 | |
|     steps:
 | |
|       - uses: actions/checkout@v5
 | |
|       - uses: actions/setup-go@v6
 | |
|         with:
 | |
|           go-version-file: go.mod
 | |
| 
 | |
|       - uses: actions/download-artifact@v5
 | |
|         with:
 | |
|           name: built-binaries-${{ github.run_id }}
 | |
|       - name: install semver
 | |
|         run: go install github.com/ffurrer2/semver/v2/cmd/semver@latest
 | |
|       - name: Extract tar to get built binaries
 | |
|         run: tar -xvf built-binaries.tar
 | |
|       - name: Display built binaries
 | |
|         run: ls -l helmfile diff-yamls dyff
 | |
| 
 | |
|       - name: Install test dependencies
 | |
|         env:
 | |
|           HELM_VERSION: ${{ matrix.helm-version }}
 | |
|           KUSTOMIZE_VERSION: ${{ matrix.kustomize-version }}
 | |
|         run: make -C .github/workflows helm vault sops kustomize
 | |
|       - name: Start minikube
 | |
|         uses: medyagh/setup-minikube@latest
 | |
|         with:
 | |
|           kubernetes-version: v1.33.1 
 | |
|       - name: Execute integration tests
 | |
|         run: make integration
 | |
|         env:
 | |
|           HELM_SECRETS_VERSION: ${{ matrix.plugin-secrets-version }}
 | |
|           HELM_DIFF_VERSION: ${{ matrix.plugin-diff-version }}
 | |
|           HELMFILE_HELM3: 1
 | |
|           TERM: xterm
 | |
|           EXTRA_HELMFILE_FLAGS: ${{ matrix.extra-helmfile-flags }}
 | |
| 
 | |
|   e2e_tests:
 | |
|     needs: tests
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - uses: actions/checkout@v5
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
|       - uses: actions/download-artifact@v5
 | |
|         with:
 | |
|           name: built-binaries-${{ github.run_id }}
 | |
|       - name: Extract tar to get built binaries
 | |
|         run: tar -xvf built-binaries.tar
 | |
|       - name: Display built binaries
 | |
|         run: ls -l helmfile diff-yamls dyff
 | |
|       - name: Install package
 | |
|         run: sudo apt-get -y install expect
 | |
|       - name: Run helmfile init
 | |
|         run: bash test/e2e/helmfile-init/init_linux.sh
 | |
|         env:
 | |
|           TERM: xterm
 |