GitHub Package Registryへpushしたイメージを使用してRspecを実行します。
Rspecの実行方法で少し躓いたため共有したいと思います。
前提
毎回、GitHub Package Registryへイメージをpushしてしまうと時間もかかりそうだったため、私は自分でpushコマンドは行っています。
TrivyやDockleといったセキュリティ対策は今回行っていません。
Dockerイメージのpush
個人アクセストークンを作成する。
こちらを参考に個人アクセストークンの作成を行ってください。
次にホームディレクトリにTOKEN.txtというファイルを作成し、個人アクセストークンを入れておいてください。
そして、以下のコマンドを参考にログインします。
$ cat ~/TOKEN.txt | docker login https://docker.pkg.github.com -u USERNAME --password-stdin
GitHub Package Registryへイメージをpushする。
docker build -t docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
GitHub Actions
まずこちらを参考に.github/workflows/superlinter.ymlを作成し、GitHubにpushしてGitHub Actionsが動くことを確認します。
無事動くことが確認できたらGitHub Package Registryにpushしたイメージを使ってRspecをテストします。
自分が書いたコードの例ですがこんな感じです。
name: Super-Linter
# 新しいコミットがリポジトリにプッシュされるたびにこのワークフローを実行する
on: push
jobs:
# ジョブキーを設定する。 ジョブ名が指定されていない場合、
# キーはジョブ名として表示される
super-lint:
# ジョブ名を付ける
name: Run rspec
# 実行するマシンのタイプを設定する
runs-on: ubuntu-latest
steps:
# ubuntu-latest マシンでリポジトリのコピーをチェックアウトする
- name: Checkout code
uses: actions/checkout@v2
- name: Login GitHub Registry
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login docker.pkg.github.com -u owner --password-stdin
- name: Pull image from GitHub Registry
run: docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
- name: Run test
run: docker run docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH /bin/sh -c 'rails db:drop db:create db:migrate RAILS_ENV=test; bin/rspec'
migrateとRspecの実行を2つ行うために -c オプションを知るのに結構かかってしまいましたがこれでテストは動くようになりました。
参考使用
###GitHub Package Registryの使い方
https://docs.github.com/ja/packages/guides/configuring-docker-for-use-with-github-packages
###GitHub Actionsの使い方
https://docs.github.com/ja/actions/quickstart
-c オプションについての記事