1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
---
################################################################################
# Template - Node CI
#
# Description:
# This contains the basic information to: install dependencies, run tests,
# get coverage, and run linting on a nodejs project. This template will run
# over the MxN matrix of all operating systems, and all current LTS versions
# of NodeJS.
#
# Dependencies:
# This template assumes that your project is using the `tap` module for
# testing. If you're not using this module, then the step that runs your
# coverage will need to be adjusted.
#
################################################################################
name: Node CI
on: [push, pull_request]
jobs:
build:
strategy:
fail-fast: false
matrix:
node-version: [10.x, 12.x, 13.x]
os: [ubuntu-latest, windows-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
# Checkout the repository
- uses: actions/checkout@v2
# Installs the specific version of Node.js
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
################################################################################
# Install Dependencies
#
# ASSUMPTIONS:
# - The project has a package-lock.json file
#
# Simply run the tests for the project.
################################################################################
- name: Install dependencies
run: npm ci
################################################################################
# Run Testing
#
# ASSUMPTIONS:
# - The project has `tap` as a devDependency
# - There is a script called "test" in the package.json
#
# Simply run the tests for the project.
################################################################################
- name: Run tests
run: npm test -- --no-coverage
################################################################################
# Run coverage check
#
# ASSUMPTIONS:
# - The project has `tap` as a devDependency
# - There is a script called "coverage" in the package.json
#
# Coverage should only be posted once, we are choosing the latest LTS of
# node, and ubuntu as the matrix point to post coverage from. We limit
# to the 'push' event so that coverage ins't posted twice from the
# pull-request event, and push event (line 3).
################################################################################
- name: Run coverage report
if: github.event_name == 'push' && matrix.node-version == '12.x' && matrix.os == 'ubuntu-latest'
run: npm test
env:
# The environment variable name is leveraged by `tap`
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
################################################################################
# Run linting
#
# ASSUMPTIONS:
# - There is a script called "lint" in the package.json
#
# We run linting AFTER we run testing and coverage checks, because if a step
# fails in an GitHub Action, all other steps are not run. We don't want to
# fail to run tests or coverage because of linting. It should be the lowest
# priority of all the steps.
################################################################################
- name: Run linter
run: npm run lint
|