- Заменено название проекта во всех файлах проекта - Обновлены: * 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)
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| // Jenkins Pipeline для DevOpsLab
 | ||
| // Автор: Сергей Антропов
 | ||
| // Сайт: https://devops.org.ru
 | ||
| 
 | ||
| pipeline {
 | ||
|     agent any
 | ||
|     
 | ||
|     environment {
 | ||
|         ANSIBLE_FORCE_COLOR = 'true'
 | ||
|         DOCKER_TLS_CERTDIR = ''
 | ||
|     }
 | ||
|     
 | ||
|     stages {
 | ||
|         stage('Checkout') {
 | ||
|             steps {
 | ||
|                 checkout scm
 | ||
|             }
 | ||
|         }
 | ||
|         
 | ||
|         // Стадия 1: Lint проверка
 | ||
|         stage('🔍 Lint Check') {
 | ||
|             steps {
 | ||
|                 sh '''
 | ||
|                     echo "🔍 Проверка синтаксиса ролей..."
 | ||
|                     pip install --upgrade pip
 | ||
|                     pip install ansible ansible-lint
 | ||
|                     ansible-galaxy collection install -r requirements.yml
 | ||
|                     make role lint
 | ||
|                 '''
 | ||
|             }
 | ||
|             post {
 | ||
|                 always {
 | ||
|                     archiveArtifacts artifacts: '.ansible-lint', allowEmptyArchive: true
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         
 | ||
|         // Стадия 2: Тестирование
 | ||
|         stage('🧪 Role Testing') {
 | ||
|             parallel {
 | ||
|                 stage('Test Minimal') {
 | ||
|                     steps {
 | ||
|                         sh '''
 | ||
|                             echo "🧪 Тестирование с preset: minimal"
 | ||
|                             sudo apt-get update
 | ||
|                             sudo apt-get install -y docker.io make
 | ||
|                             sudo systemctl start docker
 | ||
|                             sudo usermod -aG docker $USER
 | ||
|                             make docker setup-builder
 | ||
|                             make docker build
 | ||
|                             make role test minimal
 | ||
|                         '''
 | ||
|                     }
 | ||
|                 }
 | ||
|                 stage('Test Default') {
 | ||
|                     steps {
 | ||
|                         sh '''
 | ||
|                             echo "🧪 Тестирование с preset: default"
 | ||
|                             sudo apt-get update
 | ||
|                             sudo apt-get install -y docker.io make
 | ||
|                             sudo systemctl start docker
 | ||
|                             sudo usermod -aG docker $USER
 | ||
|                             make docker setup-builder
 | ||
|                             make docker build
 | ||
|                             make role test default
 | ||
|                         '''
 | ||
|                     }
 | ||
|                 }
 | ||
|                 stage('Test Performance') {
 | ||
|                     steps {
 | ||
|                         sh '''
 | ||
|                             echo "🧪 Тестирование с preset: performance"
 | ||
|                             sudo apt-get update
 | ||
|                             sudo apt-get install -y docker.io make
 | ||
|                             sudo systemctl start docker
 | ||
|                             sudo usermod -aG docker $USER
 | ||
|                             make docker setup-builder
 | ||
|                             make docker build
 | ||
|                             make role test performance
 | ||
|                         '''
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         
 | ||
|         // Стадия 3: Деплой (только для main ветки)
 | ||
|         stage('🚀 Deploy Check') {
 | ||
|             when {
 | ||
|                 branch 'main'
 | ||
|             }
 | ||
|             steps {
 | ||
|                 sh '''
 | ||
|                     echo "🚀 Проверка развертывания (dry-run)..."
 | ||
|                     pip install --upgrade pip
 | ||
|                     pip install ansible ansible-lint
 | ||
|                     ansible-galaxy collection install -r requirements.yml
 | ||
|                     
 | ||
|                     mkdir -p inventory
 | ||
|                     cat > inventory/hosts.ini << EOF
 | ||
|                     [test_servers]
 | ||
|                     localhost ansible_connection=local
 | ||
|                     
 | ||
|                     [all:vars]
 | ||
|                     ansible_python_interpreter=python3
 | ||
|                     EOF
 | ||
|                     
 | ||
|                     make role deploy
 | ||
|                 '''
 | ||
|             }
 | ||
|             post {
 | ||
|                 always {
 | ||
|                     archiveArtifacts artifacts: 'deployment.log', allowEmptyArchive: true
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
|     
 | ||
|     post {
 | ||
|         always {
 | ||
|             archiveArtifacts artifacts: 'molecule/default/.molecule/**/*', allowEmptyArchive: true
 | ||
|             publishTestResults testResultsPattern: 'molecule/default/.molecule/reports/junit.xml'
 | ||
|         }
 | ||
|         
 | ||
|         success {
 | ||
|             echo '✅ Все проверки пройдены успешно!'
 | ||
|             echo '🔍 Lint: Success'
 | ||
|             echo '🧪 Test: Success'
 | ||
|             echo '🚀 Deploy: Success'
 | ||
|         }
 | ||
|         
 | ||
|         failure {
 | ||
|             echo '❌ Проверки не пройдены!'
 | ||
|             echo '🔍 Lint: Failed'
 | ||
|             echo '🧪 Test: Failed'
 | ||
|             echo '🚀 Deploy: Failed'
 | ||
|         }
 | ||
|     }
 | ||
| }
 |