Skip to content
Merged
Changes from 10 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
aee8b6b
build(ci): add lint job to CI workflow
mertssmnoglu May 17, 2025
72cf486
build(ci): update coverage job to include permissions and use specifi…
mertssmnoglu May 17, 2025
14e2be0
build(ci): add iojs CI workflow to cover iojs tests
mertssmnoglu May 18, 2025
423ade6
build(ci): remove unnecessary 'npm install' step from iojs CI workflow
mertssmnoglu May 18, 2025
7ff64c3
build(ci): enhance CI workflow with concurrency and update Node.js ve…
mertssmnoglu May 18, 2025
e05092a
build(ci): update download-artifact action to version 4.3.0 for colle…
mertssmnoglu May 20, 2025
75d8337
build(ci): add names to test and coverage jobs for clarity
mertssmnoglu May 20, 2025
c912f90
build(ci): disable credential persistence for checkout actions
mertssmnoglu May 20, 2025
c47e724
Delete .github/workflows/iojs.yml
mertssmnoglu May 24, 2025
9620f6a
Merge branch 'master' into mertssmnoglu-new-ci
UlisesGascon Jun 5, 2025
e724829
fix(ci): redundant 'permissions' field
mertssmnoglu Jun 6, 2025
866cfe7
style(ci): format ci.yml
mertssmnoglu Jun 6, 2025
0568f26
fix(ci): avoid coverage artifact conflicts and enable merging of mult…
mertssmnoglu Jun 6, 2025
5306ea7
fix(ci): remove multiple artifact merge step
mertssmnoglu Jun 6, 2025
37b35a3
fix(ci): add 'Merge coverage reports' step
mertssmnoglu Jun 21, 2025
b79cf04
feat(ci): enable manual triggering of workflows with workflow_dispatch
mertssmnoglu Jun 21, 2025
521e19f
fix(ci): update coverage report paths to use node version instead of …
mertssmnoglu Jul 12, 2025
9b581ed
fix(ci): remove pull request types
mertssmnoglu Jul 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 128 additions & 53 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,57 @@
name: ci

on:
- pull_request
- push
push:
branches:
- master
paths-ignore:
- '*.md'
pull_request:
types:
- opened
- edited # in case of base branch change
- synchronize
branches:
- "**"
paths-ignore:
- '*.md'

# Cancel in progress workflows
# in the scenario where we already had a run going for that PR/branch/tag but then triggered a new run
concurrency:
group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true

permissions:
contents: read

permissions:
contents: read

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 'lts/*'

- name: Install dependencies
run: npm install --ignore-scripts --include=dev

- name: Run lint
run: node --run lint # Use `node --run` to run the script in package.json

test:
runs-on: ubuntu-20.04
name: Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
name:
- Node.js 0.8
Expand All @@ -34,6 +75,12 @@ jobs:
- Node.js 16.x
- Node.js 17.x
- Node.js 18.x
- Node.js 19.x
- Node.js 20.x
- Node.js 21.x
- Node.js 22.x
- Node.js 23.x
- Node.js 24.x

include:
- name: Node.js 0.8
Expand Down Expand Up @@ -62,60 +109,83 @@ jobs:
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 4.x
node-version: "4.9"
node-version: "4"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 5.x
node-version: "5.12"
node-version: "5"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 6.x
node-version: "6.16"
node-version: "6"
npm-i: mocha@6.2.3 nyc@14.1.1 supertest@6.1.6

- name: Node.js 7.x
node-version: "7.10"
node-version: "7"
npm-i: mocha@6.2.3 nyc@14.1.1 supertest@6.1.6

- name: Node.js 8.x
node-version: "8.16"
npm-i: mocha@7.2.0
node-version: "8"
npm-i: mocha@7.2.0 nyc@14.1.1 supertest@6.1.6

- name: Node.js 9.x
node-version: "9.11"
npm-i: mocha@7.2.0
node-version: "9"
npm-i: mocha@7.2.0 nyc@14.1.1 supertest@6.1.6

- name: Node.js 10.x
node-version: "10.24"
npm-i: mocha@8.4.0
node-version: "10"
npm-i: mocha@8.4.0 supertest@6.1.6

- name: Node.js 11.x
node-version: "11.15"
npm-i: mocha@8.4.0
node-version: "11"
npm-i: mocha@8.4.0 supertest@6.1.6

- name: Node.js 12.x
node-version: "12.22"
node-version: "12"
npm-i: "supertest@6.1.6"

- name: Node.js 13.x
node-version: "13.14"
node-version: "13"
npm-i: "supertest@6.1.6"

- name: Node.js 13.x
node-version: "14.21"
- name: Node.js 14.x
node-version: "14"

- name: Node.js 15.x
node-version: "15.14"
node-version: "15"
npm-i: "supertest@6.1.6"

- name: Node.js 16.x
node-version: "16.19"
node-version: "16"

- name: Node.js 17.x
node-version: "17.9"
node-version: "17"

- name: Node.js 18.x
node-version: "18.13"
node-version: "18"

- name: Node.js 19.x
node-version: "19"

- name: Node.js 20.x
node-version: "20"

- name: Node.js 21.x
node-version: "21"

- name: Node.js 22.x
node-version: "22"

- name: Node.js 23.x
node-version: "23"

- name: Node.js 24.x
node-version: "24"

steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

- name: Install Node.js ${{ matrix.node-version }}
shell: bash -eo pipefail -l {0}
Expand All @@ -130,7 +200,12 @@ jobs:
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"

- name: Configure npm
run: npm config set shrinkwrap false
run: |
if [[ "$(npm config get package-lock)" == "true" ]]; then
npm config set package-lock false
else
npm config set shrinkwrap false
fi

- name: Remove npm module(s) ${{ matrix.npm-rm }}
run: npm rm --silent --save-dev ${{ matrix.npm-rm }}
Expand All @@ -144,8 +219,8 @@ jobs:
shell: bash
run: |
# eslint for linting
# - remove on Node.js < 12
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 12 ]]; then
# - remove on Node.js < 10
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then
node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
grep -E '^eslint(-|$)' | \
sort -r | \
Expand All @@ -162,7 +237,7 @@ jobs:
echo "node@$(node -v)"
echo "npm@$(npm -v)"
npm -s ls ||:
(npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print $2 "=" $3 }' >> "$GITHUB_OUTPUT"
(npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print "::set-output name=" $2 "::" $3 }'

- name: Run tests
shell: bash
Expand All @@ -174,10 +249,6 @@ jobs:
npm test
fi

- name: Lint code
if: steps.list_env.outputs.eslint != ''
run: npm run lint

- name: Collect code coverage
if: steps.list_env.outputs.nyc != ''
run: |
Expand All @@ -188,37 +259,41 @@ jobs:
fi

- name: Upload code coverage
uses: actions/upload-artifact@ff15f0306b3f739f7b6fd43fb5d26cd321bd4de5 # v3.2.1
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: steps.list_env.outputs.nyc != ''
with:
name: coverage
path: ./coverage
retention-days: 1

coverage:
name: Coverage
permissions:
checks: write # for coverallsapp/github-action to create new checks
contents: read # for actions/checkout to fetch code
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

- name: Install lcov
shell: bash
run: sudo apt-get -y install lcov

- name: Collect coverage reports
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: coverage
path: ./coverage

- name: Merge coverage reports
shell: bash
run: find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./coverage/lcov.info

- name: Upload coverage report
uses: coverallsapp/github-action@09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d # master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

- name: Install lcov
shell: bash
run: sudo apt-get -y install lcov

- name: Collect coverage reports
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: coverage
path: ./coverage

- name: Merge coverage reports
shell: bash
run: find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./coverage/lcov.info

- name: Upload coverage report
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
with:
file: ./coverage/lcov.info
github-token: ${{ secrets.GITHUB_TOKEN }}