사용자 도구

사이트 도구


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

모니터링

  • http://jenkins-server:port/cc.xml : jenkins-server:post 부분을 대체하고 출력되는 XML을 받아 처리하면 모니터링 툴을 만들 수 있다. CruiseControll용 모니터링 툴과 동일한 스펙이므로 CC용 툴을 사용해도 된다.

설정

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

  • 버그 종류와 갯수에 따라 빌드를 실패로 간주하게 설정함으로써 점진적으로 코드 품질을 높여갈 수 있다.

Log Parser Plugin

Build User Vars Plugin

  • 빌드릴 실행한 사용자 정보를 환경 변수로 만들어주는 플러그인

Google Login

JOB

Parameterized Build

  • 직접 빌드 실행시 파라미터를 주어 실행할 수 있다.
  • 원격으로도 파라미터를 주어 빌드를 실행할 수 있다.

Process Kill

  • Jenkins Build에서 tomcat등을 실행해 띄워 두려고 하면 자꾸 프로세스가 죽는다.
  • Jenkins Build는 빌드에서 실행한 모든 프로세스를 기본으로 죽인다.
  • 죽이기를 원하지 않는 프로세스는 프로세스를 띄울 때 환경변수 BUILD_ID를 Jenkins가 지정한 것이 아닌 엉뚱한 값으로 바꿔주면된다. Jenkins는 프로세스의 BUILD_ID 환경 변수 값을 보고 프로세스를 죽이기 때문이다.
    BUILD_ID=무언가JENKINS BUILD_ID가 아닌 어떤값
    ./your_hudson_script_that_starts_tomcat.sh

Jenkins build log 파일에서 문자열 검색

  • 특정 날짜의 build 로그 파일들 중에서만 문자열 검색을 하고 싶을 때
  • see find
    find . -name log -newerct yyyy-MM-dd ! -newerct yyyy-MM-dd -exec grep -Hni '검색어' {} \;

External Job

# 외부 모니터링 툴 설치
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

기타

ci/jenkins.txt · 마지막으로 수정됨: 2018/11/07 12:35 저자 kwon37xi