Что такое Deployment target unreachable?

Ошибка Deployment target unreachable возникает, когда CI/CD пайплайн не может подключиться к целевому серверу или кластеру для выполнения деплоя.

Причины возникновения

  • Проблемы с сетевым подключением
  • Недоступность целевого сервера
  • Проблемы с аутентификацией
  • Ошибки в конфигурации подключения
  • Проблемы с firewall или security groups
  • Ошибки в DNS разрешении

Как исправить ошибку

1. Настрой проверку доступности

 1# .github/workflows/connectivity-check.yml
 2name: Connectivity Check
 3on: [push]
 4
 5jobs:
 6  check-target:
 7    runs-on: ubuntu-latest
 8    steps:
 9    - uses: actions/checkout@v3
10    
11    - name: Check target availability
12      run: |
13        # Проверка доступности целевого сервера
14        if ping -c 3 ${{ secrets.TARGET_HOST }}; then
15          echo "Target is reachable"
16        else
17          echo "Target is unreachable"
18          exit 1
19        fi
20    
21    - name: Check port availability
22      run: |
23        # Проверка доступности портов
24        nc -z ${{ secrets.TARGET_HOST }} 22 || exit 1
25        nc -z ${{ secrets.TARGET_HOST }} 80 || exit 1
26        echo "All required ports are open"
27
28  deploy:
29    runs-on: ubuntu-latest
30    needs: check-target
31    steps:
32    - uses: actions/checkout@v3
33    - name: Deploy
34      run: |
35        ssh ${{ secrets.SSH_USER }}@${{ secrets.TARGET_HOST }} \
36          "docker pull myapp:latest && docker-compose up -d"

2. Настрой автоматическое восстановление

 1#!/bin/bash
 2# target_recovery.sh
 3
 4TARGET_HOST="$1"
 5MAX_RETRIES=5
 6
 7echo "Checking target availability: $TARGET_HOST"
 8
 9for i in {1..$MAX_RETRIES}; do
10    if ping -c 1 "$TARGET_HOST" > /dev/null 2>&1; then
11        echo "Target is reachable on attempt $i"
12        exit 0
13    else
14        echo "Target unreachable on attempt $i"
15        sleep 30
16    fi
17done
18
19echo "Target remains unreachable after $MAX_RETRIES attempts"
20exit 1

Лучшие практики

  • Проверяй доступность перед деплоем
  • Настрой мониторинг целевых серверов
  • Используй health checks
  • Настрой автоматическое восстановление