작성
·
1K
·
수정됨
1
Container Build 단계에서 아래와 같은 에러가 발생합니다.
The recommended git tool is: NONE
No credentials specified
> git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/2211-jenkins_pipeline-step1/.git # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git # timeout=10
Fetching upstream changes from https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git
> git --version # timeout=10
> git --version # 'git version 2.25.1'
> git fetch --tags --force --progress -- https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/main^{commit} # timeout=10
Checking out Revision fb1fbf9171da06bea8c17ae38ff8e3f47981527c (refs/remotes/origin/main)
> git config core.sparsecheckout # timeout=10
> git config core.sparsecheckout true # timeout=10
> git read-tree -mu HEAD # timeout=10
> git checkout -f fb1fbf9171da06bea8c17ae38ff8e3f47981527c # timeout=10
ERROR: Checkout failed
hudson.plugins.git.GitException: Command "git checkout -f fb1fbf9171da06bea8c17ae38ff8e3f47981527c" returned status code 128:
stdout:
stderr: error: Entry '.gitignore' not uptodate. Cannot update sparse checkout.
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2842)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3170)
Caused: hudson.plugins.git.GitException: Could not checkout fb1fbf9171da06bea8c17ae38ff8e3f47981527c
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3198)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1355)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:136)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:101)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:88)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
ERROR: Maximum checkout retry attempts reached, aborting
강사님의 Github Repository URL, fork 뜬 제 Github Repository URL 모두 시도해봤지만 동일한 결과입니다. (fork 뜬 Github Repo URL 시, Sync Fork 확인했습니다.)
구글링을 해도 시원한 해결이 되지 않아서 질문 드립니다.
감사합니다.
답변 9
1
안녕하세요, 강사님. 해결했습니다!
기존 실행했던 Ubuntu 20.04 LTS에서 Ubuntu 22.04 LTS로 변경했더니 정말 말끔하게 잘 됩니다.
정확한 에러의 원인은 구글링을 하더라도 나오지 않아서 모르겠지만 OS 버전이 업데이트 되면서 Git의 버전이 같이 업데이트 된 것을 확인했는데요, 추측으로는 Git의 버전이 업데이트 되면서 동작하게 된 것 같습니다.
Ubuntu 20.04 LTS : Git 2.25.1
Ubuntu 22.04 LTS : Git 2.34.1
황금 같은 연휴 기간에도 빠르게 답변해주시고 같이 봐주셔서 정말 감사합니다!
넵넵! 맞습니다!
Mac ARM을 사용하고 있어서 Vagrant + Ubuntu로 사용해서 구축했습니다!
이상하게 Vagrant + Rocky는 ARM에서는 동작이 안 되더라구요...
0
안녕하세요. 강사님!
답변이 많이 늦었습니다… 재설치로도 해결이 되지 않아서 일단 스킵하려고 합니다 ㅠㅠ
그래도 확인해주신 덕분에 완강까지 할 수 있었습니다!
감사합니다!
0
The recommended git tool is: NONE
No credentials specified
> git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/2211-jenkins_pipeline-step1/.git # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git # timeout=10
Fetching upstream changes from https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git
> git --version # timeout=10
> git --version # 'git version 2.25.1'
> git fetch --tags --force --progress -- https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/main^{commit} # timeout=10
Checking out Revision fb1fbf9171da06bea8c17ae38ff8e3f47981527c (refs/remotes/origin/main)
> git config core.sparsecheckout # timeout=10
> git config core.sparsecheckout true # timeout=10
> git read-tree -mu HEAD # timeout=10
> git checkout -f fb1fbf9171da06bea8c17ae38ff8e3f47981527c # timeout=10
ERROR: Checkout failed
hudson.plugins.git.GitException: Command "git checkout -f fb1fbf9171da06bea8c17ae38ff8e3f47981527c" returned status code 128:
stdout:
stderr: error: Entry '.gitignore' not uptodate. Cannot update sparse checkout.
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2842)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3170)
Caused: hudson.plugins.git.GitException: Could not checkout fb1fbf9171da06bea8c17ae38ff8e3f47981527c
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3198)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1355)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:136)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:101)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:88)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
ERROR: Maximum checkout retry attempts reached, aborting
앗 넵, 제가 fork한 repo로 작성된 스크립트를 드렸네요!
강사님께서 전달 주신 스크립트로 구성했고 빌드 전에 /var/lib/jenkins/workspace/2211-jenkins_pipeline-step1 경로 삭제하고 빌드시킨 에러입니다.
넵넵!
혹시나 해서 Jenkinsfile에 sh “rm -rf .gitignore”
이 구문을 집어넣어서 .gitignore 파일을 삭제했더니 그 다음에는 Dockerfile이 uptodate가 되지 않아 checkout을 할 수 없다는 식의 에러가 발생하더라구요...
저도 서버 자체를 삭제했다가 다시 설치해서 시도해보겠습니다.
연휴 기간에 빠른 답변해주셔서 감사합니다!
0
올려주신 스크립트는 일단 제 환경에서 잘 동작합니다.
근데 올려주신 로그와 스크립트에 차이가 좀 있어 보이는데요.
아래 스크립트로 돌려보시고, 해당 로그를 다시 올려주시겠어요?
pipeline {
agent any
tools {
gradle 'gradle-7.6.1'
jdk 'jdk-17'
}
environment {
// 본인의 username으로 하실 분은 수정해주세요.
DOCKERHUB_USERNAME = '1pro'
GITHUB_URL = 'https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2.git'
// deployment.yaml -> image: 1pro/api-tester:v1.0.0
// 실습 넘버링 - (수정x)
CLASS_NUM = '2211'
}
stages {
stage('Source Build') {
steps {
// 소스파일 체크아웃
git branch: 'main', url: 'https://github.com/k8s-1pro/kubernetes-anotherclass-api-tester.git'
// 소스 빌드
// 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644)
sh "chmod +x ./gradlew"
sh "gradle clean build"
}
}
stage('Container Build') {
steps {
// 릴리즈파일 체크아웃
checkout scmGit(branches: [[name: '*/main']],
extensions: [[$class: 'SparseCheckoutPaths',
sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]],
userRemoteConfigs: [[url: "${GITHUB_URL}"]])
}
}
}
}
0
pipeline {
agent any
tools {
gradle 'gradle-7.6.1'
jdk 'jdk-17'
}
environment {
// 본인의 username으로 하실 분은 수정해주세요.
DOCKERHUB_USERNAME = 'may30'
GITHUB_URL = 'https://github.com/may-30/kubernetes-anotherclass-sprint2.git'
// 실습 넘버링 - (수정x)
CLASS_NUM = '2211'
}
stages {
stage('Source Build') {
steps {
// 소스파일 체크아웃
git branch: 'main', url: 'https://github.com/k8s-1pro/kubernetes-anotherclass-api-tester.git'
// 소스 빌드
// 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644)
sh "chmod +x ./gradlew"
sh "gradle clean build"
}
}
stage('Container Build') {
steps {
// 릴리즈파일 체크아웃
checkout scmGit(branches: [[name: '*/main']],
extensions: [[$class: 'SparseCheckoutPaths',
sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]],
userRemoteConfigs: [[url: "${GITHUB_URL}"]])
// jar 파일 복사
sh "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar"
// 컨테이너 빌드 및 업로드
sh "docker build -t ${DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./${CLASS_NUM}/build/docker"
script{
if (DOCKERHUB_USERNAME == "1pro") {
echo "docker push ${DOCKERHUB_USERNAME}/api-tester:v1.0.0"
} else {
sh "docker push ${DOCKERHUB_USERNAME}/api-tester:v1.0.0"
}
}
}
}
stage('K8S Deploy') {
steps {
// 쿠버네티스 배포
sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/namespace.yaml"
sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/configmap.yaml"
sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/secret.yaml"
sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/service.yaml"
sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/deployment.yaml"
}
}
}
}
Jenkinsfile 스크립트 전달 드립니다!
0
0
알려주신 경로(/var/lib/jenkins/workspace/2211-jenkins_pipeline-step1
) 를 삭제해도 동일한 에러가 출력됩니다.
0
안녕하세요.
뭔가 git이 꼬인 거 같은데, CICD Server로 들어가서 /var/lib/jenkins/workspace/2211-jenkins_pipeline-step1/ 폴더를 통으로 지우고, 다시 Jenkins Job을 실행해 보시겠어요?
0
안녕하세요, 인프런 AI 인턴입니다.
triginta maius님의 질문과 유사한 상황을 해결할 수 있는 정보를 기존 답변에서 찾았습니다. 질문에서는 Jenkins Pipeline의 “Container Build” 단계에서 발생하는 특정 git checkout
관련 오류에 대해 설명하고 있습니다. 이러한 문제는 주로 Git 저장소와 관련된 작업 중에 발생할 수 있으며, 일반적으로 로컬 저장소가 최신 상태가 아니거나 특정 설정의 불일치 때문에 발생할 수 있습니다.
유사한 질문에서는 Jenkins의 Pipeline 구성 또는 git 명령과 관련된 문제를 다루는 경우가 많았으며, 이 중에서도 Git 저장소를 제대로 체크아웃하지 못하는 문제가 일부 답변에 포함되어 있었습니다.
구체적으로, Jenkins에서 Pipeline을 설정할 때 Git 관련 설정(예: credentials, .gitignore
파일의 충돌 해결, sparse checkout 설정 등)이 올바르게 구성되어야 하며, 이에 대한 해결책으로 다음과 같은 접근법을 권장할 수 있습니다:
.gitignore
충돌 문제 해결: 오류 메시지에서 언급된 .gitignore
파일과 관련된 문제를 확인하고, 필요한 경우 로컬 및 원격 저장소 간의 충돌을 해결해야 할 수 있습니다.다만, 직접적으로 동일한 상황을 해결하는 구체적인 답변을 찾지 못했습니다. Jenkins와 Git을 함께 사용하는 과정에서 발생할 수 있는 일반적인 문제와 그에 대한 해결책을 참고할 수 있는 링크는 다음과 같습니다:
해당 링크에서는 Jenkins에서 소스 코드 빌드 시 발생하는 문제와 관련된 해결 방법이 나와 있습니다. 비록 정확히 질문에서 언급된 문제의 해결책이 될 수는 없지만, Jenkins에서 발생할 수 있는 비슷한 유형의 문제를 이해하고 해결하는 데 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
진행사항 정리 감사합니다. 잘 확인 했고요. 😀
근데 Ubuntu 20.04 LTS : Git 2.25.1 라 하면, 현재 리눅스를 Ubuntu로 해서 쿠버네티스를 구축하신 건가요?