Files
DevOpsLab/scripts/setup-cicd.sh
Сергей Антропов d8e1052e7b refactor: переименование проекта AnsibleLab -> DevOpsLab
- Заменено название проекта во всех файлах проекта
- Обновлены:
  * README.md
  * Makefile
  * Все файлы документации (.md)
  * CI/CD конфигурации (Jenkins, GitLab, GitHub Actions, Azure DevOps)
  * Скрипты (setup-cicd.sh, test-custom-images.sh)
  * Файлы конфигурации Molecule
- Изменена переменная PROJECT_NAME в Makefile на devops-lab
- Docker образы inecs/ansible-lab:* оставлены без изменений
  (чтобы не затрагивать существующие образы в Docker Hub)
2025-10-26 12:28:05 +03:00

104 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Автоматическая настройка CI/CD для DevOpsLab
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
set -euo pipefail
echo "🔧 Настройка CI/CD для DevOpsLab..."
# Создание директории .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 настроен"