스프링 배치 Job Runner를 조사하던 중에 Jenkins에서 batch프로젝트를 gradle빌드해 보았습니다.

Jenkins 환경

  • Amazon Linux2
    • AMI ID : ami-0f27d081df46f326c
    • AMI 이름 : amzn2-ami-hvm-2.0.20210303.0-x86_64-gp2
  • Jenkins
    • version : Jenkins 2.284

인증정보 등록

Github 아이디/패스워드 인증 방법

  • Jenkins에서 Repository관련 작업이 가능하도록 Github에서 Personal access tokens를 발행합니다. ( Settings > Developer settings > Personal access tokens )

    gihhub-personal-access-tokens

  • Manage Jenkins > Manage Credentials > domain에 있는 global을 클릭합니다.

    global-credential

  • Kind는 Username with password를 선택하고 패스워드란에 Personal access tokens값을 입력하고 인증정보를 추가합니다.

    github-credential

Github SSH 인증 방법

  • SSH키를 생성합니다.

    generate-ssh-key
    jenkins-ssh-key

  • Github 프로젝트 설정에서 Deploy keys에 공개키를 추가합니다.

    deploy-keys

  • Kind는 SSH Username with private key를 선택하고 Private Key > Enter directly 에 비밀키를 추가합니다.

    ssh-credential

Gradle, JDK설정

  • 프로젝트에서 사용할 Gradle과 JDK를 Manage Jenkins > System Configuration > Global Tool Configuration에서 설정합니다. 한가지 버전만 설정한 경우 각 JOB에서 디폴트로 설정됩니다. 복수개 버전이 등록된 경우에는 JOB설정시 버전선택이 가능합니다.
    jenkins-global-tool-configuration

Job등록

  • New Item > Freestyle project을 선택해서 Job을 등록합니다. github access tokens으로 인증할 경우에는 Repository URL에 git@github.com:bokyung-kang/batch-test을 입력하고 Credentials에서 github인증을 등록한 Username을 선택합니다.

    build-job-github

  • ssh인증할 경우에는 Repository URL에 git@github.com:bokyung-kang/batch-test을 입력하고 Credentials에서 ssh을 등록한 Username을 선택합니다.

    build-job-ssh

  • build script

    chmod +x gradlew
    
    # test를 실행안하려고 저는 assemble을 실행했습니다
    ./gradlew assemble
    
    # deploy-test에  jar복사
    mkdir -p $JENKINS_HOME/workspace/deploy-test
    cp $WORKSPACE/build/libs/*.jar $JENKINS_HOME/workspace/deploy-test/.
    

Gradle Build

  • 빌드를 실행합니다.
[batch-test] $ /bin/sh -xe /tmp/jenkins568576160326820555.sh
+ chmod +x gradlew
+ ./gradlew assemble
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileKotlin
> Task :compileJava NO-SOURCE
> Task :processResources
> Task :classes
> Task :bootJarMainClassName
> Task :bootJar
> Task :inspectClassesForKotlinIC
> Task :jar SKIPPED
> Task :assemble

BUILD SUCCESSFUL in 33s
5 actionable tasks: 5 executed
+ mkdir -p /var/lib/jenkins/workspace/deploy-test
+ cp /var/lib/jenkins/workspace/batch-test/build/libs/batch-0.0.1-SNAPSHOT.jar /var/lib/jenkins/workspace/deploy-test/.
Finished: SUCCESS
  • $JENKINS_HOME/workspace/deploy-test/에 jar파일이 복사되었네요.
    build-jar