uuuhhh
아주조코
uuuhhh
  • 전체 (68)
    • Cloud (22)
      • AWS (17)
      • NCP (4)
      • Tech (1)
    • Kubernetes (16)
    • Docker (1)
    • CI/CD (13)
    • Network (4)
    • OS (10)
      • Linux (9)
      • Concepts (1)
    • Language (0)
      • Golang (0)
    • Project (1)
      • Drone (1)
    • 요모조모 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • ⚠️ 2022/11/08 - 11/13 블로그 이관 작업 ⋯

인기 글

태그

  • AWS
  • EC2
  • kubernetes
  • service
  • pod
  • NodePort
  • CI
  • ncp
  • Instance
  • argocd
  • minikube
  • build
  • docker
  • LoadBalancer
  • Jenkins
  • network
  • NKS
  • Iam
  • 데이터베이스
  • Linux

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
uuuhhh

아주조코

Jenkins Back-End Gradle Build
CI/CD

Jenkins Back-End Gradle Build

2022. 12. 13. 09:54

👀 Epilogue


  • 백엔드 Gradle 빌드 시 매우 많은 트러블 이슈 발생
    • Gradle 빌드 명령어 이슈..
      • Test 제외 빌드 명령어
      • ./gradlew build --exclude-task -test

Java Build 과정 -> 여기서 Test 과정을 제외

 

  • Gradle 빌드 세팅 파일 찾지 못하는 이슈..
  • Gradle 권한 오류..
  • etc..
  • 그중에서 제일 애를 먹었던 이슈를 해결했던 과정을 소개하고자 한다.

 

⚡ Leggo


  • Jenkinsfile
...

stage('Gradle Jar Build'){
            steps{
                dir('back'){
                    sh '''
                        chmod +x gradlew
                        ./gradlew build --exclude-task test
                    '''
                }
            }
            post{
                failure{
                    echo 'Gradle jar build failure!'
                }
                success{
                    echo 'Gradle jar build success!'
                }
            }
        }
        
...

 

  • 'Gradle build daemon disappeard unexpectedly (it may have been killed or may have crashed)' 에러 문구 발생

 

 

PyeongHo Factory

즐거운 공장

pyeongho.github.io

  • 위 블로그 글처럼 Gradle 옵션에 no-daemon 추가하여도 똑같은 에러 발생으로 Agent Pod의 스펙이 부족한가 의심됨

 

  • 현재 Agent pod의 스펙은 다음과 같이 로그에 나타난다.

 

  • 빌드 로그에서 빌드 데몬이 메모리가 494.9 MiB를 사용한다는 것(?)으로 유추할 수 있는 로그를 확인하였다.
    • 이를 통해 Agent Pod의 스펙이 부족함으로 나타나는 에러 발생으로 생각이 굳혀져 갔다.

 

  • 현재 젠킨스를 Helm으로 Kubernetes에 구축한 환경이라 Jenkins 내 시스템 설정에서 Agent 파드를 설정하는 파트가 존재하지 않았다..
  • 방법을 강구하던 도중 Jenkins Helm Chart Value 파일을 살펴보았다.

 

  • [agent.resources] 필드가 존재하였다 !
    • 바로 메모리 두 배 스펙업 고고링
    • helm upgrade jenkins jenkins/jenkins -f jenkins-values.yaml -n jenkins
agent:
  enabled: true
  defaultsProviderTemplate: ""
  # URL for connecting to the Jenkins contoller
  jenkinsUrl:
  # connect to the specified host and port, instead of connecting directly to the Jenkins controller
  jenkinsTunnel:
  kubernetesConnectTimeout: 5
  kubernetesReadTimeout: 15
  maxRequestsPerHostStr: "32"
  namespace:
  image: "jenkins/inbound-agent"
  tag: "4.11.2-4"
  workingDir: "/home/jenkins/agent"
  nodeUsageMode: "NORMAL"
  customJenkinsLabels: []
  # name of the secret to be used for image pulling
  imagePullSecretName:
  componentName: "jenkins-agent"
  websocket: false
  privileged: false
  runAsUser:
  runAsGroup:
  hostNetworking: false
  resources:
    requests:
      cpu: "512m"
      memory: "1024Mi"
    limits:
      cpu: "512m"
      memory: "1024Mi"

 

  • 정의한 스펙이 적용된 것을 확인

 

  • 아시죠 ?
    • 뭔가 감이 오잖아요
    • 될 것 같은 이 기분..
    • 에러 로그랑 그냥 시작부터 다르다는 것을..
    • 성공 !!!!!!! 😭

 

 

  • 참고
  • Back-End JAR file PATH
    • /home/jenkins/agent/workspace/test-backend/demo/build/libs/demo-0.0.1-SNAPSHOT.jar
    • java -jar demo-0.0.1-SNAPSHOT.jar
저작자표시 (새창열림)

'CI/CD' 카테고리의 다른 글

Jenkins Docker Image Push  (0) 2022.12.14
Jenkins Back-End Dockerizing  (0) 2022.12.13
Jenkins Webhook 연동  (0) 2022.12.12
ArgoCD Helm 설치 & 테스트  (0) 2022.12.10
Jenkins 환경 설정 및 빌드 테스트  (0) 2022.12.09
    'CI/CD' 카테고리의 다른 글
    • Jenkins Docker Image Push
    • Jenkins Back-End Dockerizing
    • Jenkins Webhook 연동
    • ArgoCD Helm 설치 & 테스트
    uuuhhh
    uuuhhh
    피땀눈물의 삽질기

    티스토리툴바