- Заменено название проекта во всех файлах проекта - Обновлены: * 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'
|
||
}
|
||
}
|
||
}
|