GitHub Actions上でドッカ―コンテナを起動し、Spring Bootのテストコードを検証する流れについて説明します。
GitHub Actionsのワークフロー作成
リポジトリのルートディレクトリにディレクトリ.github/workflows
を作成し、.ymlファイルを作成します。
.ymlファイル名は何でもOKです。
name: Testing Spring Boot Code On Github Actions
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- run: docker-compose up --abort-on-container-exit
- if: success()
run: echo success
- if: failure()
run: echo failure
- docker-composeを実行するときに
--abort-on-container-exit
オプションをつけて、テストが失敗し、exit codeが1になったらコンテナを停止させるようにします。 -
if: success()
:テストが成功して、ステータスがsuccessだったら、echo successを実行します。 -
if: failure()
:テストが失敗して、ステータスがfailureだったら、echo failureを実行します。
DockerfileとDocker Composeを作成
Dockerfile
FROM openjdk:18-jdk-bullseye
ENV APP_HOME=/usr/app/
RUN apt update && apt upgrade -y && apt install -y curl gnupg sudo git vim wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
WORKDIR /demo/home
COPY . /demo/home
docker-compose.yml
version: '3.8'
services:
web:
container_name: 'web'
build:
context: .
tty: true
working_dir: '/demo/home'
volumes:
- .:/demo/home:cached
ports:
- "8080:8080"
entrypoint: |
bash -e -c "
./gradlew test
"
- entrypointにコンテナが起動されたら、テストを実施するよう
./gradlew test
を書き込みます。
実行
簡単なテストコードを作成し、Github Actions上で検証してみます。
テスト成功
テストコード
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
class DemoApplicationTests {
@Test
void testCodeOnGithubActions() {
assertEquals(1, 1);
}
}
結果
テスト失敗
テストコード
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
class DemoApplicationTests {
@Test
void testCodeOnGithubActions() {
assertEquals(1, 0);
}
}
結果
最後に
詳細のコードはこちらをご参考にしてください。