github action 5行のRails ciワークフロー

2897 ワード

数年前、マット・スワンソンはgreat post Githubアクションに対するRails CIの設定についてそれはすぐに新しいアプリのためのCIを設定するためのリファレンスへの私の移動になった.
時間が経つにつれて、私はいくつかの更新と調整をしたので、私は新しいプロジェクトを開始するたびに私は私の古いプロジェクトのいずれかからの設定をコピーします.しかし、これはそれぞれのプロジェクトが徐々に矛盾していることを意味し、一部は他よりも更新されました.
私はすべての私のアプリの1つの単一のベースワークフローを持っていたので、私は変更を行った場合は、すべてのアプリケーションは簡単にそれから恩恵を受ける可能性があります.

再利用可能なワークフロー


2021年11月、githubはReusable Workflows が一般的である.
GitHubアクションは長い間、複合的なアクションをサポートしていますが、再利用可能なワークフローは、より簡潔な構成を可能にし、個々のステップを個別に構築するのではなく、ワークフロー全体を他のリポジトリから参照する機能を可能にします.
Read more about it on GitHub’s blog .

セットアップレール


出版したsetup-rails Railsアプリケーションのための迅速かつ容易にCIを有効にするための再利用可能なワークフローとして.
repoに単一のファイルを作成します..github/workflows/verify.yml , 以下の内容で、データベースを構成して、アプリケーションのテストを実行する作業CIワークフローを持つ必要があります.
name: Verify
on: [push]

jobs:
  verify:
    uses: andyw8/setup-rails/.github/workflows/verify.yml@v1

ご覧くださいthis example app それを行動で見ること.
ワークフローを実行するのは遅いかもしれませんが、依存関係がキャッシュされると、その後の実行はずっと速くなります.
私も共有しましたRailsbyte このコマンドを1つのコマンドで設定できます.rails app:template LOCATION="https://railsbytes.com/script/VMys8A"

原理と構成


設計したsetup-rails だから、ほとんどのアプリケーションに必要な設定なしで基本的なレベルで動作する必要があります.
あなたのアプリケーションに応じて有効にすることができますいくつかのオプションがありますREADME 詳細は
現在Postgresだけがサポートされていますが、少なくともMySQLをカバーするために拡張したいと思います.

機能強化


マットの偉大な出発点の上で、私はいくつかのアップデートを行いました:
  • の最新バージョンを使用するsetup-node and setup-ruby
  • サポートを追加するrails test (例: minitest )とrspec

  • Enabled Dependabot アクションの更新setup-rails 依存する
  • 用途setup-node ’カスタムアプローチではなく、JavaScriptキャッシュ
  • スキップするdevelopment 不要な作業を避けるためにバンドルを実行するときの宝石.
  • 巻き込まれる


    私はすでに私のアプリのほとんどを使用していますが、私はより広いフィードバックを得るのが大好きだ.
    してくださいsetup-rails あなたのアプリで、それはあなたのためにどのように動作するか知っている.問題とプルの要求は歓迎です!