error resolving source context: authentication required(feat. gitlab cicd)

gyeongseon·2023년 7월 15일
0
post-thumbnail

소개

저는 docker registry(harbor) 에 접근하면서 보게된 에러입니다. 의미는 알겠지만 다양하게 에러가 발생할 수 있고 저의 경우는 gitlab ci/cd (gitlab runner) 과정에서 생긴 원인을 같이 공유합니다.


gitlab helm chart: gitlab-6.8.2
gitlab version: 15.8.2

무슨 에러인가 ?

로그에 정확하게 표현되어 있습니다. authentication required -> 인증정보가 필요하다고 합니다.
인증과정에서 정보가 정확하게 입력되지 않아 생긴 문제입니다.

위 에러를 해결하기 위한 정말 다양한 방법과 다양한 케이스들이 존재합니다. G선생에게 물어보면 많은 자료들이 있습니다.

저는 gitlab ci 과정을 위해서 사용했습니다.

저는 gitlab runner에서 kaniko를 통해서 docker image를 빌드하고 private registry에 docker image를 넣는 과정이였습니다. gitlab-ci.yml을 본다면 이렇습니다.

build-example-by-runner:
  stage: build
  only: 
    - main
  image: 
    name: gcr.io/kaniko-project/executor:debug
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"$REGISTRY_AUTH\":{\"username\":\"$REGISTRY_USERNAME\",\"password\":\"$REGISTRY_PWD\"}}}" > /kaniko/.docker/config.json
    - |
       /kaniko/executor --context git://$BATCHFN_GIT_USERNAME:$BATCHFN_GIT_PWD@gitlab.MASKINGGG.kr/$BATCHFN_GIT_USERNAME/batch-function.git#refs/heads/main \
       --dockerfile /kaniko/buildcontext/dockerfile \
       --destination $REGISTRY_AUTH/batch/functions:$CI_COMMIT_SHORT_SHA

원래는 환경변수 중 REGISTRY_USERNAME이 아닌 GIT_USERNAME이였습니다. PWD 역시 앞이 GIT이였습니다. 이상하게도 GIT_USERNAME, GIT_PASSWORD 를 환경변수를 사용했을 때 pipeline 이 정상적으로 동작하지 않는 느낌을 받았습니다.

느낌이였습니다. 우연히 GIT_USERNAME 변경하고 같은 코드, 같은 환경, 같은 스크립트에서 동작을 했지만 안됐거든요.

찾아봤습니다.

위 내용은 심증만 있는거라 정확한 정보를 찾아봤습니다. 100% 정확하다고 말할 수 없습니다.

https://docs.gitlab.com/ee/ci/variables/index.html#cicd-variable-precedence

위 내용을 읽어보고 나면
"GitLab에서 이미 사용중인 GIT_USERNAME 변수와 충돌될 수 있나 ?"
"GitLab 자체에서 GIT_USERNAME 환경변수를 미리 정의되어 있나 ?"

이런 생각이 들었습니다.

그리고 분명히 오타로 생각하시는 분들이 있으실 것 같습니다.

$ /kaniko/executor --context git://$GIT_USERNAME:$GIT_PWD@gitlab.MASKINGGG.kr/$GIT_USERNAME/batch-function.git#refs/heads/main \ # collapsed multi-line command
Error: error resolving source context: authentication required

pipeline log 를 확인했을 때 오타는 아닙니다.

정리해봅시다.

위 내용이 문제가 아닐 수 있습니다.
제 스크립트에서만 충돌이 발생했을 수도 있습니다.
그러나 혹시라도

  • gitlab runner 를 통해서 스크립트작업을 한다면
  • ci/cd variable 변수를 선언했다면
  • GIT_USERNAME 이름을 선언했다면

한 번 의심해보세요. 이 말을 하고 싶었습니다.

시간을 아낄 수 있었으면 좋겠습니다.

-끝-

profile
경선 :)

0개의 댓글