Repository navigation
ci: 배포 시크릿이 없을 때 조용히 건너뛰고, 일부만 있으면 실패시킨다 - #148
Merged
Merged
Conversation
리포지토리 시크릿이 하나도 설정돼 있지 않다(gh secret list → 0개). 그래서 main 머지마다 Deploy to Production 이 첫 스텝(Check required secrets)에서 죽었다. #143~#147 까지 다섯 번 연속 같은 모양이다. success Test and Build success Security Scan success Build Docker Image failure Deploy to Production ← Check required secrets 컨테이너를 띄우기 전에 멈추므로 운영 인스턴스를 건드리지는 않는다. 문제는 그 반대다 — 아무것도 배포되지 않는데 매번 빨간불로 끝나서 그 빨간불이 정상처럼 보인다. 그 상태가 굳으면 진짜 실패도 눈에 띄지 않는다(#94 가 적은 그대로다). 시크릿 상태를 세 가지로 나눴다. 전부 있음 → 배포한다 하나도 없음 → 건너뛴다. 실패가 아니고, 잡 요약에 "운영 배포를 건너뜀" 과 설정 문서 경로가 남는다. 배포가 안 됐다는 사실이 조용히 지나가지 않는다 일부만 있음 → 실패한다. 호스트는 있는데 키가 없는 식이면 누군가 설정하다 멈춘 것이고 그건 건너뛸 일이 아니다 스테이징도 같은 규칙으로 맞췄다. 문서(docs/operations/deployment-secrets.md)를 추가했다. 개인키를 채팅·이슈·PR 에 붙여넣지 않고 파일에서 바로 읽는 명령(gh secret set PRODUCTION_SSH_KEY < ~/.ssh/...), 배포 전용 키를 따로 만드는 이유, 서버에 미리 있어야 하는 것(docker 그룹, 스왑 2GB), 첫 배포에서 각 스텝이 실패할 때의 의미를 적었다. 아직 남은 것도 적었다 — 교체 순간의 짧은 순단, SSH 키 권한을 command= 로 좁히지 못한 상태, 애플리케이션 환경 변수(.env)가 이 문서 범위 밖인 점. Refs #94
앞 커밋에서 Set up SSH 스텝에 조건을 두 번 넣었다. 같은 키가 두 번이면 GitHub 이 워크플로 파일 자체를 거부한다 — 실행 목록에 "This run likely failed because of a workflow file issue" 만 남고 잡이 하나도 생기지 않는다. yaml.safe_load 는 통과했다. 파이썬 YAML 파서는 중복 키를 뒤 값으로 덮어쓰고 넘어가기 때문이다. 스텝 목록을 실제로 훑어 "조건이 걸려야 하는 스텝에 if 가 있는지" 를 확인하는 쪽으로 검증을 바꿨고, 그 과정에서 deploy-production 의 Set up SSH 에 조건이 빠져 있던 것도 함께 찾았다. Refs #94
RosieOh
force-pushed
the
fix/deploy-secrets-skip-cleanly
branch
from
October 23, 2026 02:36
c9ca1e2 to
963b5e1
Compare
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #94
확인한 사실
리포지토리 시크릿이 하나도 설정돼 있지 않습니다 (
gh secret list→ 0개). 그래서main머지마다Deploy to Production이 첫 스텝에서 죽었습니다.#143 ~ #147 까지 다섯 번 연속 같은 모양입니다. 컨테이너를 띄우기 전에 멈추므로 운영 인스턴스를 건드리지는 않습니다. 문제는 그 반대입니다 — 아무것도 배포되지 않는데 매번 빨간불로 끝나서 그 빨간불이 정상처럼 보입니다. 그 상태가 굳으면 진짜 실패도 눈에 띄지 않습니다.
고친 것
시크릿 상태를 세 가지로 나눴습니다.
미설정 상태에서도 파이프라인은 초록불이 되고, 배포가 안 됐다는 사실은 모든 실행의 요약에 적힙니다. 빨간불을 무시하게 되는 것보다 낫다고 판단했습니다. 스테이징도 같은 규칙으로 맞췄습니다.
문서
docs/operations/deployment-secrets.md를 추가했습니다.gh secret set PRODUCTION_SSH_KEY < ~/.ssh/carecode_deployPRODUCTION_SSH_KNOWN_HOSTS를 넣어야 하는 이유 — 없으면ssh-keyscan이 최초 접속을 그냥 믿습니다docker그룹, 스왑 2GB(1GB 인스턴스는 없으면 기동 중 OOM)솔직히 적은 한계
문서에 그대로 적어 두었습니다.
docker login·run·curl을 각각 실행하므로authorized_keys의command=로 하나만 묶을 수 없습니다.env에 있고 이 문서 범위 밖입니다이 PR 이 해결하지 못하는 것
시크릿 자체는 제가 넣을 수 없습니다. 머지 후 아래를 직접 실행하셔야 운영 배포가 시작됩니다.
넣기 전까지는 배포가 건너뛰어지고(초록불 + 요약에 안내), 넣는 순간부터
main머지가 운영에 반영됩니다.