Acest curs explorează Jenkins, un instrument DevOps pentru automatizarea CI/CD.
Jenkins este un server open-source de automatizare care permite integrarea și livrarea continuă (CI/CD) a aplicațiilor software.
Pe Linux (Ubuntu/Debian), Jenkins poate fi instalat cu:
sudo apt update && sudo apt install openjdk-11-jdk -y
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update && sudo apt install jenkins -y
Pornirea și activarea Jenkins:
sudo systemctl start jenkins
sudo systemctl enable jenkins
Accesarea Jenkins în browser:
Jenkins rulează pe portul 8080. Se accesează la `http://localhost:8080` sau `http://IP-SERVER:8080`.
Prima dată când Jenkins este accesat, cere un cod de autentificare. Se obține rulând:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
După autentificare, se pot instala plugin-uri recomandate sau alese manual.
Pipeline-urile Jenkins definesc pașii de build, test și deployment.
Exemplu de Jenkinsfile pentru un pipeline simplu:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
Adăugarea pipeline-ului în Jenkins:
- Accesează Jenkins Dashboard: New Item: Pipeline
- Adaugă Jenkinsfile în repository-ul GitHub/GitLab
- Setează repository-ul în configurația pipeline-ului
Pentru rularea testelor în containere, Jenkins poate folosi Docker.
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
Exemplu de Jenkinsfile cu Docker:
pipeline {
agent {
docker { image 'python:3.9' }
}
stages {
stage('Test') {
steps {
sh 'python --version'
}
}
}
}
Jenkins poate livra aplicații în Kubernetes folosind `kubectl`.
Exemplu de Jenkinsfile cu deploy în Kubernetes:
pipeline {
agent any
environment {
KUBE_CONFIG = credentials('kubeconfig')
}
stages {
stage('Deploy to Kubernetes') {
steps {
sh 'kubectl apply -f k8s/deployment.yaml'
}
}
}
}
Jenkins poate fi configurat să declanșeze build-uri automat atunci când un commit este făcut pe GitHub/GitLab.
Exemplu de webhook GitHub pentru Jenkins:
- În GitHub: Settings: Webhooks: Add webhook
- Setează URL-ul către `http://JENKINS_URL/github-webhook/`
Pentru GitLab, activează Push Events Webhooks și setează URL-ul `http://JENKINS_URL/project/YOUR_PROJECT`.