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を使っていたら以下のような警告が出た。これはv2v3にして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というスライド共有サービスがあって、久しぶりに覗いてみたら改悪が酷すぎてすぐに見るのをやめた。

スライドを数ページめくるたびに広告のスライドが差し込まれ、邪魔をしてくる。

しかも広告のスライドが表示されると一定の期間、スライドを先に進めることができない。

ほかにもページ遷移をしようとすると、また広告みたいのが出てくる。

これはひどい。

広告を出すなとは言わないけれどもう少し配慮が必要なのではないか。

クラウドのサービスはこの手のリスクが常に潜んでいる。

最初はいいけれど収益が悪化したり、オーナーが変わったりすると当初の運営方針が崩れ去ってしまうことがある。

そんなこともあって、今自分はセルフサイトに自分の記事をアップするようにしている。