Skip to content

build(deps-dev): bump the eslint group across 1 directory with 5 updates #431

build(deps-dev): bump the eslint group across 1 directory with 5 updates

build(deps-dev): bump the eslint group across 1 directory with 5 updates #431

Workflow file for this run

name: CI/CD
on:
push:
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
- '.github/workflows/ci-cd.yml'
branches:
- '*'
- '!dependabot/**'
tags:
- 'v*'
pull_request:
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
- '.github/workflows/ci-cd.yml'
jobs:
spec:
name: Verify spec
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download spec
run: |
curl https://stream.wikimedia.org/?spec > /tmp/spec.json
- name: Upload spec
uses: actions/upload-artifact@v4
with:
name: spec
path: /tmp/spec.json
- name: Verify spec
run: |
EXPECT="$( cat spec.json | sha1sum )"
ACTUAL="$( cat /tmp/spec.json | sha1sum )"
echo "Expected: $EXPECT"
echo "Actual: $ACTUAL"
if [[ "$EXPECT" != "$ACTUAL" ]]; then
echo "Spec has changed. Please update the code."
echo "Update with \`curl https://stream.wikimedia.org/?spec > spec.json\`"
exit 1
fi
build:
name: Build
needs: spec
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js latest
uses: actions/setup-node@v4
with:
node-version: latest
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build
path: dist
test-browser:
name: Test (browser)
needs: build
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}--test-browser
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Use Node.js latest
uses: actions/setup-node@v4
with:
node-version: latest
- name: Install dependencies
run: npm ci
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: build
path: dist
- name: Test (browser)
run: npm run test:browser
test-node:
name: Test
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: true
max-parallel: 1
matrix:
node-version: [ 14.x, 'lts/*', latest ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}--test-${{ matrix.node-version }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: build
path: dist
- name: Test (node)
run: npm run test:node
publish:
name: Publish (npm)
needs: [ test-node, test-browser ]
if: ${{ startsWith( github.ref, 'refs/tags/v' ) }}
concurrency:
group: ${{ github.workflow }}--publish
cancel-in-progress: true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js lts/*
uses: actions/setup-node@v4
with:
node-version: lts/*
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies
run: npm ci
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: build
path: dist
- name: Publish
if: ${{ !contains( github.ref, '-rc' ) }}
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_KEY }}
- name: Publish (release candidate)
if: ${{ contains( github.ref, '-rc' ) }}
run: npm publish --tag rc
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_KEY }}