LoginSignup
0
0

More than 3 years have passed since last update.

【GitHub Actions】GitHub Package Registryを利用してRspecを実行する

Last updated at Posted at 2021-01-16

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をテストします。
自分が書いたコードの例ですがこんな感じです。

superlinter.yml
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の使い方

GitHub Actionsの使い方

-c オプションについての記事

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