DEV/Infrastructure

[트러블슈팅][Github Actions] ghcr.io 활용 도커파일 빌드 시 unexpected status from POST request : 403 error 해결

Bi3a 2023. 12. 27. 09:49

목차
반응형

깃허브 액션 오류 해결
안되는 이유는 모르겠고 되는 이유는 더더욱 모르겠을 때


 

 

문제 상황

Github action으로 이미지 굽는 중에 에러 발생
"unexpected status from Post request to ghcr.io, 403 Forbidden"
빌드 앤 푸시 과정에서 발생했으며, 정황 상 빌드는 완료되었고 푸시 과정에서 발생한 오류다.

 

github actions에서 푸시가 안되는 현상
이미 라벨 버전은 화성간지 오래
403 forbidden이 떨어진다.
unexpected status from Post request to ghcr.io, 403 Forbidden

 

문제 원인

일반적으로 기존에 해당 프로젝트에서 내가 사용하지 않았던 패키지를 덮어쓰기 할 때 생기는 에러이다.

ex 1) 협업 환경에서 패키지 배포를 하는 경우
ex 2) 기존에 다른 레포지토리에서 사용하던 패키지명을 재사용해 배포를 시도하는 경우

발생할 수 있는 문제였다.
필자는 두 번째 예시에 해당했다.

 

해결 방법

1) build and push 시 explicit permission 부여

[./github/workflows/workflow-1.yml]

ruby
닫기
buildImageAndPush:
permissions: #403 error 해결 위한 explicit permission 추가
contents: read
packages: write
name: 도커 이미지 빌드와 푸시
needs: makeTagAndRelease
runs-on: ubuntu-latest
steps:

permissions, contents read packages write을 통해 내용을 읽고 패키지를 쓰는 외부 권한을 추가했다.

추가로 `runs-on ubuntu-latest`를 지정했다.

 

settings에서 Workflow permissions 확인

workflow permissions read and write permissions 확인

Read and write permissions가 허용되어 있는지 확인한다.

 

Packages Settings 설정

packages settings 설정 확인

 

Package settings를 들어간다.

 

package settings 확인

 

Add Repository를 통해 배포할 리포지토리를 해당 패키지에 추가한 후, Role은 write 이상을 부여한다.

 

Q. 리포지토리에서 한 번도 패키지를 만든 적이 없어 패키지 세팅이 없는데 403 에러가 발생합니다.
A. 이 경우에는 빌드할 패키지명을 다른 리포지토리에서 사용하고 있어 문제가 발생하고 있을 확률이 높습니다.
다른 패키지명으로 빌드 앤 푸시를 시도해 보세요.

 

 

# REFERENCE

 

Fixing “403 Forbidden” GitHub Actions, Docker or Helm Push to GitHub Container Registry (GHCR) - HackMD

The first time, the job will work.

hackmd.io

 


 

반응형