【GitHub Actions】を導入しテストとデプロイを自動化
学習のアウトプットとして投稿しています。
何かご指摘がございましたらお願いいたします。
GitHub Actions とは
GitHub Actionsは、GitHub上にあるリポジトリの変更を検知し、自動でテストを実行したりデプロイを行ってくれるCI/CDツールのこと。パブリックリポジトリでは無料で使用できる。
テストコードを実行する際、bundle exec rspec
など手動でコマンドを実行する必要があったが、その部分を自動化できるため手間が減り、実行を忘れてしまうことも防ぐことができる。
GitHub Actionsの導入
ファイルの作成
GitHub Actionsは、YAML 構文を使用して、イベント、ジョブ、およびステップを定義します。 これらの YAML ファイルは、コードリポジトリの .github/workflows というディレクトリに保存されます。
引用: サンプルワークフローを作成する
GitHub Actionsは、YAML 構文を使用して、イベント、ジョブ、およびステップを定義します。 これらの YAML ファイルは、コードリポジトリの .github/workflows というディレクトリに保存されます。
引用: サンプルワークフローを作成する
以上から.github/workflowsディレクトリにsample.ymlファイルを作成します。
まずはテストを自動化する設定を書きます。
name: Tests and Deproy
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6.7
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.7
env:
RAILA_ENV: test
run: |
sudo apt-get -yqq install libsqlite3-dev
bundle install
bin/rails db:create
bin/rails db:migrate
bin/yarn install
bundle exec rubocop
bundle exec rspec
ファイル構成
on:
の部分でイベントを作成します。今回はpush時とpull_request時にGitHub Actionosが起動します。ブランチを指定することもできます。
runs-on:
で実行環境のOSを指定します。
steps:
以下でアクションやコマンドなどを記述していきます。
uses: actions/checkout@v2
コミュニティーアクションを使い対象コードを実行環境内に取り込みます。
uses: ruby/setup-ruby@v1
コミュニティーアクションを使いRuby実行環境を用意します。with:ruby-version
でバージョンを指定できます。今回は2.6.7に設定してあります。
run:
以下で実行したいコマンドを記述していきます。今回はDBにsqliteを使います。テストコマンドにbundle execはつけなくても良いかもしれませんが一様つけておきます。
ここまでのファイルでリポジトリにコードが新しくpush,pull_requestされた際、テストが自動で動いてくれるようになります。
Herokuデプロイの自動化
Heroku Deployを参考にファイルに追記します。
name: Tests and Deproy
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6.7
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.7
env:
RAILA_ENV: test
run: |
sudo apt-get -yqq install libsqlite3-dev
bundle install
bin/rails db:create
bin/rails db:migrate
bin/yarn install
bundle exec rubocop
bundle exec rspec
heroku-deproy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/[email protected]
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME"
heroku_email: "YOUR EMAIL"
ジョブは、同じランナーで実行される一連のステップです。 デフォルトでは、複数のジョブを含むワークフローは、それらのジョブを並行して実行します。 ジョブを順番に実行するようにワークフローを設定することもできます。 たとえば、ワークフローにコードのビルドとテストという2つのシーケンシャルなジョブを持たせ、テストジョブをビルドジョブのステータスに依存させることができます。 ビルドジョブが失敗した場合は、テストジョブは実行されません。
引用:ジョブ
以上より、テストとデプロイがデフォルトでは同時に実行されてしまうのでneeds: build
でbuildが成功したらデプロイするようにしています。
HEROKU_API_KEYを対象リポジトリの環境変数に設定しなければいけないので、そちらも設定しておきます。
これで、GitHub Actionsの設定が終わりです。
GitHubへPush
参考
Understanding GitHub Actions
GitHub Action Deploy to Heroku
リポジトリに暗号化されたシークレットを作成する
パーフェクト Ruby on Rails 【増補改訂版】
Author And Source
この問題について(【GitHub Actions】を導入しテストとデプロイを自動化), 我々は、より多くの情報をここで見つけました https://qiita.com/ishigami_masato/items/f38b8d27962ff2248598著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .