Jenkins Yedekleme ve Geri Yükleme

Jenkins yapılandırmasını, job'larını ve plugin'lerini yedekleyen ve geri yükleyen script.

Yayınlanma: 06.05.2024

Detaylı Bilgi

Bu script, Jenkins CI/CD sunucusunun yapılandırmasını, job'larını ve plugin'lerini yedekler ve geri yükler. Jenkins verilerinin güvenliğini sağlar.

Script Ne İşe Yarar?

Bu script, Jenkins yedekleme ve geri yükleme işlemlerini yapar:

  • Jenkins home dizinini yedekler
  • Job yapılandırmalarını yedekler
  • Plugin'leri yedekler
  • Yapılandırma dosyalarını yedekler
  • Yedekten geri yükleme yapar

Neden Kullanmalısınız?

Jenkins yedekleme, CI/CD süreçlerinin güvenliği için kritiktir:

  • Disaster Recovery: Sunucu çökmesi durumunda hızlı geri yükleme
  • Yapılandırma Yönetimi: Yapılandırma değişikliklerini yedekleyin
  • Migration: Jenkins'i başka sunucuya taşıyın

Nasıl Kullanılır?

Adım Adım Kullanım Kılavuzu

1. Yedekleme

chmod +x jenkins_backup.sh
./jenkins_backup.sh backup

2. Geri Yükleme

./jenkins_backup.sh restore /backup/jenkins/jenkins_backup_20240505_120000.tar.gz

Gereksinimler

Gereksinimler

  • Jenkins: Jenkins kurulu olmalı
  • Root Yetkisi: Jenkins servisini durdurmak için

Kullanım Senaryoları

Kullanım Senaryoları

1. Düzenli Yedekleme

Jenkins yapılandırmasını düzenli olarak yedekleyin.

2. Disaster Recovery

Sunucu çökmesi durumunda hızlıca geri yükleme yapın.

Örnekler

Kullanım Örnekleri

Örnek 1: Yedekleme

./jenkins_backup.sh backup

Örnek 2: Geri Yükleme

./jenkins_backup.sh restore /backup/jenkins/jenkins_backup_20240505_120000.tar.gz

Kod

#!/bin/bash

# Jenkins Backup and Restore Script

JENKINS_HOME="${JENKINS_HOME:-/var/lib/jenkins}"
BACKUP_DIR="/backup/jenkins"
ACTION="${1:-backup}"

if [ ! -d "$JENKINS_HOME" ]; then
    echo "Error: Jenkins home directory not found: $JENKINS_HOME"
    exit 1
fi

mkdir -p "$BACKUP_DIR"

if [ "$ACTION" = "backup" ]; then
    DATE=$(date +%Y%m%d_%H%M%S)
    BACKUP_FILE="$BACKUP_DIR/jenkins_backup_${DATE}.tar.gz"
    
    echo "Backing up Jenkins..."
    echo "Jenkins Home: $JENKINS_HOME"
    echo "Backup File: $BACKUP_FILE"
    echo ""
    
    tar -czf "$BACKUP_FILE" -C "$(dirname "$JENKINS_HOME")" "$(basename "$JENKINS_HOME")"
    
    if [ $? -eq 0 ]; then
        SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
        echo "✓ Backup completed: $BACKUP_FILE ($SIZE)"
    else
        echo "✗ Backup failed!"
        exit 1
    fi
    
elif [ "$ACTION" = "restore" ]; then
    if [ -z "$2" ]; then
        echo "Usage: $0 restore <backup_file>"
        exit 1
    fi
    
    BACKUP_FILE="$2"
    
    if [ ! -f "$BACKUP_FILE" ]; then
        echo "Error: Backup file not found: $BACKUP_FILE"
        exit 1
    fi
    
    echo "Restoring Jenkins from backup..."
    echo "Backup File: $BACKUP_FILE"
    echo "Jenkins Home: $JENKINS_HOME"
    echo ""
    echo "⚠️  WARNING: This will overwrite current Jenkins configuration!"
    read -p "Continue? (y/n): " CONFIRM
    
    if [ "$CONFIRM" != "y" ]; then
        echo "Restore cancelled"
        exit 0
    fi
    
    systemctl stop jenkins
    
    if [ -d "$JENKINS_HOME" ]; then
        mv "$JENKINS_HOME" "${JENKINS_HOME}_old_$(date +%Y%m%d_%H%M%S)"
    fi
    
    tar -xzf "$BACKUP_FILE" -C "$(dirname "$JENKINS_HOME")"
    
    chown -R jenkins:jenkins "$JENKINS_HOME"
    
    systemctl start jenkins
    
    echo "✓ Restore completed!"
else
    echo "Usage: $0 [backup|restore] [backup_file]"
    exit 1
fi

Kullanım

chmod +x jenkins_backup.sh
./jenkins_backup.sh backup
./jenkins_backup.sh restore <backup_file>

Sorun Giderme

Sorun Giderme

Problem: "Jenkins home directory not found"

Çözüm: JENKINS_HOME değişkenini ayarlayın:

export JENKINS_HOME=/path/to/jenkins
./jenkins_backup.sh backup

Etiketler

jenkins backup ci/cd devops restore