사용자 도구

사이트 도구


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을 등록하고 대상 파일은 ** 정도로 주면 된다.

Warnings Next Generation Plugin

FindBugs Plugin

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

Log Parser Plugin

Build User Vars Plugin

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

Google Login

JOB

Parameterized Build

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

Execute Shell 의 결과로 다른 Parameterized Build 호출

echo DATE=$(date +%Y-%m-%d) > env.properties
  • 그리고서, 해당 파일 env.properties빌드 후 조치 → Trigger parameterized build on other projects 에서 Parameters from properties file에 지정해준다.
  • 만약, Jenkins 자체에 미리 지정된 환경 변수를 파라미터로 넘기려면 Predefined Parameters 로 충분하다.

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.1562747343.txt.gz · 마지막으로 수정됨: 2019/07/10 17:29 저자 kwon37xi