Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Appveyor windows testing with GHA #5599

Merged
merged 51 commits into from
Jul 27, 2024
Merged
Show file tree
Hide file tree
Changes from 49 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
42d1509
add windows-latest to the ci matrix
jonchurch Apr 14, 2024
ccb9c89
move os into matrix, set runs-on via matrix
jonchurch Apr 14, 2024
4d7a238
add nvm for windows
jonchurch Apr 14, 2024
2bd8990
fixup! move os into matrix, set runs-on via matrix
jonchurch Apr 14, 2024
48c1124
create cross platform ci, drop linting and code cov for now
jonchurch Apr 20, 2024
6751ab3
fixup! create cross platform ci, drop linting and code cov for now
jonchurch Apr 20, 2024
fdb5e6f
restore ci.yml to upstream
jonchurch Apr 20, 2024
763e9ec
fixup! create cross platform ci, drop linting and code cov for now
jonchurch Apr 20, 2024
c0abdab
fixup! create cross platform ci, drop linting and code cov for now
jonchurch Apr 20, 2024
44fbd93
add step to disable shrinkwrap/lockfile
jonchurch Apr 20, 2024
8f6c183
lets go red to make sure things are working
jonchurch Apr 20, 2024
4fd8df3
Revert "lets go red to make sure things are working"
jonchurch Apr 20, 2024
dd1651d
add 21.7.1 to see if we fail on query there
jonchurch Apr 20, 2024
c5464b6
Revert "add 21.7.1 to see if we fail on query there"
jonchurch Apr 20, 2024
fa68657
add lint job to experimental ci
jonchurch Apr 20, 2024
f53fc7b
name the test job Run tests
jonchurch Apr 20, 2024
752dfcc
add v5 npm install fix
jonchurch Apr 29, 2024
a2f368a
add code coverage upload step
jonchurch Apr 29, 2024
67c8a54
update coverage excludes
jonchurch Apr 29, 2024
e10aa7c
fixup! add code coverage upload step
jonchurch Apr 29, 2024
67fb980
fixup! add v5 npm install fix
jonchurch Apr 29, 2024
6ebb774
fixup! add code coverage upload step
jonchurch Apr 29, 2024
b7034f6
update to setup-node v4
jonchurch Apr 29, 2024
57f16eb
see if setup node will just use io.js for 1-3.x
jonchurch Apr 29, 2024
1dc71e6
add 22.x to matrix
jonchurch Apr 29, 2024
75c9a3b
Revert "see if setup node will just use io.js for 1-3.x"
jonchurch Apr 29, 2024
449c62f
collect coverage on every version, merge, upload to coveralls
jonchurch May 25, 2024
70a0192
split iojs CI out from main ci
jonchurch Jul 7, 2024
fbc8e46
fix job name conflict
jonchurch Jul 7, 2024
af7559b
ignore npm-shrinkwrap so we can drop configuring it in CI
jonchurch Jul 7, 2024
8cb2adf
remove the shrinkwrap and package-lock configuration in CI
jonchurch Jul 7, 2024
b4e8cb5
unpin minors
jonchurch Jul 7, 2024
ab17be3
add flag-name to coverage uploads
jonchurch Jul 7, 2024
a9555f9
fix misspelled action name
jonchurch Jul 7, 2024
7d9ab0a
fixup! unpin minors
jonchurch Jul 7, 2024
508d5ac
add .x to 0.10 and 0.12 to see if setup-node can find those
jonchurch Jul 7, 2024
3dad18a
install npm versions which 0.10 and 0.12 shipped with
jonchurch Jul 7, 2024
15f2860
install globals if needed, maybe this will work?
jonchurch Jul 7, 2024
5eede5f
fixup! install globals if needed, maybe this will work?
jonchurch Jul 7, 2024
c8a9ffd
try installing the globals first
jonchurch Jul 7, 2024
a9b0967
fixup! try installing the globals first
jonchurch Jul 7, 2024
c49ea96
fixup! try installing the globals first
jonchurch Jul 7, 2024
7f92a11
further lock the 0.10/.12 npm fix down to windows
jonchurch Jul 7, 2024
c394f73
fixup! further lock the 0.10/.12 npm fix down to windows
jonchurch Jul 7, 2024
c5b333f
fixup! further lock the 0.10/.12 npm fix down to windows
jonchurch Jul 7, 2024
f4a0909
drop the lts-coverage job
jonchurch Jul 7, 2024
c36797b
generalize the npm version install
jonchurch Jul 8, 2024
814b26c
fixup! generalize the npm version install
jonchurch Jul 8, 2024
611556b
replace ci w/ new ci
jonchurch Jul 8, 2024
0c536b2
add back in concurrency comment
jonchurch Jul 8, 2024
e34a3e6
pin to setup-node@4
jonchurch Jul 12, 2024
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
290 changes: 125 additions & 165 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,194 +13,154 @@ on:
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

jobs:
test:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js {{ matrix.node-version }}
uses: actions/setup-node@v3
jonchurch marked this conversation as resolved.
Show resolved Hide resolved
with:
node-version: 'lts/*'
persist-credentials: false

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

- name: Run lint
run: npm run lint

test:
name: Run tests
strategy:
fail-fast: false
matrix:
name:
- Node.js 0.10
- Node.js 0.12
- io.js 1.x
- io.js 2.x
- io.js 3.x
- Node.js 4.x
- Node.js 5.x
- Node.js 6.x
- Node.js 7.x
- Node.js 8.x
- Node.js 9.x
- Node.js 10.x
- Node.js 11.x
- Node.js 12.x
- Node.js 13.x
- Node.js 14.x
- Node.js 15.x
- 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

os: [ubuntu-latest, windows-latest]
node-version:
- "0.10"
- "0.12"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
# Use supported versions of our testing tools under older versions of Node
# Install npm in some specific cases where we need to
include:
- name: Node.js 0.10
node-version: "0.10"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 0.12
node-version: "0.12"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 1.x
node-version: "1"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 2.x
node-version: "2"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 3.x
node-version: "3"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 4.x
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"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 6.x
node-version: "6"
npm-i: mocha@6.2.2 nyc@14.1.1 supertest@3.4.2

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

- name: Node.js 8.x
node-version: "8"
npm-i: mocha@7.2.0 nyc@14.1.1
- node-version: "0.10"
npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0"
# Npm isn't being installed on windows w/ setup-node for
# 0.10 and 0.12, which will end up choking when npm uses es6
npm-version: "npm@2.15.1"

- name: Node.js 9.x
node-version: "9"
npm-i: mocha@7.2.0 nyc@14.1.1
- node-version: "0.12"
npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0"
npm-version: "npm@2.15.11"

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

- name: Node.js 11.x
node-version: "11"
npm-i: mocha@8.4.0
- node-version: "5"
npm-i: "mocha@5.2.0 nyc@11.9.0 supertest@3.4.2"
# fixes https://github.com/npm/cli/issues/681
npm-version: "npm@3.10.10"

- name: Node.js 12.x
node-version: "12"
npm-i: mocha@9.2.2
- node-version: "6"
npm-i: "mocha@6.2.2 nyc@14.1.1 supertest@3.4.2"

- name: Node.js 13.x
node-version: "13"
npm-i: mocha@9.2.2
- node-version: "7"
npm-i: "mocha@6.2.2 nyc@14.1.1 supertest@6.1.6"

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

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

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

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

- name: Node.js 18.x
node-version: "18"
- node-version: "12"
npm-i: "mocha@9.2.2"

- 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"
- node-version: "13"
npm-i: "mocha@9.2.2"

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

- name: Install Node.js ${{ matrix.node-version }}
shell: bash -eo pipefail -l {0}
run: |
nvm install --default ${{ matrix.node-version }}
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"

- name: Install npm module(s) ${{ matrix.npm-i }}
run: npm install --save-dev ${{ matrix.npm-i }}
if: matrix.npm-i != ''

- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis

- name: Setup Node.js version-specific dependencies
shell: bash
run: |
# eslint for linting
# - remove on Node.js < 12
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 12 ]]; then
node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
grep -E '^eslint(-|$)' | \
sort -r | \
xargs -n1 npm rm --silent --save-dev
fi

- name: Install Node.js dependencies
run: npm install

- name: List environment
id: list_env
shell: bash
run: |
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"

- name: Run tests
shell: bash
run: |
npm run test-ci
cp coverage/lcov.info "coverage/${{ matrix.name }}.lcov"

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

- name: Collect code coverage
run: |
mv ./coverage "./${{ matrix.name }}"
mkdir ./coverage
mv "./${{ matrix.name }}" "./coverage/${{ matrix.name }}"

- name: Upload code coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: ./coverage
retention-days: 1
- uses: actions/checkout@v4
with:
persist-credentials: false

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Npm version fixes
Copy link
Member Author

@jonchurch jonchurch Jul 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the comments in the matrix include section to understand why I added a step to install npm for a few versions

if: ${{matrix.npm-version != ''}}
run: npm install -g ${{ matrix.npm-version }}

- name: Configure npm loglevel
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dropped configuring npm to ignore package-lock and shrinkwrap

We have .npmrc set to package-lock: false, and this same PR updates gitignore to ignore shrinkwrap

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason not to also move this config into the .npmrc if this is what we need? I do wonder what the reason was to configure this at all in the past, do you know that?

run: |
npm config set loglevel error
shell: bash

- name: Install dependencies
run: npm install

- name: Install Node version specific dev deps
if: ${{ matrix.npm-i != '' }}
run: npm install --save-dev ${{ matrix.npm-i }}

- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis

- name: Output Node and NPM versions
run: |
echo "Node.js version: $(node -v)"
echo "NPM version: $(npm -v)"

- name: Run tests
shell: bash
run: |
npm run test-ci
cp coverage/lcov.info "coverage/${{ matrix.node-version }}.lcov"

- name: Collect code coverage
run: |
mv ./coverage "./${{ matrix.node-version }}"
mkdir ./coverage
mv "./${{ matrix.node-version }}" "./coverage/${{ matrix.node-version }}"

- name: Upload code coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: ./coverage
retention-days: 1

coverage:
needs: test
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/iojs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: iojs-ci
jonchurch marked this conversation as resolved.
Show resolved Hide resolved

on:
push:
branches:
- master
- '4.x'
paths-ignore:
- '*.md'
pull_request:
paths-ignore:
- '*.md'

concurrency:
group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ["1.8", "2.5", "3.3"]
include:
- node-version: "1.8"
npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0"
- node-version: "2.5"
npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0"
- node-version: "3.3"
npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0"

steps:
- uses: actions/checkout@v4

- name: Install iojs ${{ matrix.node-version }}
shell: bash -eo pipefail -l {0}
run: |
nvm install --default ${{ matrix.node-version }}
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"

- name: Configure npm
run: |
npm config set loglevel error
npm config set shrinkwrap false

- name: Install npm module(s) ${{ matrix.npm-i }}
run: npm install --save-dev ${{ matrix.npm-i }}
if: matrix.npm-i != ''

- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis

- name: Install Node.js dependencies
run: npm install

- name: List environment
id: list_env
shell: bash
run: |
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"

- name: Run tests
shell: bash
run: npm run test

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# npm
node_modules
package-lock.json
npm-shrinkwrap.json
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that Im adding shrinkwrap to gitignore, we don't generate it, but we did go out of our way in the CI before to configure node to ignore it

Comfortable removing that config part, and just making sure we never commit it

*.log
*.gz

Expand Down
Loading
Loading