인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

odark님의 프로필 이미지

작성한 질문수

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2

📝 Helm 배포 (💻 실습2/2 - 패키지 modify, addition 하기)

소스파일이 안가져와지네요?

작성

·

27

0

jenkinsfile을 보면

코드가 주신대로 아래와 같고요
여기에서 [소스파일 체크아웃] 부분이 지나면 jenkins디렉토리 workspace 밑으로 해당 소스파일이 가져와서 폴더가 생성되어야 하는게 아닌지..궁금합니다. 폴더가 일단 생성이 안되구요...맨밑에 이미지 추가한것처럼 helm쪽 파일만 릴리즈파일 체크아웃통해 받아진것 같아요.

또한가지는 [소스빌드] 스텝인데 echo로만 그냥 찍는거지 실제 빌드하는거 아니죠?

체크아웃자체도 안받아져서 빌드도 안될것 같구요.

마지막으로 [컨테이너빌드] cp부분도 echo로 찍는부분이지 실제 copy명령어를 실행하는것도 아니고..

그런데 docker build 명령어는 실제로 하는데...

위에서 빌드도 문자열만 찍는거고 ...소스도 안받아졌는데 어떻게 docker build는 또 실제로 할수잇는지도 궁금합니다.

 

stage('소스파일 체크아웃') {

steps {

// 소스코드를 가져올 Github 주소

git branch: 'main', url: 'https://inf.run/M45Zm'

}

}

stage('소스 빌드') {

steps {

// 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644)

echo "chmod +x ./gradlew"

echo "gradle clean build"

}

}

stage('릴리즈파일 체크아웃') {

steps {

checkout scmGit(branches: [[name: '*/main']],

extensions: [[$class: 'SparseCheckoutPaths',

sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]],

userRemoteConfigs: [[url: "${GITHUB_URL}"]])

}

}

stage('컨테이너 빌드') {

steps {

// jar 파일 복사

echo "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar"

// 도커 빌드

echo "docker build -t DOCKERHUBUSERNAME/apitester:v1.0.0./{DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./{CLASS_NUM}/build/docker"

}

}

 

image.png

 

답변 2

0

일프로님의 프로필 이미지
일프로
지식공유자

일단 말씀하신 내용 모두 정상적인 상태입니다.

캡쳐한 내용대로만 파일이 존재하는 게 맞고, echo를 찍은 이유와 함께 실습 영상에서 설명을 드렸는데, 내용을 다시 한번 잘 들어 봐주시겠어요?

 

odark님의 프로필 이미지
odark
질문자

아..제가 성급했습니다. ..감사합니다!!!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

odark님께서 관련 문제를 겪고 계신 것에 대해, 비슷한 상황을 해결할 수 있는 기존의 답변을 소개해드리겠습니다. Jenkins에서 소스 체크아웃이 안 이루어지거나 단계별로 실행되지 않는 문제는 Jenkinsfile에서 설정된 명령어들이 실질적으로 실행되지 않는 경우에 주로 발생합니다.

Jenkins에서 수행하는 각 스테이지와 명령에 대한 설명 및 해결 방법:

1. 소스파일 체크아웃

  • 문제: git 명령어로 소스를 체크아웃하였을 때 파일이나 폴더가 생성되지 않는다면, URL이 잘못되었거나 네트워크 문제로 인해 소스코드를 가져오지 못할 수 있습니다.
  • 해결책: Jenkins 로그를 확인하여 git 명령이 어떻게 실행되었는지, 에러 메시지가 있었는지를 확인해봐야 합니다. 또한, Git URL이 정확한지, Jenkins가 해당 경로에 접근할 수 있는지 점검해야 합니다.

2. 소스 빌드

  • 설명: 현재 echo로 출력되는 부분만 명시하셨습니다. 실질적으로 gradlew 명령어들을 실행하려면 sh 명령어를 통해 실행해야 합니다.
  • 수정:
    
    stage('소스 빌드') {
      steps {
          sh "chmod +x ./gradlew"
          sh "./gradlew clean build"
      }
    }
    

3. 릴리즈파일 체크아웃

  • 문제: sparseCheckoutPaths 설정이 잘못되었거나, 올바른 파일 경로를 지정하지 않으면 파일이 정상적으로 체크아웃 되지 않을 수 있습니다.

4. 컨테이너 빌드

  • 설명: echo로 설정한 cpdocker build 명령어는 실제 실행되지 않고 문자열이 출력되는 형태입니다. 실제로 파일 복사와 도커 빌드를 실행하려면 sh 명령어가 필요합니다.
  • 수정:
    
    stage('컨테이너 빌드') {
      steps {
          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"
      }
    }
    

이 외에도 추가적으로 도움이 될 유사한 질문으로부터 해결 방법을 확인할 수 있는 링크를 드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

odark님의 프로필 이미지

작성한 질문수

질문하기