ruby/setup-ruby
, der zweite -
actions/cache
.
- Actions / Cache ist eine beliebte Caching-Lösung für Ruby-Edelsteine.
- ruby/setup-ruby — , Ruby Ruby . , «» (, GitHub Actions «action»).
Actions/cache —
Aktionen / Cache ist eine beliebte Lösung, mit der Daten im Cache abgelegt und beim nächsten Start des Projekterstellungsprozesses in einem CI-System aus dem Cache abgerufen werden können. Diese Aktion wird häufig für RoR-Projekte verwendet, die auch eine Aktion zum Steuern von Ruby-Versionen in GitHub-Aktionen verwenden
actions/setup-ruby
.
Betrachten wir ein Beispiel für eine Konfigurationsdatei zum Organisieren des Caching in GitHub-Aktionen, die Folgendes verwendet
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
Lassen Sie uns die Hauptmerkmale dieser Datei analysieren:
- Sie müssen den Pfad zu dem Verzeichnis angeben, das Sie zwischenspeichern möchten. In unserem Fall ist es -
vendor/bundle
. - Außerdem generieren wir hier einen eindeutigen
key
Cache- Schlüssel ( ) mit Informationen zur Betriebssystemversion und zur DateiGemfile.lock
. Wenn Sie die Betriebssystemversion ändern oder ein neues Juwel installierenGemfile.lock
, das die Änderung verursacht , wird ein neuer Wert generiertkey
. - Als nächstes müssen wir den Bundler so konfigurieren, dass alle unsere Ruby-Edelsteine im Verzeichnis installiert werden
vendor/bundle
. - Hier können Sie die folgenden Bundler-Parameter verwenden:
Wenn Sie sich die vollständigen YAML-Dateien mit den Einstellungen für GitHub-Aktionen für Rail-Projekte ansehen möchten , finden Sie hier , hier , hier einige unserer Artikel zu diesem Thema.
Ruby / Setup-Ruby - Installation von Ruby und Zwischenspeichern von Edelsteinen
Oben haben wir erwähnt, dass es häufig in RoR-Projekten verwendet wird
actions/setup-ruby
. Aber die Aktion
actions/setup-ruby
wurde abgelehnt. Es wird heutzutage empfohlen, stattdessen eine Aktion zu verwenden
ruby/setup-ruby
. Darin besteht unter anderem die Möglichkeit, Daten zwischenzuspeichern. So sieht die Konfigurationsdatei aus, wenn sie verwendet werden soll
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
Wie Sie sehen können, ist diese Option zum Organisieren des Zwischenspeicherns von Edelsteinen einfacher als die im vorherigen Abschnitt beschriebene. Und hier steht uns zusätzlich das Ruby-Versionskontrollsystem zur Verfügung. Wenn wir über das Zwischenspeichern von Edelsteinen sprechen, kommt es im Wesentlichen darauf an, der Konfigurationsdatei eine Zeile hinzuzufügen
bundler-cache: true
.
Aber was Sie herausfinden können, indem Sie sich auf die Dokumentation beziehen für
ruby/setup-ruby
:
, , , . , -, , - — . , , actions/cache ( — , , , .lock-, , , ABI- ruby-head ). , , , bundler-cache: true…
Wir haben zwei Möglichkeiten zum Zwischenspeichern von Ruby-Edelsteinen in CI GitHub-Aktionen behandelt. Wir hoffen, dass jeder, der den Aufbau von Ruby-Projekten beschleunigen muss, hier einige Denkanstöße gefunden hat. Natürlich gibt es auch andere Möglichkeiten, um CI-Pipelines zu beschleunigen, z. B. die parallele Ausführung von Tests.
Verwenden Sie GitHub-Aktionen?