[Jenkins] Git Push 시 fatal: could not read Username 에러 해결

유사개발자·2023년 10월 25일

DevOps

목록 보기
1/1

Jenkins에서 Git Push 인증 에러 해결기 (GitOps + ArgoCD 환경)

회사에서 최근 쿠버네티스 환경으로 조금씩 전환하고 있었는데,
클러스터 환경 역시 자동화가 필요하다고 느껴 GitOps 라는 개념을 접하게 되었다.

이후 실제 회사 프로젝트에 적용해보려다 꽤 오래 삽질했던 에러를 기록해본다.


현재 구성

전체 흐름은 아래와 같다.

Jenkins Build
  ↓
deployment.yaml 이미지 버전 변경
  ↓
Git Push
  ↓
ArgoCD 감지
  ↓
Kubernetes Cluster 자동 반영

Jenkins에서 빌드가 완료되면:

  • deployment.yaml 내부의 컨테이너 이미지 태그를
  • Jenkins Build Number 기준으로 변경 후
  • Git Repository에 Push

하도록 구성했다.

예를 들면:

image: my-app:123

이런 식으로 자동 업데이트되는 구조다.

그리고 이후 ArgoCD가 Git 변경 사항을 감지하여
클러스터 상태를 자동으로 동기화한다.


문제 발생

그런데 Jenkins Pipeline 내부에서 Git Push 시 아래와 같은 인증 에러가 계속 발생했다.

에러 이미지


처음 시도했던 방법

Jenkinsfile 상단에서 아래처럼 git 계정 설정도 해주었다.

sh 'git config --global user.email "jenkins@example.com"'
sh 'git config --global user.name "jenkins"'

하지만 계속 인증 에러가 발생했다.


원인

결론적으로 문제는:

Git 사용자 정보 설정 != Git 인증 정보 저장

이었다.

즉:

git config --global user.name
git config --global user.email

은 단순히 commit 작성자 정보일 뿐,
실제 Git Push 인증과는 관련이 없었다.


해결 방법

정말 긴 삽질 끝에 Jenkins 계정으로 직접 접속하여 테스트를 진행했고,
수동으로 git push 가 되지 않는 것을 확인했다.

이후 아래 명령어로 credential helper를 설정했다.

git config credential.helper store --global

그 후 Jenkins 계정 상태에서 직접 git push 를 실행하니:

Username:
Password:

입력을 요구했고,
Git 계정 정보를 입력한 뒤부터 정상적으로 Push가 동작했다.


정리

이번 이슈를 통해 알게 된 점:

  • user.name, user.email 은 작성자 정보
  • 실제 Push 인증은 별도
  • Jenkins 환경에서는 credential 저장 여부가 중요
  • GitOps 환경에서는 Jenkins ↔ Git 인증 구조를 먼저 확인해야 함

최종 해결 명령어

git config credential.helper store --global
profile
개발자와 유사한 개발자입니다

0개의 댓글