79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
name: Application Deployment
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [ main ]
 | 
						|
    paths:
 | 
						|
      - 'configuration/**'
 | 
						|
      - 'containers/**'
 | 
						|
      - '.gitea/workflows/deploy.yml'
 | 
						|
  workflow_dispatch:
 | 
						|
    inputs:
 | 
						|
      environment:
 | 
						|
        description: 'Target environment'
 | 
						|
        required: true
 | 
						|
        default: 'dev'
 | 
						|
        type: choice
 | 
						|
        options:
 | 
						|
          - dev
 | 
						|
          - staging
 | 
						|
          - production
 | 
						|
 | 
						|
jobs:
 | 
						|
  ansible-check:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    name: Ansible Syntax Check
 | 
						|
    steps:
 | 
						|
      - name: Checkout
 | 
						|
        uses: actions/checkout@v4
 | 
						|
 | 
						|
      - name: Setup Python
 | 
						|
        uses: actions/setup-python@v4
 | 
						|
        with:
 | 
						|
          python-version: '3.11'
 | 
						|
 | 
						|
      - name: Install Ansible
 | 
						|
        run: |
 | 
						|
          pip install ansible ansible-core
 | 
						|
          ansible-galaxy collection install community.general
 | 
						|
          ansible-galaxy collection install ansible.posix
 | 
						|
          ansible-galaxy collection install community.docker          
 | 
						|
 | 
						|
      - name: Ansible syntax check
 | 
						|
        run: |
 | 
						|
          cd configuration
 | 
						|
          for playbook in playbooks/*/*.yml; do
 | 
						|
            if [ -f "$playbook" ]; then
 | 
						|
              echo "Checking $playbook"
 | 
						|
              ansible-playbook --syntax-check "$playbook"
 | 
						|
            fi
 | 
						|
          done          
 | 
						|
 | 
						|
  deploy:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    name: Deploy Applications
 | 
						|
    needs: ansible-check
 | 
						|
    steps:
 | 
						|
      - name: Checkout
 | 
						|
        uses: actions/checkout@v4
 | 
						|
 | 
						|
      - name: Setup Python
 | 
						|
        uses: actions/setup-python@v4
 | 
						|
        with:
 | 
						|
          python-version: '3.11'
 | 
						|
 | 
						|
      - name: Install Ansible
 | 
						|
        run: |
 | 
						|
          pip install ansible ansible-core
 | 
						|
          ansible-galaxy collection install community.general
 | 
						|
          ansible-galaxy collection install ansible.posix
 | 
						|
          ansible-galaxy collection install community.docker          
 | 
						|
 | 
						|
      - name: Deploy applications
 | 
						|
        run: |
 | 
						|
          cd configuration
 | 
						|
          ENV="${{ github.event.inputs.environment || 'dev' }}"
 | 
						|
          ansible-playbook -i "inventories/${ENV}/inventory.ini" playbooks/bootstrap/main.yml          
 | 
						|
        env:
 | 
						|
          ANSIBLE_HOST_KEY_CHECKING: False
 |