Almacenamiento en caché de gemas de Ruby en acciones de GitHub usando ruby ​​/ setup-ruby o actions / cache

¿Cómo cargar gemas Ruby desde el caché en acciones de GitHub para acelerar el lanzamiento de una compilación de proyecto en este sistema de integración continua (CI)? Poner en funcionamiento todas las dependencias de un proyecto de Ruby on Rails (RoR) en poco tiempo puede ayudar a reducir el tiempo que lleva ejecutar las pruebas para ese proyecto. Aquí es donde el almacenamiento en caché resulta útil. Las gemas de Ruby necesarias en un proyecto se pueden almacenar en caché usando Acciones de GitHub, por lo que se pueden cargar mucho más rápido cuando se inicia la canalización de CI que antes. Hay dos formas de almacenar en caché las gemas Ruby que son aplicables cuando se usan acciones de CI GitHub. Uno de ellos prevé la aplicación ruby/setup-ruby



, y el segundo - actions/cache



.



  • actions / cache es una popular solución de almacenamiento en caché para las gemas Ruby.
  • ruby/setup-ruby — , Ruby Ruby . , «» (, GitHub Actions «action»).






Actions/cache —



Acciones / caché es una solución popular que se puede utilizar para colocar datos en el caché y recuperarlos del caché la próxima vez que se inicie el proceso de construcción del proyecto en un sistema de CI. Esta acción se usa a menudo para proyectos RoR que también usan una acción para controlar versiones de Ruby en Acciones de GitHub actions/setup-ruby



.



Consideremos un ejemplo de un archivo de configuración para organizar el almacenamiento en caché en Acciones de GitHub, que usa 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

      
      





Analicemos las principales características de este archivo:



  • Debe especificar la ruta al directorio que desea almacenar en caché. En nuestro caso, es - vendor/bundle



    .
  • Además, aquí generamos una clave de key



    caché única ( ) utilizando información sobre la versión del sistema operativo y el archivo Gemfile.lock



    . Cambiar la versión del sistema operativo o instalar una nueva gema Gemfile.lock



    que provoque el cambio generará un nuevo valor key



    .
  • A continuación, necesitamos configurar el paquete para que instale todas nuestras gemas Ruby en el directorio vendor/bundle



    .
  • Aquí puede utilizar los siguientes parámetros del paquete:


Si está interesado en echar un vistazo a los archivos YAML completos con la configuración de Acciones de GitHub para proyectos ferroviarios, aquí , aquí , allá , aquí están algunos de nuestros artículos sobre este tema.



Ruby / setup-ruby: instalación de Ruby y almacenamiento en caché de gemas



Anteriormente, mencionamos que se usa a menudo en proyectos RoR actions/setup-ruby



. Pero la acción actions/setup-ruby



quedó en desuso. Se recomienda utilizar una acción en lugar de ella en estos días ruby/setup-ruby



. En él, entre otras características, también existe la posibilidad de almacenar datos en caché. Así es como se ve el archivo de configuración cuando está destinado a ser utilizado 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

      
      





Como puede ver, esta opción para organizar el almacenamiento en caché de gemas es más simple de lo que describimos en la sección anterior. Y aquí, además, tenemos a nuestra disposición el sistema de control de versiones Ruby. En esencia, si hablamos de caché de gemas, todo se reduce a agregar una línea al archivo de configuración bundler-cache: true



.



Pero lo que puede averiguar consultando la documentación para ruby/setup-ruby



:



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





Hemos cubierto dos formas de almacenar en caché las gemas Ruby en Acciones de CI GitHub. Esperamos que cualquiera que necesite acelerar la construcción de proyectos Ruby haya encontrado algo en lo que pensar aquí. Pero, por supuesto, hay otras formas de acelerar las canalizaciones de CI, por ejemplo, la ejecución paralela de pruebas.



¿Estás usando acciones de GitHub?






All Articles