infra-setup #2
							
								
								
									
										44
									
								
								.github/workflows/infra.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								.github/workflows/infra.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -11,6 +11,7 @@ on: | ||||
|     paths: | ||||
|       - infra/**-playbook.yaml | ||||
|       - .github/workflows/infra.yaml | ||||
|   fork: | ||||
|  | ||||
| jobs: | ||||
|   check: | ||||
| @@ -19,13 +20,6 @@ jobs: | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
|  | ||||
|       - name: Fetch PR base | ||||
|         if: github.event.pull_request | ||||
|         run: | | ||||
|           git fetch --no-tags --progress --no-recurse-submodules --depth=1 origin ${{ github.event.pull_request.base.sha }} | ||||
|  | ||||
|       - name: Setup Python | ||||
|         uses: actions/setup-python@v4 | ||||
| @@ -37,12 +31,34 @@ jobs: | ||||
|           pip3 install -r requirements.txt | ||||
|           ansible-galaxy collection install community.general | ||||
|  | ||||
|       - name: Get changed playbooks | ||||
|         id: changed-playbooks | ||||
|         run: | | ||||
|           git diff --name-only ${{ github.event.pull_request.base.sha }} HEAD | base64 | xargs -I {} echo "files_b64={}" >> "$GITHUB_OUTPUT" | ||||
|  | ||||
|       - name: Check modified playbooks | ||||
|         run: | | ||||
|           export FILES="${{ steps.changed-playbooks.outputs.files_b64 }}" | ||||
|           echo "Got changed files: '$(echo $FILES | base64 -d | xargs echo)'" | ||||
|           find . -wholename "*/infra/*-playbook.yaml" -type f -exec ansible-playbook --inventory ./inventory --check {} \; | ||||
|   deploy: | ||||
|     name: Deploy modified infrastructure | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
|        | ||||
|       - name: Setup Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
|           python-version: "3.11" | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           pip3 install -r requirements.txt | ||||
|           ansible-galaxy collection install community.general | ||||
|        | ||||
|       - name: Get changed files | ||||
|         id: files | ||||
|         uses: tj-actions/changed-files@v38 | ||||
|        | ||||
|       - name: Run changed playbooks | ||||
|         run: | | ||||
|           for file in ${{ steps.files.outputs.all_changed_files }}; do | ||||
|             ansible-playbook --inventory ./inventory "$file" | ||||
|           done | ||||
|   | ||||
| @@ -8,5 +8,6 @@ proxmox: | ||||
|             pve2.mgmt.home.local.koval.net: | ||||
|         managed: | ||||
|           hosts: | ||||
|             test-vm.mgmt.home.local.koval.net: | ||||
|         unmanaged: | ||||
|           hosts: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user