← 문제 라이브러리
CI/CD 중급 CICD-009 · 21분

브랜치 배포는 되는데 태그 릴리스에서만 배포 토큰이 비어 실패

운영 배포는 두 가지 방식으로 합니다.

검수된 문제무료
시나리오

운영 배포는 두 가지 방식으로 합니다. main에 머지하면 스테이징에 배포되고, 버전 태그를 push하면 운영에 릴리스됩니다. 지난주 보안 점검 뒤 배포 토큰(DEPLOY_TOKEN)을 저장소 시크릿에서 production 환경(environment) 시크릿으로 옮겼습니다. 그 뒤로 태그 릴리스만 인증 오류로 실패합니다. 누군가 '태그 이벤트에서는 시크릿을 못 읽는다'고 해서 토큰을 다시 저장소 시크릿으로 되돌리자는 의견이 나왔습니다. 스테이징 배포는 같은 토큰으로 매일 잘 되고 있습니다.

단서
release 워크플로 로그 (태그 v4.2.0)
Run test -n "$DEPLOY_TOKEN" || (echo 'DEPLOY_TOKEN is empty' && exit 1)
DEPLOY_TOKEN is empty
Error: Process completed with exit code 1.
두 워크플로 비교
# deploy.yml (main → staging, production 배포 job)
jobs:
  deploy-prod:
    environment: production
    steps: [...]

# release.yml (tag → prod)
jobs:
  release:
    runs-on: ubuntu-latest
    env:
      DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
시크릿 위치
Repository secrets: (없음)
Environments › production › secrets: DEPLOY_TOKEN (updated 6 days ago)

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 저장소 시크릿과 환경(environment) 시크릿이 보이는 범위
  • 같은 배포인데 워크플로마다 다른 설정
점검 체크리스트
  1. 시크릿이 저장소·환경 중 어디에 있는지
  2. 실패한 job에 environment: 가 선언됐는지
  3. 환경의 배포 브랜치·태그 규칙이 태그를 허용하는지