#!/bin/bash # Автоматическая настройка CI/CD для AnsibleLab # Автор: Сергей Антропов # Сайт: https://devops.org.ru set -euo pipefail echo "🔧 Настройка CI/CD для AnsibleLab..." # Создание директории .github/workflows mkdir -p .github/workflows # Создание базового workflow для GitHub Actions echo "📝 Создание GitHub Actions workflow..." cat > .github/workflows/ansible-test.yml << 'EOF' name: Ansible Testing on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | pip install ansible ansible-lint ansible-galaxy collection install -r requirements.yml - name: Run lint run: make role lint test: runs-on: ubuntu-latest needs: lint strategy: matrix: preset: [minimal, default, performance] steps: - uses: actions/checkout@v4 - name: Setup Docker run: | sudo systemctl start docker sudo usermod -aG docker $USER - name: Run tests run: make role test ${{ matrix.preset }} deploy-check: runs-on: ubuntu-latest needs: [lint, test] if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: Check deployment run: make role deploy env: ANSIBLE_HOST_KEY_CHECKING: false EOF # Создание Azure DevOps pipeline echo "📝 Создание Azure DevOps pipeline..." cat > azure-pipelines.yml << 'EOF' trigger: - main pool: vmImage: 'ubuntu-latest' stages: - stage: Test jobs: - job: TestJob steps: - script: make role test EOF # Создание Jenkinsfile echo "📝 Создание Jenkinsfile..." cat > Jenkinsfile << 'EOF' pipeline { agent any stages { stage('Test') { steps { sh 'make role test' } } } } EOF # Создание GitLab CI echo "📝 Создание GitLab CI..." cat > .gitlab-ci.yml << 'EOF' stages: - test test: stage: test script: - make role test EOF echo "✅ CI/CD настроен"