Ruby / setup-rubyまたはactions / cacheを使用してGitHubアクションでRubygemをキャッシュする

Ruby gemをキャッシュからGitHubActionsにロードして、この継続的インテグレーション(CI)システムでのプロジェクトビルドの起動を高速化するにはどうすればよいですか?Ruby on Rails(RoR)プロジェクトのすべての依存関係をすぐに立ち上げて実行することで、そのプロジェクトのテストの実行にかかる時間を短縮できます。これは、キャッシュが役立つところです。プロジェクトに必要なRubygemは、GitHub Actionsを使用してキャッシュできるため、CIパイプラインの起動時に以前よりもはるかに高速にロードできます。CIGitHubアクションを使用するときに適用できるRubygemをキャッシュする方法は2つあります。それらの1つはアプリケーションを提供しruby/setup-ruby



、2つ目は-を 提供します actions/cache













Actions/cache —



アクション/キャッシュは、データをキャッシュに配置し、次にプロジェクトビルドプロセスがCIシステムで開始されたときにキャッシュからデータを取得するために使用できる一般的なソリューションです。このアクションは、GitHubActionsでRubyバージョンを制御するアクションも使用するRoRプロジェクトでよく使用されます actions/setup-ruby







GitHubActionsでキャッシュを整理するための構成ファイルの例を考えてみましょう actions/cache







# .github/workflows/main.yml
name: Main
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - uses: actions/cache@v2
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-

      - name: Bundle install
        env:
          RAILS_ENV: test
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3

      
      





このファイルの主な機能を分析してみましょう。



  • キャッシュするディレクトリへのパスを指定する必要があります。私たちの場合、それは-vendor/bundle



    です。
  • さらに、ここではkey



    、オペレーティングシステムのバージョンとファイルに関する情報を使用して、一意のキャッシュキー(を生成しますGemfile.lock



    オペレーティングシステムのバージョンを変更するかGemfile.lock



    変更の原因となる新しいgemインストールすると、新しい値が生成されますkey



  • 次に、すべてのRubygemをディレクトリにインストールするようにバンドラーを構成する必要がありますvendor/bundle



  • ここでは、次のバンドラーパラメーターを使用できます。


あなたはレールのプロジェクトのためのGitHubのアクションの設定で完全なYAMLファイルでご覧になることをに興味がある場合- ここではここではそこにここではこのトピックに関する私たちの記事の一部です。



Ruby / setup-ruby-Rubyのインストールとgemのキャッシュ



上記で、RoRプロジェクトでよく使用されることを説明しました actions/setup-ruby



。しかし、このアクション actions/setup-ruby



は非推奨になりました。最近では、代わりにアクションを使用することをお勧めします ruby/setup-ruby



。その中には、他の機能の中でも、データをキャッシュする機能もあります。これは、使用することを意図した場合の構成ファイルの外観です ruby/setup-ruby







# .github/workflows/main.yml
name: Main
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - uses: ruby/setup-ruby@v1
      with:
        #     .ruby-version
        ruby-version: 2.7
        #  'bundle install'     
        bundler-cache: true

    #  RSpec-
    - run: bundle exec rspec

      
      





ご覧のとおり、gemキャッシュを整理するためのこのオプションは、前のセクションで説明したものよりも簡単です。さらに、ここでは、Rubyバージョン管理システムを自由に使用できます。本質的に、gemのキャッシュについて話す場合、それはすべて、構成ファイルに行を追加することになります bundler-cache: true







しかし、あなたはを参照して調べることができます ドキュメントのために ruby/setup-ruby







, , , . , -, , - — . , , actions/cache ( — , , , .lock-, , , ABI- ruby-head ). , , , bundler-cache: true…





CIGitHubアクションでRubygemをキャッシュする2つの方法について説明しました。Rubyプロジェクトの構築をスピードアップする必要がある人が、ここで考えるべき食べ物を見つけてくれることを願っています。ただし、もちろん、CIパイプラインを高速化する方法は他にもあります。たとえば、 テストの並列実行などです。



GitHubアクションを使用していますか?






All Articles