167 lines
5.0 KiB
YAML
167 lines
5.0 KiB
YAML
name: test
|
|
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- 'dependabot/**'
|
|
paths:
|
|
- 'test/**'
|
|
- 'lib/**'
|
|
- '!**/maintainer.js'
|
|
- '!**/radar.js'
|
|
- '!**/radar-rules.js'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- '.github/workflows/test.yml'
|
|
pull_request: ~
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
jest:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
services:
|
|
redis:
|
|
image: redis
|
|
ports:
|
|
- 6379/tcp
|
|
options: --entrypoint redis-server
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [ 18, 20 ]
|
|
name: Jest on Node ${{ matrix.node-version }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v2
|
|
with:
|
|
version: 8
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'pnpm'
|
|
- name: Install dependencies (pnpm)
|
|
run: pnpm i
|
|
- name: Run postinstall script for dependencies
|
|
run: pnpm rb
|
|
- name: Test all and generate coverage
|
|
run: pnpm run jest:coverage
|
|
env:
|
|
REDIS_URL: redis://localhost:${{ job.services.redis.ports[6379] }}/
|
|
- name: Upload coverage to Codecov
|
|
if: ${{ matrix.node-version == '18' }}
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos as documented, but seems broken
|
|
|
|
puppeteer:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [ 18, 20 ]
|
|
chromium:
|
|
- name: bundled Chromium
|
|
dependency: ''
|
|
environment: '{}'
|
|
- name: Chromium from Ubuntu
|
|
dependency: chromium-browser
|
|
environment: '{ "CHROMIUM_EXECUTABLE_PATH": "chromium-browser" }'
|
|
- name: Chrome from Google
|
|
dependency: google-chrome-stable
|
|
environment: '{ "CHROMIUM_EXECUTABLE_PATH": "google-chrome-stable" }'
|
|
name: Jest puppeteer on Node ${{ matrix.node-version }} with ${{ matrix.chromium.name }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v2
|
|
with:
|
|
version: 8
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'pnpm'
|
|
- name: Install dependencies (pnpm)
|
|
run: pnpm i
|
|
- name: Run postinstall script for dependencies
|
|
run: pnpm rb
|
|
- name: Install Chromium
|
|
if: ${{ matrix.chromium.dependency != '' }}
|
|
# 'chromium-browser' from Ubuntu APT repo is a dummy package. Its version (85.0.4183.83) means
|
|
# nothing since it calls Snap (disgusting!) to install Chromium, which should be up-to-date.
|
|
# That's not really a problem since the Chromium-bundled Docker image is based on Debian bullseye,
|
|
# which provides up-to-date native packages.
|
|
run: |
|
|
set -ex
|
|
curl -s "https://dl.google.com/linux/linux_signing_key.pub" | gpg --dearmor |
|
|
sudo tee /etc/apt/trusted.gpg.d/google-chrome.gpg > /dev/null
|
|
echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" |
|
|
sudo tee /etc/apt/sources.list.d/google-chrome.list > /dev/null
|
|
sudo apt-get update
|
|
sudo apt-get install -yq --no-install-recommends ${{ matrix.chromium.dependency }}
|
|
- name: Test puppeteer
|
|
run: pnpm run jest puppeteer
|
|
env: ${{ fromJSON(matrix.chromium.environment) }}
|
|
|
|
docs:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [ 18, 20 ]
|
|
defaults:
|
|
run:
|
|
working-directory: website
|
|
name: Build docs on Node ${{ matrix.node-version }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v2
|
|
with:
|
|
version: 8
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'pnpm'
|
|
cache-dependency-path: website/pnpm-lock.yaml
|
|
- run: pnpm i
|
|
- name: Build docs
|
|
run: pnpm run build
|
|
working-directory: website
|
|
|
|
all:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [ 18, 20 ]
|
|
name: Build radar and maintainer on Node ${{ matrix.node-version }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v2
|
|
with:
|
|
version: 8
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'pnpm'
|
|
- run: pnpm i
|
|
- name: Build radar and maintainer
|
|
run: npm run build:all
|
|
|
|
automerge:
|
|
if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'
|
|
needs: [ jest, puppeteer, docs, all ]
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
contents: write
|
|
steps:
|
|
- uses: fastify/github-action-merge-dependabot@v3
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
target: patch
|