CI #251
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: ['**'] | |
paths-ignore: ['*.adoc', 'docs/**', 'js/*.adoc'] | |
pull_request: | |
branches: [main] | |
paths-ignore: ['*.adoc', 'docs/**', 'js/*.adoc'] | |
schedule: | |
- cron: '45 2 * * MON' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
activate: | |
if: >- | |
github.event_name == 'push' || | |
(github.event_name == 'schedule' && github.repository_owner == 'asciidoctor') || | |
(github.event_name == 'pull_request' && !startsWith(github.head_ref, 'docs/')) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Proceed | |
run: echo ok go | |
build: | |
needs: activate | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
ruby: ['2.7', '3.3'] | |
exclude: | |
- os: ubuntu-latest | |
ruby: '3.3' | |
include: | |
- os: ubuntu-latest | |
ruby: '3.3' | |
primary: primary | |
runs-on: ${{ matrix.os }} | |
env: | |
BUNDLE_WITHOUT: coverage:lint | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Enable lint and coverage (primary only) | |
if: matrix.primary | |
run: | | |
echo 'BUNDLE_WITHOUT=' >> $GITHUB_ENV | |
echo 'COVERAGE=deep' >> $GITHUB_ENV | |
- name: Install Ruby (uses cached dependencies for non-scheduled build) | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler-cache: ${{ github.event_name != 'schedule' }} | |
- name: Install Ruby dependencies (scheduled build only) | |
if: github.event_name == 'schedule' | |
run: | | |
bundle config --local path vendor/bundle | |
bundle --jobs 3 --retry 3 | |
- name: Run linter | |
if: matrix.primary | |
run: bundle exec rake lint | |
- name: Run tests | |
run: bundle exec ruby -w $(bundle exec ruby -e 'print File.join Gem.bindir, %q(rake)') spec | |
- name: Install Node.js | |
if: matrix.primary | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
- name: Run smoke test for npm package | |
if: matrix.primary | |
working-directory: js | |
run: npm run ci |