مقدمه
Jenkins یک سرور اتوماسیون متنباز است که CI/CD را فعال میکند. برای تیمهای زیرساخت، Jenkins تست Ansible playbookها، Terraform planها و استقرارها را خودکار میکند.
نصب Jenkins
BASH
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.gpg
apt update && apt install jenkins openjdk-17-jdk
systemctl enable jenkins && systemctl start jenkins
# رمز عبور اولیه
cat /var/lib/jenkins/secrets/initialAdminPasswordJenkinsfile برای Ansible
GROOVY
pipeline {
agent any
stages {
stage('Syntax Check') {
steps {
sh 'ansible-playbook --syntax-check -i inventory/production site.yml'
}
}
stage('Dry Run') {
steps {
sh 'ansible-playbook -i inventory/production site.yml --check'
}
}
stage('Deploy') {
when { branch 'main' }
input { message "استقرار در تولید؟" }
steps {
sh 'ansible-playbook -i inventory/production site.yml'
}
}
}
}Pipeline برای Terraform
GROOVY
pipeline {
agent any
stages {
stage('Terraform Init') {
steps { sh 'terraform init -input=false' }
}
stage('Terraform Plan') {
steps { sh 'terraform plan -out=tfplan -input=false' }
}
stage('Terraform Apply') {
when { branch 'main' }
input { message "اعمال Terraform plan؟" }
steps { sh 'terraform apply -input=false tfplan' }
}
}
}خلاصه
- Jenkins انعطافپذیرترین ابزار CI/CD برای اتوماسیون زیرساخت است
- از Jenkinsfile (pipeline به عنوان کد) در مخزن خود استفاده کنید
- دروازههای تأیید قبل از استقرار در تولید اضافه کنید
- هرگز اسرار را در Jenkinsfileها hardcode نکنید
