6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TISAdvent Calendar 2020

Day 11

jib-maven-pluginとGitHub Actionsでコンテナイメージを作ってGitHub Packagesへデプロイする

Last updated at Posted at 2020-12-11

同じ内容をZennにも投稿しました。


概要

jib-maven-pluginを使ってコンテナイメージを作ってGitHub Packagesへデプロイする、というのをGitHub Actionsで行う方法です。

jib-maven-pluginでコンテナイメージをビルドする

jib-maven-pluginではbuildゴールでコンテナイメージをビルドしつつpushできます(ちなみに、コンテナイメージをビルドしつつローカルのDockerへ保存する場合はdockerBuildゴールを使用します)。

buildゴールに必要な値のいくつかはシステムプロパティで渡せます。

項目 システムプロパティ
コンテナイメージ jib.to.image
バージョン jib.to.version
push先のユーザー名 jib.to.auth.username
push先のパスワード jib.to.auth.password

コマンドの例は後ほど登場します。

GitHub Actionsのワークフロー定義を書く

ソースコードのチェックアウトやJavaのセットアップ、Mavenローカルリポジトリのキャッシュなどは一般的なJavaプロジェクトと同様です。

コンテナイメージのビルドとpushもMavenを用いるので、一般的なJavaプロジェクトとそう変わりはありません。
前のセクションで解説した値を設定しつつmvnコマンドを組み立てます。

pushするときのコンテナイメージ名はConfiguring Docker for use with GitHub Packagesにあるようにdocker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSIONという形式です。
push先のユーザー名はGitHubのアカウント、パスワードはPersonal access tokenです。
GitHub PackagesへJARをデプロイするという記事でも書いたのですが、GitHub ActionsではsecretsコンテキストからGITHUB_TOKENという名前でPersonal access tokenを取得できます。

以上のことから、コンテナイメージをビルドしてpushするmvnコマンドは次のようになります(ユーザー名はbackpaper0、GitHubリポジトリ名はdemorepoとします)。

mvn -B package jib:build \
    -Djib.to.image=docker.pkg.github.com/backpaper0/demorepo/demo \
    -Djib.to.version=latest \
    -Djib.to.auth.username=backpaper0 \
    -Djib.to.auth.password=${{ secrets.GITHUB_TOKEN }}

ワークフロー定義の例の全体は次の通りです。

name: Building container image with Jib

on:
  push:
    branches: [ master ]

jobs:
  build:
    name: Build container image
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - uses: actions/setup-java@v1
        with:
          java-version: 11

      - uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-

      - name: Build by Jib
        env:
          CONTAINER_IMAGE: docker.pkg.github.com/backpaper0/demorepo/demo
        run: |
          mvn -B package jib:build -DskipTests \
              -Djib.to.image=$CONTAINER_IMAGE \
              -Djib.to.version=latest \
              -Djib.to.auth.username=backpaper0 \
              -Djib.to.auth.password=${{ secrets.GITHUB_TOKEN }}

以上です。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?