목록DevOps & Infra/Jenkins (17)
오늘도 한 뼘 더
# 배경 젠킨스 버전을 업데이트하고 나서 "free style project"로 만든 젠킨스 잡의 구성을 변경하고 저장하려고 하면 다음과 같은 에러가 발생하였다. JSONObject["scm"] is not a JSONObject # 원인 및 해결 방법 젠킨스 버전이 변경되고 나서 버전이 맞지 않아서 발생한 문제였다. 다음의 젠킨스 이슈 페이지를 보고 문제를 파악하게 되었다. https://issues.jenkins.io/browse/JENKINS-72202 Loading... Hello, After updating Jenkins from 2.425 to 2.426 I am not able to Save/Apply changes to jobs that use git as SCM. The error is ..
# 배경 git parameter 중 Tag 파라미터를 불러와서 쓰는 프로젝트들이 있었는데 Tag가 불러와지지 않는다. # 문제 Jenkins의 버전이 변경되었는데 이전에 되던 git tag 조회가 되지 않는다. # 원인 및 해결 방법 ## 원인 새로운 Jenkins의 버전과 기존에 사용하던 git parameter / git 플러그인의 버전이 맞지 않아서 생긴 문제였다. ## 해결 방법 Jenkins 플러그인 > git paramter | git 플러그인 버전 업데이트
# 배경 도커로 올린 jenkins의 이미지를 변경하는 과정에서 다음과 같은 에러가 발생했다. Unable to read /var/jenkins_home/config.xml # 문제 다음과 같은 에러 메시지가 뜨면서 Jenkins가 시작이 되지 않았다. config.xml파일을 백업으로 이름을 변경하고 올리면 Jenkins가 재시작이 되었는데 문제는 설정이 다 초기화되는 상태였다. ---- Debugging information ---- cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : hudson.security.GlobalMatrixAuthorizationStrategy class :..
Jenkins job에 대해서 pipeline으로 작성을 할 때 빌드 및 배포에 대한 결과에 따라서 다른 작업을 두 가지 방법으로 진행할 수 있다. # try / catch 사용하기 pipeline { agent any stages { stage('Checkout') { steps { script { try { build job: 'jenkins_job', parameters: [ string(name: 'parameter_name', value: "${parameter_value}")] } catch (e) { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "exit 0" echo "error" } echo 'TEST Fail! But..
# 배경 jenkins job 중 pipeline을 사용하는 곳에서 git 체크아웃을 받을 때 branch가 아닌 tag로 체크 아웃을 하고 싶다. # 처음 시도한 것 Git Paramter로 Tag 값을 받고 git branch에 parameter값을 그대로 넘겨주었다. node { stage 'Checkout' git branch: "${params.TAG}", credentialsId: 'CRD', url: 'git@gitlab.com/jihyunb.git' ... ... } 오류 발생 git branch에 parameter 값을 넘기니 다음과 같이 찾을 수 없다는 에러가 발생하였다. # 오류 원인 파이프라인을 잘못 작성한 건가 싶어 확인을 하기 위해 Pipeline Syntax에 들어가서 확인을 ..
# 배경 Jenkins 작업 중 사용하던 플러그인 하나가 작동하지 않아서 Jenkins 관리에 들어가니 다음과 같이 빨갛게 경고가 떠있고 그 내용 중 작동하지 않는 플러그인에 대해 Vulnerability 경고가 떠 있었다. # 문제 해당 문제는 설치되어 있는 플러그인에 대한 취약점이 발견되면 뜨는 경고라고 한다. 문제를 해결하기 위해서는 일단 플러그인 관리에서 확인하여야 한다고 한다. # 해결 플러그인 관리에 들어가면 두 가지 색으로 경고 창이 나뉘는데 | 파란색 경고창 아래의 사진과 같이 파란색의 경고창이 뜨는 경우는 젠킨스 자체 버전을 업그레이드해야 하는 경우이다. | 노란색 경고창 아래와 같은 노란색 경고창의 경우 플러그인의 버전만 업그레이드하면 해결되는 경고이다.
# 배경 Jenkins에서 ssh를 사용하여 다른 서버에 접근하여 빌드 배포를 하는 과정에서 에러가 발생하였다. # 문제 SSH 관련 작업을 진행다가 다음과 같은 에러가 발생하였다. ERROR: Exception when publishing, exception message Exec exit status not zero. Status [1] # 원인 해당 문제를 찾아보니 SSH를 이용하여 서버에 파일을 보낼 때 또는 서버에서 script를 실행할 때에 사용하는 script 내용이나 파일을 찾을 수 없어 발생하는 문제라고 한다. # 해결 방법 해결 방법을 검색해 보니 보통 파일 경로를 제대로 작성했는지 확인해 보라고 했는데 나의 경우 파일을 보내는 것은 없어서 이는 확인이 되었다. 실행하고자 했던 scri..
# 배경 Jenkins 에서 dev와 staging 두개의 배포 구성이 같으나 staging은 배포가 되고 dev는 배포가 되지 않는 문제를 발견했다. # 문제 발생 이후 테스트 시도 방법 staging배포용 jenkins job에서 dev를 배포 배포 성공 dev에서 staging배포 배포 실패 새로운 jenkins job을 staging을 복사해서 생성 배포 성공 기존의 dev jenkins job을 삭제하고 새로운 jenkins job의 이름을 변경하여 배포 배포 실패 # 문제 원인 테스트 시도 방법을 통해서 workspace 문제라는 것을 추측할 수 있었다. 배포에 실패한 workspace과 성공한 workspace의 package-lock.json에 에러가 발생한 eslint를 검색하니 서로 내..
# 배경 Jenkins 버전을 업그레이드하는 중간에 다음과 같은 에러가 발생하였다. Please update your scripts to use /usr/bin/tini going forward. The previous path has been preserved for backwards compatibility # 해결 방법 처음에 저 폴더에 무언가를 변경해줘야 하는 건지 해서 계속 저 폴더를 찾아봤는데 script의 내용을 변경해야 했다. 변경 전 FROM jenkins/jenkins:2.332.1 USER root . . . RUN apt-get -y install docker-ce docker-ce-cli containerd.io ENTRYPOINT ["/sbin/tini", "--", "/usr/..
# 배경 AWS ECR에 이미지를 올릴 때 계속 구성에 들어가서 이미지 태그를 바꿨는데 이를 파라미터 값으로 받아서 자동화하고 싶다. # Parameter로 값 받기 String Parameter를 매개변수로 추가하여서 받을 수 있도록 한다. # Pipeline에 적용하기 파라미터 값을 적용할 때 파라미터 값이 들어갈 부분을 큰따옴표(")로 감싸주는 것이 포인트다! node { parameters { string(name: 'TAG', defaultValue: 'latest', description: 'tag') } stage('Build image') { app = docker.build(":${params.TAG}") sh 'docker image prune -f' } }