6. DEPLOY2 BASH

2.3 Ключевые механизмы

Откат:

bash
 
Copy
 
Download
rollback() {
    local last_healthy=$(find /opt/releases -name "*.tar.gz" | sort -r | head -2 | tail -1)
    for server in $CLUSTER; do
        ssh www@$server "ln -sfn ${last_healthy} /current"
        health_check $server || error "Rollback failed on $server"
    done
}

Проверки:

bash
 
Copy
 
Download
health_check() {
    local attempts=3
    local timeout=5
    for ((i=1; i<=attempts; i++)); do
        if curl -m $timeout -s http://$1/health | grep -q "OK"; then
            return 0
        fi
        sleep $i
    done
    return 1
}

3. Интеграция с Git

3.1 Настройка Git-репозитория

Best Practices:

  1. Branching model:

 
 
Copy
 
Download
main
├── release/
├── feature/
└── hotfix/
  1. Хук для автоматизации:

bash
 
Copy
 
Download
#!/bin/sh
# .git/hooks/post-receive

while read oldrev newrev refname
do
    if [ "$refname" = "refs/heads/main" ]; then
        /usr/bin/deploy-trigger.sh $newrev
    fi
done

3.2 Версионность

Сборка метаданных:

bash
 
Copy
 
Download
generate_build_info() {
    cat > build-info.json <<EOF
{
    "version": "$(git describe --tags)",
    "commit": "$(git rev-parse HEAD)",
    "date": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
    "built_by": "$(whoami)"
}
EOF
}

4. Полный цикл деплоя

4.1 Пошаговый процесс

  1. Подготовка:

bash
 
Copy
 
Download
# На всех серверах
sudo mkdir -p /opt/{releases,shared}
sudo chown -R www:www /opt/releases
  1. Инициализация:

bash
 
Copy
 
Download
./deploy.sh init \
    --repo=git@github.com:company/webapp.git \
    --env=production \
    --nodes=web{1..5}.company.com
  1. Запуск:

bash
 
Copy
 
Download
./deploy.sh deploy --version=1.2.3 --rollback-on-error

4.2 Мониторинг

Метрики:

  • Время деплоя

  • Количество успешных/неудачных

  • Время отката

Логирование:

json
 
Copy
 
Download
{
    "timestamp": "2023-04-20T14:32:45Z",
    "action": "deploy",
    "version": "1.2.3",
    "status": "success",
    "duration_sec": 142,
    "servers": ["web1","web2","web3"]
}

5. Дополнительные материалы

5.1 Чеклист перед продакшен-деплоем

  1. Проверка backup

  2. Уведомление команды

  3. Подготовка rollback-плана

  4. Проверка мониторинга

  5. Внешние зависимости

5.2 Оптимизации

Кэширование:

bash
 
Copy
  • DEPLOY BASH
  • 0 کاربر این را مفید یافتند
آیا این پاسخ به شما کمک کرد؟

مقالات مربوطه

1. Linux Kernel & Devices

Вот развернутый план настройки Linux с примерами и пояснениями: Linux Kernel & Devices...

2. FS and quota

Управление файловыми системами и квотами в Linux 1. Структура файловых систем и мониторинг...

3. Service

Configuration file /etc/systemd/system/autosshd443.service is marked world-inaccessible. This...

0. SREUP

Обзор эксплуатации и автоматизации 1. Классификация работ по эксплуатации и техническому...

4. SYS and UDEV

  ### 1. Управление устройствами через /sys/ и udev #### 1.1 Теоретическое объяснение концепции...