Что такое Manual approval required?

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

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

  • Настроены gates для критических этапов
  • Требуется одобрение для production деплоя
  • Проблемы с правами доступа
  • Ошибки в конфигурации approval gates
  • Отсутствие автоматизации для одобрений

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

1. Настрой автоматические approval gates

 1# .github/workflows/auto-approval.yml
 2name: Auto Approval
 3on: [push]
 4
 5jobs:
 6  security-scan:
 7    runs-on: ubuntu-latest
 8    steps:
 9    - uses: actions/checkout@v3
10    - name: Security scan
11      run: |
12        # Автоматическая проверка безопасности
13        npm audit --audit-level moderate
14        if [ $? -eq 0 ]; then
15          echo "Security check passed"
16        else
17          echo "Security issues found"
18          exit 1
19        fi
20
21  deploy:
22    runs-on: ubuntu-latest
23    needs: security-scan
24    if: github.ref == 'refs/heads/main'
25    steps:
26    - uses: actions/checkout@v3
27    - name: Auto deploy
28      run: |
29        echo "Auto deploying to production"
30        kubectl apply -f k8s/

2. Настрой условные approval gates

 1# .github/workflows/conditional-approval.yml
 2name: Conditional Approval
 3on: [push]
 4
 5jobs:
 6  check-risk:
 7    runs-on: ubuntu-latest
 8    outputs:
 9      requires-approval: ${{ steps.risk-check.outputs.requires-approval }}
10    steps:
11    - uses: actions/checkout@v3
12    - name: Risk assessment
13      id: risk-check
14      run: |
15        # Оценка риска изменений
16        if [[ "${{ github.event.head_commit.message }}" == *"BREAKING"* ]]; then
17          echo "requires-approval=true" >> $GITHUB_OUTPUT
18        else
19          echo "requires-approval=false" >> $GITHUB_OUTPUT
20        fi
21
22  deploy:
23    runs-on: ubuntu-latest
24    needs: check-risk
25    if: needs.check-risk.outputs.requires-approval == 'false'
26    steps:
27    - uses: actions/checkout@v3
28    - name: Deploy
29      run: kubectl apply -f k8s/

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

  • Автоматизируй approval gates где возможно
  • Настрой условные approval gates
  • Используй risk-based approvals
  • Настрой уведомления для manual approvals