Menyimpan permata Ruby di GitHub Actions menggunakan ruby ​​/ setup-ruby atau actions / cache

Bagaimana cara memuat permata Ruby dari cache ke dalam Tindakan GitHub untuk mempercepat peluncuran proyek yang dibangun dalam sistem integrasi berkelanjutan (CI) ini? Mengaktifkan dan menjalankan semua dependensi proyek Ruby on Rails (RoR) dalam waktu singkat dapat membantu mengurangi waktu yang diperlukan untuk menjalankan pengujian untuk proyek tersebut. Di sinilah caching berguna. Permata Ruby yang diperlukan dalam suatu proyek dapat disimpan dalam cache menggunakan GitHub Actions, sehingga permata tersebut dapat dimuat lebih cepat saat pipeline CI dijalankan daripada sebelumnya. Ada dua cara untuk menyimpan permata Ruby yang dapat diterapkan saat menggunakan CI GitHub Actions. Salah satunya menyediakan aplikasi ruby/setup-ruby



, dan yang kedua - actions/cache



.



  • actions / cache adalah solusi caching yang populer untuk gem Ruby.
  • ruby/setup-ruby β€” , Ruby Ruby . , «» (, GitHub Actions Β«actionΒ»).






Actions/cache β€”



Tindakan / cache adalah solusi populer yang dapat digunakan untuk menempatkan data di cache dan mengambilnya dari cache saat proses pembuatan proyek dimulai di sistem CI lagi. Tindakan ini sering digunakan untuk proyek RoR yang juga menggunakan tindakan untuk mengontrol versi Ruby di Tindakan GitHub actions/setup-ruby



.



Mari pertimbangkan contoh file konfigurasi untuk mengatur caching di GitHub Actions, yang menggunakan 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

      
      





Mari menganalisis fitur utama file ini:



  • Anda perlu menentukan jalur ke direktori yang ingin Anda cache. Dalam kasus kami, ini adalah - vendor/bundle



    .
  • Selain itu, di sini kami membuat kunci key



    cache unik ( ) menggunakan informasi tentang versi sistem operasi dan file Gemfile.lock



    . Mengubah versi sistem operasi atau memasang permata baru Gemfile.lock



    yang menyebabkan perubahan akan menghasilkan nilai baru key



    .
  • Selanjutnya, kita perlu mengkonfigurasi bundler sehingga ia menginstal semua permata Ruby kita ke dalam direktori vendor/bundle



    .
  • Di sini Anda dapat menggunakan parameter bundler berikut:


Jika Anda tertarik untuk melihat file YAML lengkap dengan pengaturan Tindakan GitHub untuk proyek Rail - di sini , di sini , di sana , berikut beberapa artikel kami tentang topik ini.



Ruby / setup-ruby - menginstal Ruby dan menyimpan permata di cache



Di atas, kami menyebutkan bahwa ini sering digunakan dalam proyek RoR actions/setup-ruby



. Tapi tindakan actions/setup-ruby



itu sudah tidak digunakan lagi. Disarankan untuk menggunakan tindakan alih-alih hari ini ruby/setup-ruby



. Di dalamnya, di antara fitur-fitur lainnya, ada juga kemampuan untuk meng-cache data. Seperti inilah tampilan file konfigurasi ketika dimaksudkan untuk digunakan 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

      
      





Seperti yang Anda lihat, opsi untuk mengatur cache permata ini lebih sederhana daripada yang kami jelaskan di bagian sebelumnya. Dan di sini, sebagai tambahan, kami memiliki sistem kontrol versi Ruby. Intinya, jika kita berbicara tentang permata cache, semuanya bermuara pada menambahkan baris ke file konfigurasi bundler-cache: true



.



Tetapi apa yang dapat Anda temukan dengan merujuk ke dokumentasi untuk ruby/setup-ruby



:



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





Kami telah membahas dua cara untuk menyimpan permata Ruby di CI GitHub Actions. Kami berharap siapa pun yang perlu mempercepat pembangunan proyek Ruby dapat menemukan bahan pemikirannya di sini. Namun, tentu saja, ada cara lain untuk mempercepat pipeline CI, misalnya, menjalankan pengujian secara paralel .



Apakah Anda menggunakan GitHub Actions?






All Articles