GitHub ActionsでRSpecを実行するサンプル(with PostgreSQL)
GitHub上でRSpecを実行したいときのサンプル。
データーベースはPostgreSQLを使うパターン。
以下のymlを.github/workflows
に配置して、git pushすればテストが動き出す。
テストが終了したら、成功と失敗とでSlackのメッセージを出し分けしている。
環境変数はあらかじめGitHubに設定しておく
RAILS_MASTER_KEY_TEST
config/credentials/test.yml.enc
の複合キーPOSTGRES_PASSWORD
データベースのパスワード(任意)SLACK_WEBHOOK_URL
Slackの通知先のURL(任意)
name: Test
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
env:
RAILS_ENV: test
TZ: Asia/Tokyo
RAILS_MASTER_KEY: $
services:
mysql:
image: postgres:15.0
ports:
- 5432:5432
env:
POSTGRES_PASSWORD: $
steps:
- uses: actions/checkout@v3
- name: Set up Ruby 3.1.2
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.1.2
- name: rails setup
run: |
bundle install
- name: database setup
run: |
bin/rails db:create
bin/rails db:migrate
- name: run tests
run: |
bundle exec rspec
- name: success notification
if: success()
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"test success"}' $
- name: failure notification
if: failure()
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"test failed"}' $
最初、RAILS_MASTER_KEY_TEST
の設定を忘れていて、以下のようなメッセージが出てしまった。
PG::ConnectionBad: connection to server at "::1", port 5432 failed: fe_sendauth: no password supplied
あと、actions/checkout@v2
を使っていたら以下のような警告が出た。これはv2
をv3
にしてactions/checkout@v3
すればOK
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: actions/checkout@v2
これだけでとりあえずのCIが動き出すから、本当にいい時代になったなと思う。
この記事の環境情報
- postgres 15.0
- RSpec 3.11.0
あとがき(slideshareを久しぶりに見たら)
SlideShareというスライド共有サービスがあって、久しぶりに覗いてみたら改悪が酷すぎてすぐに見るのをやめた。
スライドを数ページめくるたびに広告のスライドが差し込まれ、邪魔をしてくる。
しかも広告のスライドが表示されると一定の期間、スライドを先に進めることができない。
ほかにもページ遷移をしようとすると、また広告みたいのが出てくる。
これはひどい。
広告を出すなとは言わないけれどもう少し配慮が必要なのではないか。
クラウドのサービスはこの手のリスクが常に潜んでいる。
最初はいいけれど収益が悪化したり、オーナーが変わったりすると当初の運営方針が崩れ去ってしまうことがある。
そんなこともあって、今自分はセルフサイトに自分の記事をアップするようにしている。
PostgreSQLに関する他の記事を読む
RSpecに関する他の記事を読む
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら