본문 바로가기

Study

[내일배움캠프 TIL] GitHub Actions에서 org 레포 ghcr.io 패키지 push 권한

728x90
반응형

무슨 일이 있었나

CD 파이프라인에서 Docker 이미지를 ghcr.io에 push하려다 아래 에러 발생.

ERROR: denied: installation not allowed to Create organization package

원인

GITHUB_TOKEN은 기본적으로 contents: read 권한만 갖는다. 개인 레포에서는 자동으로 패키지 쓰기가 허용되는 경우도 있지만, 조직(org) 레포에서는 명시적으로 선언하지 않으면 패키지 생성이 막힌다.

해결

cd.yml 최상단에 permissions 블록 추가.

permissions:
  contents: read
  packages: write

조직 설정에서 "Read and write permissions" 권한이 없어도 이것만으로 동작한다.

추가로 발견한 것

github.repository_owner를 이미지 태그에 그대로 쓰면 org명에 대문자가 있을 때 에러난다 → [[TIL - ghcr.io 이미지 태그는 소문자만 허용된다]] 참고.

또한 .env.prod의 GITHUB_OWNER 값도 소문자로 맞춰야 한다. docker-compose.prod.yml이 이 변수로 이미지 태그를 조합하기 때문이다.

교훈

org 레포에서 GitHub Actions로 패키지(ghcr.io) 관련 작업을 할 때는 항상 permissions: packages: write를 명시할 것.

반응형