Mettre en cache des gemmes Ruby dans des actions GitHub à l'aide de ruby ​​/ setup-ruby ou d'actions / cache

Comment charger des gemmes Ruby du cache dans des actions GitHub pour accélérer le lancement d'un projet construit dans ce système d'intégration continue (CI)? Obtenir toutes les dépendances d'un projet Ruby on Rails (RoR) en un rien de temps peut aider à réduire le temps nécessaire à l'exécution des tests pour ce projet. C'est là que la mise en cache est utile. Les gemmes Ruby nécessaires dans un projet peuvent être mises en cache à l'aide d'actions GitHub, afin qu'elles puissent être chargées beaucoup plus rapidement au démarrage du pipeline CI qu'auparavant. Il existe deux façons de mettre en cache les gemmes Ruby applicables lors de l'utilisation d'actions CI GitHub. L'un d'eux prévoit l'application ruby/setup-ruby



, et le second - actions/cache



.



  • actions / cache est une solution de mise en cache populaire pour les gemmes Ruby.
  • ruby/setup-ruby — , Ruby Ruby . , «» (, GitHub Actions «action»).






Actions/cache —



Actions / cache est une solution populaire qui peut être utilisée pour placer des données dans le cache et pour les récupérer à partir du cache la prochaine fois que le processus de création de projet démarre dans un système CI. Cette action est souvent utilisée pour les projets RoR qui utilisent également une action pour contrôler les versions Ruby dans les actions GitHub actions/setup-ruby



.



Prenons un exemple de fichier de configuration pour organiser la mise en cache dans GitHub Actions, qui utilise 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

      
      





Analysons les principales caractéristiques de ce fichier:



  • Vous devez spécifier le chemin d'accès au répertoire que vous souhaitez mettre en cache. Dans notre cas, c'est - vendor/bundle



    .
  • De plus, nous générons ici une clé de key



    cache unique ( ) en utilisant des informations sur la version du système d'exploitation et le fichier Gemfile.lock



    . La modification de la version du système d'exploitation ou l'installation d'une nouvelle gemme à Gemfile.lock



    l'origine du changement générera une nouvelle valeur key



    .
  • Ensuite, nous devons configurer le bundler pour qu'il installe toutes nos gemmes Ruby dans le répertoire vendor/bundle



    .
  • Ici, vous pouvez utiliser les paramètres de bundler suivants:


Si vous souhaitez consulter les fichiers YAML complets avec les paramètres d'actions GitHub pour les projets ferroviaires - ici , ici , , voici quelques-uns de nos articles sur ce sujet.



Ruby / setup-ruby - Installation de Ruby et mise en cache des gemmes



Ci-dessus, nous avons mentionné qu'il est souvent utilisé dans les projets RoR actions/setup-ruby



. Mais l'action actions/setup-ruby



était obsolète. Il est recommandé d'utiliser une action au lieu de celle-ci ces jours-ci ruby/setup-ruby



. Dans celui-ci, entre autres fonctionnalités, il y a également la possibilité de mettre en cache des données. Voici à quoi ressemble le fichier de configuration lorsqu'il est destiné à être utilisé 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

      
      





Comme vous pouvez le voir, cette option pour organiser la mise en cache des gemmes est plus simple que ce que nous avons décrit dans la section précédente. Et ici, en plus, nous avons à notre disposition le système de contrôle de version Ruby. En substance, si nous parlons de la mise en cache des gemmes, tout se résume à ajouter une ligne au fichier de configuration bundler-cache: true



.



Mais ce que vous pouvez découvrir en vous référant à la documentation pour ruby/setup-ruby



:



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





Nous avons couvert deux façons de mettre en cache les gemmes Ruby dans les actions CI GitHub. Nous espérons que tous ceux qui ont besoin d'accélérer la construction de projets Ruby ont trouvé ici matière à réflexion. Mais, bien sûr, il existe d'autres moyens d'accélérer les pipelines CI, par exemple, l' exécution parallèle de tests.



Utilisez-vous des actions GitHub?






All Articles