More ESM #175
Workflow file for this run
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: Build | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the project | |
uses: actions/checkout@v2 | |
- name: Cache node modules | |
uses: actions/cache@v1 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 18.x | |
- name: Install dependencies | |
run: npm i | |
- name: Run lint step | |
run: npm run lint | |
test-node: | |
name: Test on Node.js | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: | |
- 16.x # to be removed 2023-09-11 | |
- 18.x # to be removed 2025-04-30 | |
- 20.x # to be removed 2026-04-30 | |
steps: | |
- name: Checkout the project | |
uses: actions/checkout@v2 | |
- name: Cache node modules | |
uses: actions/cache@v1 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v1 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install dependencies | |
run: npm i | |
- name: Run Node.js Tests | |
run: npm run test:node | |
test-linux-browsers: | |
name: Test on Linux Firefox & Chrome | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the project | |
uses: actions/checkout@v2 | |
- name: Cache node modules | |
uses: actions/cache@v1 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 18.x | |
- name: Install dependencies | |
run: npm i | |
- name: Setup Headless Environment | |
run: sudo apt-get install xvfb | |
- name: Run Node.js Tests | |
run: xvfb-run --auto-servernum npm run test:browser -- --browsers Chrome,Firefox | |
- name: Upload coverage | |
if: success() | |
uses: codecov/codecov-action@v1 | |
- name: Cleanup Headless Environment | |
run: | | |
xvfb_pids=`ps aux | grep tmp/xvfb-run | grep -v grep | awk '{print $2}'` | |
if [ "$xvfb_pids" != "" ]; then | |
echo "Killing the following xvfb processes: $xvfb_pids" | |
sudo kill $xvfb_pids | |
else | |
echo "No xvfb processes to kill" | |
fi | |
test-windows-browsers: | |
name: Test on Windows Firefox, Chrome & Edge | |
runs-on: windows-latest | |
steps: | |
- name: Checkout the project | |
uses: actions/checkout@v2 | |
- name: Cache node modules | |
uses: actions/cache@v1 | |
with: | |
path: $APP_DATA/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 18.x | |
- name: Install dependencies | |
run: npm i | |
- name: Run Node.js Tests | |
run: npm run test:browser -- --browsers Chrome,Firefox,IE | |
release: | |
name: Publish a Release | |
if: github.event_name == 'push' | |
runs-on: ubuntu-latest | |
needs: [lint, test-node, test-linux-browsers] | |
steps: | |
- name: Checkout the project | |
uses: actions/checkout@v2 | |
- name: Cache node modules | |
uses: actions/cache@v1 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 18.x | |
- name: Install dependencies | |
run: npm i | |
- name: Run Semantic Release | |
run: npx semantic-release | |
env: | |
NPM_TOKEN: ${{secrets.NPM_TOKEN}} | |
GITHUB_TOKEN: ${{secrets.github_token}} |