사용자 도구

사이트 도구


ci:jenkins

문서의 이전 판입니다!


Jenkins

실행

  • JENKINS_HOME 환경 변수로 설정 정보 및 빌드 정보 실행 디렉토리를 지정할 수 있다.
  • Starting and Accessing Jenkins
    java -jar jenkins.war
    # or
    nohup java -jar jenkins.war > $LOGFILE 2>&1
  • 주요 옵션
    • --httpPort=$HTTP_PORT
    • --httpsPort=$HTTP_PORT
    • --prefix=$PREFIX : context path 처럼 URL 앞에 붙는 값
    • -XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M

Jenkins on Redhat 계열 Linux

모니터링

설정

Custom Workspace Directory

  • workspace 경로를 직접 지정가능하다.
  • General → 고급(Advanced) → 사용자 빌드 경로 사용 에서 지정

JUnit Test 결과

  • Post-build Actiosn → Publish JUnit test result report의 값을 (Gradle일 경우) **/build/test-results/*.xml 형태로 지정한다.

Jenkins의 모든 노드에 대해 Job 실행

  • 가끔씩 Jenkins 노드들에 대해 어떠한 일괄작업(cron 비슷한 일)이 필요할 때가 있다.
  • Parameterized Trigger PluginNode Parameter Plugin을 통해 모든 Jenkins 노드에 대한 일괄 처리를 수행할 수 있다.

Job DSL Plugin

인증

  • 인증시 group을 authenticated로 지정하면 로그인 사용자에 대한 권한을 의미한다.

설정의 백업

  • SCM Sync configuration plugin : git, subversion을 통한 설정 백업
  • script를 만들어 백업하기 Backing up your Jenkins configuration
    DUMP="jenkins_data.`date +%Y-%m-%d`.tar.gz"
    JENKINS_HOME=/home/us/jenkins/jenkins-data
    nice -n 19 tar --exclude-from jenkins_backup_exclusions -C $JENKINS_HOME -zcf $DUMP .
    • 백업 제외 목록 파일 jenkins_backup_exclusions
      config-history/*
      jobs/*/workspace*
      jobs/*/builds/*/archive
      plugins/*/*
      plugins/*.bak
      war
      cache
    • 제외목록 내 임의 추가
      jobs/*/builds
      logs

Backup

Logging

  • 플러그인 등의 로그를 분할해서 볼 수 있다.
  • Jenkins 관리 → 시스템 로그에서 신규 로그 기록기 추가에서 플러그인의 패키지를 로거로 지정해준다.

Plugins

Clone Workspace SCM Plugin

  • 클론 대상(부모) 빌드의 Post Build Action에서 Archive for Clone Workspace SCM을 등록하고 대상 파일은 정도로 주면 된다. ==== FindBugs Plugin ==== * Jenkins FindBugs Plugin * 버그 종류와 갯수에 따라 빌드를 실패로 간주하게 설정함으로써 점진적으로 코드 품질을 높여갈 수 있다. ==== Log Parser Plugin ==== * Jenkins Log Parser Plugin * build의 console log를 파싱하여 등장하는 로그 메시지에 따라 error,warning 등을 발생시킬 수 있다. * 사용예 Lombok Field 지정이 올바른지 검사 ==== Build User Vars Plugin ==== * Build User Vars Plugin * 빌드릴 실행한 사용자 정보를 환경 변수로 만들어주는 플러그인 ==== Google Login ==== * Google Login 구글을 통한 인증 ===== JOB ===== ==== Parameterized Build ==== * Parameterized Build * 직접 빌드 실행시 파라미터를 주어 실행할 수 있다. * 원격으로도 파라미터를 주어 빌드를 실행할 수 있다. ==== Execute Shell 의 결과로 다른 Parameterized Build 호출 ==== * Execute Shell 등의 결과로 나온 파라미터 값을 가지고 다른 Parameterized Build를 호출하려면 해당 key=value 값을 Java Properties 파일 형식으로 셸에서 생성해 둬야 한다. * Passing variable from shell script to jenkins - Stack Overflow <code sh> echo DATE=$(date +%Y-%m-%d) > env.properties </code> * 그리고서, 해당 파일 env.properties 를 빌드 후 조치 → Trigger parameterized build on other projects 에서 Parameters from properties file 에 지정해준다. * 만약, Jenkins 자체에 미리 지정된 환경 변수를 파라미터로 넘기려면 Predefined Parameters 로 충분하다. ==== Process Kill ==== * Jenkins Build에서 tomcat등을 실행해 띄워 두려고 하면 자꾸 프로세스가 죽는다. * Jenkins Build는 빌드에서 실행한 모든 프로세스를 기본으로 죽인다. * https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller * 죽이기를 원하지 않는 프로세스는 프로세스를 띄울 때 환경변수 BUILD_ID를 Jenkins가 지정한 것이 아닌 엉뚱한 값으로 바꿔주면된다. Jenkins는 프로세스의 BUILD_ID 환경 변수 값을 보고 프로세스를 죽이기 때문이다.<code sh> BUILD_ID=무언가JENKINS BUILD_ID가 아닌 어떤값 ./your_hudson_script_that_starts_tomcat.sh </code> === Jenkins build log 파일에서 문자열 검색 === * 특정 날짜의 build 로그 파일들 중에서만 문자열 검색을 하고 싶을 때 * see find<code> find . -name log -newerct yyyy-MM-dd ! -newerct yyyy-MM-dd -exec grep -Hni '검색어' {} \; </code> ===== External Job ===== * Jenkins 서버가 아닌(master, slave 모두 아닌) 전혀 다른 외부 서버에서 실행된 Job을 Jenkins 에서 모니터링할 수 있다. * 단, 해당 서버에서 특정 작업을 실행할 때 Jenkins 서버로 실행 정보를 쏴줘야 한다. * Monitoring external jobs - Jenkins - Jenkins Wiki * monitoring - Setup Jenkins to monitor external job <code sh> # 외부 모니터링 툴 설치 sudo apt-get install jenkins-external-tool-monitor # 외부 Job 실행, my-jenkins 는 Jenkins Master Server, nightly-backup 은 external job 이름 JENKINS_HOME=http://my-jenkins/ java -jar jenkins-core-*.jar nightly-backup ./backup.sh –nightly /home </code> ===== 기타 ===== * How to get the job name on a groovy dynamic parameter in Jenkins * Jenkins git plugin이 슬래시(slash, /) 들어간 브랜치 이름을 인식 못하는 문제가 있는 듯 함. * SSH Slave Plugin의 경우 stderr / Standard Error'' 스트림을 제대로 전달해주지 못하는 문제가 있어보임. * Administering Jenkins - Jenkins - Jenkins Wiki
ci/jenkins.1551178008.txt.gz · 마지막으로 수정됨: 2019/02/26 19:46 저자 kwon37xi