Spring Batchの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 ID/PASSWORD認証方法

  • 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値を入力し認証情報を追加します。

    ssh-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

  • ビルドを実行し、Console Outputを見てみます。
[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