LoginSignup
5
4

More than 3 years have passed since last update.

Github ActionsでDockerイメージをpullしてtestを行うJobを作成してみる手順

Last updated at Posted at 2020-09-24

今回はPythonのプロジェクトのリポジトリを Github Actionspytestdocker-compose のイメージ上で行う為の練習を行ったのでそのメモを記載します。

前提条件

  • Github の packages のトークンを作成しておく。
  • docker login しておく。
  • Github の 任意のリポジトリにSecretsをpackages操作可能なトークン番号を登録しておく。
    (私の環境ではGHCR_IO_TOKENという名前で登録している。)

フォルダ構成


repository/             # リポジトリディレクトリ
 ├ .github/
 │ ├ workflows/
 │ │ └ sample.yml     # Github actionsのファイル
 ├ project/
 │ ├ sample/           #(説明省略)
 │ │ ├ __init__.py
 │ │ └ add.py
 │ └ test/             #(説明省略)
 │   ├ __init__.py   
 │   └ test_add.py
 ├ docker-compose.yml   # 後ほど詳細記載
 ├ Dockerfile           # 適当なPythonイメージ(説明省略)
 └ requirements.txt     # 適当なパッケージを記載(今回はpytestのみ記載している)

手順

  1. docker-compose.ymlにimageを ghcr.io 指定したイメージ名を記載する。
  2. docker-compose up でイメージを作成後、docker-compose push してイメージをPushする
  3. github actionsのファイルで pull して pytestを行う!

イメージをghcr.ioに上げる。

以下のようにイメージを指定する。

docker-compose.yml
 services:
    python:
        build: .
        #image: ghcr.io/Githubのユーザー名/リポジトリ名/イメージ名:タグ名
        image: ghcr.io/n-jun-k2/sample-actions/python:v1

ローカルでイメージを作成し、Pushする。

# とりあえずいつもの様にイメージを作成
docker-compose up -d 
# イメージをPush
docker-compose push

Github Actions のCIファイルについて

...は適当に変えてください。
チェックアウトしてログインしてpullしてpytestを行っています。

.github/workflows/sample.yml
name: ...
on:
  ...

jobs:
  ...:
    name: ...
    runs-on: ubuntu-20.04
    steps:
        - name: Checkout                                         # チェックアウトして
          uses: actions/checkout@v2
        - name: Login to Docker                                  # docker login して
          uses: docker/login-action@v1
          with:
            registry: ghcr.io
            username: ${{ github.repository_owner }}
            password: ${{ secrets.GHCR_IO_TOKEN }}
        - name: Set up Docker                                    # pull してイメージを立ち上げ
          run: |
            docker pull ghcr.io/n-jun-k2/sample-actions/python:v1
            docker-compose up -d
        - name: Run test                                         # pytestを行う。
          run: docker-compose exec -T python pytest

このCIファイルでdocker-composeイメージ上でpytestが行われる。

注意すべき点は、以下の-Tのオプションを入れ忘れないように!エラーになっちゃうよ

docker-compose exec -T python pytest
5
4
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
5
4