[문제상황]
젠킨스 파이프라인 구성 중 깃 레포지토리 인증 후, 푸시하는 단계가 있었다.
withCredentials([
usernamePassword(
credentialsId: 'user_name',
usernameVariable: 'GIT_USERNAME',
passwordVariable: 'GIT_PASSWORD'
)]) {
sh("git push http://$GIT_USERNAME:$GIT_PASSWORD@github.com/user_name/repository_name.git")
}
젠킨스 빌드가 아래와 같은 오류와 함께 실패.
fatal: unable to access 'https://github.com/{user_name}/{repository_name}.git/': Port number ended with '{any_char}'
[원인]
- http 또는 https 프로토콜을 사용하여 사용자 이름이나 비밀번호에 특수 문자를 전달할 때는 URL을 인코딩해야 한다. 예를 들어 비밀번호에 user#1을 사용하고 URL에 사용하려면 %23을 사용하여 #을 인코딩해야 하며 비밀번호는 user%231이 된다.
- '#' 문자는 URL에서 주의 해야한다. RFC 3986 section 2.2(https://www.rfc-editor.org/rfc/rfc3986#section-2.2)에 따르면 구분을 위해 예약되어 있다. 즉, URL 내 어딘가에서 사용하고 URL의 조각 부분을 나타내지 않으려면 URL 인코딩(%23)이 필요하다.
- URL이 인코딩되어 처리되기 때문이다.
[해결]
- git-credentials > store 과 같은 다른 인증 방식을 사용하기
- 인코딩 처리 되는 문자는 피하기
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
'Develop > Others' 카테고리의 다른 글
RxJS 기본 개념 정리 (0) | 2022.12.07 |
---|---|
일론머스크 생산성 6원칙 (0) | 2022.11.28 |
Failed to get device handle and/or partition ID (0) | 2022.05.16 |
iOS app lacks App ID Prefix. UniversalLinks is not enabled for the app. (1) | 2022.04.09 |
static 멤버 언제 어떻게 사용해야 좋을까? (0) | 2022.02.14 |
댓글