agama/.github/workflows/ci-rubocop.yml
Ladislav Slezák 94870bc0f0
[SLE-16.0] Cache installed Ruby gems in CI (#3528)
## Problems

- Old versions of GitHub Actions (they use old unsupported NodeJS v20,
GitHub prints a ["Node.js 20 actions are deprecated"
](https://github.com/agama-project/agama/actions/runs/26086960005)
warning)
- Installing the needed Ruby gems takes quite long time (about [one and
half
minute](https://github.com/agama-project/agama/actions/runs/26175301761/job/77003739150#step:9:7))

## Solution

- Update the GitHub Action versions
- Cache the installed Ruby gems, restoring the cache and running Bundler
now takes [just about 15
seconds](https://github.com/agama-project/agama/actions/runs/26182626931/job/77029525706#step:8:17).
So the test run is it at least more than one minute faster!

## Testing

- Tested with the updated GitHub Actions
2026-05-21 09:48:50 +02:00

69 lines
2.1 KiB
YAML

name: "CI - Rubocop"
permissions:
contents: read
on:
push:
paths:
# NOTE: GitHub Actions do not allow using YAML references, the same path
# list is used below for the pull request event. Keep both lists in sync!!
# this file as well
- .github/workflows/ci-rubocop.yml
# Rubocop configuration
- service/.rubocop.yml
# all Ruby files
- service/Gemfile
- service/bin/**
- service/**.rb
pull_request:
paths:
# NOTE: GitHub Actions do not allow using YAML references, the same path
# list is used above for the push event. Keep both lists in sync!!
# this file as well
- .github/workflows/ci-rubocop.yml
# Rubocop configuration
- service/.rubocop.yml
# all Ruby files
- service/Gemfile
- service/bin/**
- service/**.rb
jobs:
rubocop:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./service
steps:
- name: Git Checkout
uses: actions/checkout@v6
# cache the locally installed Ruby gems for the next invocation to speed up the run,
# installing Rubocop from scratch takes about 1 minute, the cache is restored in about 2 seconds
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#using-the-cache-action
- name: Rubygem cache
id: rubygem-cache
uses: actions/cache@v5
with:
path: |
~/.local/share/gem
key: ${{ runner.os }}-rubocop-${{ hashFiles('.github/workflows/ci-rubocop.yml') }}
- name: Install Rubocop
# install Rubocop if it was not restored from the cache
if: steps.rubygem-cache.outputs.cache-hit != 'true'
run: gem install --user-install rubocop:1.24.1
- name: Modify Rubocop config
# read the shared configuration directly from the GitHub repository
run: sed -i -e "s#/usr/share/YaST2/data/devtools/data/#https://raw.githubusercontent.com/yast/yast-devtools/refs/heads/master/ytools/y2tool/#" .rubocop.yml
- name: Rubocop
run: ~/.local/share/gem/ruby/*/bin/rubocop