Skip to content

Commit

Permalink
chore: splits out smoke-tests from publish-dryrun tests (#8069)
Browse files Browse the repository at this point in the history
This removes the `publish.sh --smoke-publish` like from the current
`smoke-publish-test.sh` (renaming it to `smoke-test.sh`) and runs both
operations as seperete jobs within the `ci.yml` (on pr) and
`ci-release.yml` (on merge) workflow.

Why? To avoid changed files / git dirty issues from one operation to the
next.

With this PR we should have the same checks that merge has, on pr as
well, preventing scenarios where a PR breaks a `smoke test` or `publish
--smoke-publish` test. The only difference between merge / pr is that
merge has more tested node versions, if PRs start to pass but fail in
these version lets add the full matrix.

```sh
npm i npm@latest -g && node scripts/git-dirty.js && node scripts/resetdeps.js && ./scripts/smoke-tests.sh
```

```sh
npm i npm@latest -g && node scripts/git-dirty.js && node scripts/resetdeps.js && node ./scripts/publish.js --pack-destination=${pwd} --smoke-publish=true
```
  • Loading branch information
reggi authored Jan 29, 2025
1 parent 6d0f46e commit 61f00e3
Show file tree
Hide file tree
Showing 6 changed files with 228 additions and 40 deletions.
79 changes: 70 additions & 9 deletions .github/workflows/ci-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ jobs:
conclusion: ${{ job.status }}
check_id: ${{ steps.create-check.outputs.check-id }}

smoke-publish:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
name: Smoke Publish - ${{ matrix.platform.name }} - ${{ matrix.node-version }}
smoke-tests:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
name: Smoke Tests - ${{ matrix.platform.name }} - ${{ matrix.node-version }}
if: github.repository_owner == 'npm'
strategy:
fail-fast: false
Expand Down Expand Up @@ -182,7 +182,7 @@ jobs:
if: ${{ inputs.check-sha }}
uses: ./.github/actions/create-check
with:
name: "Smoke Publish - ${{ matrix.platform.name }} - ${{ matrix.node-version }}"
name: "Smoke Tests - ${{ matrix.platform.name }} - ${{ matrix.node-version }}"
token: ${{ secrets.GITHUB_TOKEN }}
sha: ${{ inputs.check-sha }}
- name: Setup Node
Expand All @@ -196,8 +196,69 @@ jobs:
run: node scripts/git-dirty.js
- name: Reset Deps
run: node scripts/resetdeps.js
- name: Smoke Publish
run: ./scripts/smoke-publish-test.sh
- name: Smoke Tests
run: ./scripts/smoke-tests.sh
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: ${{ secrets.GITHUB_TOKEN }}
conclusion: ${{ job.status }}
check_id: ${{ steps.create-check.outputs.check-id }}

publish-dryrun:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
name: Publish Dry-Run - ${{ matrix.platform.name }} - ${{ matrix.node-version }}
if: github.repository_owner == 'npm'
strategy:
fail-fast: false
matrix:
platform:
- name: Linux
os: ubuntu-latest
shell: bash
node-version:
- 20.17.0
- 20.x
- 22.9.0
- 22.x
runs-on: ${{ matrix.platform.os }}
defaults:
run:
shell: ${{ matrix.platform.shell }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Setup Git User
run: |
git config --global user.email "npm-cli+bot@github.com"
git config --global user.name "npm CLI robot"
- name: Create Check
id: create-check
if: ${{ inputs.check-sha }}
uses: ./.github/actions/create-check
with:
name: "Publish Dry-Run - ${{ matrix.platform.name }} - ${{ matrix.node-version }}"
token: ${{ secrets.GITHUB_TOKEN }}
sha: ${{ inputs.check-sha }}
- name: Setup Node
uses: actions/setup-node@v4
id: node
with:
node-version: ${{ matrix.node-version }}
check-latest: contains(matrix.node-version, '.x')
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node scripts/resetdeps.js
- name: Publish Dry-Run
run: node ./scripts/publish.js --pack-destination=$RUNNER_TEMP --smoke-publish=true
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
Expand Down
72 changes: 70 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ jobs:
run: node . run licenses

smoke-tests:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
name: Smoke Tests
if: github.repository_owner == 'npm'
runs-on: ubuntu-latest
Expand All @@ -156,10 +160,20 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Setup Git User
run: |
git config --global user.email "npm-cli+bot@github.com"
git config --global user.name "npm CLI robot"
- name: Create Check
id: create-check
if: ${{ inputs.check-sha }}
uses: ./.github/actions/create-check
with:
name: "Smoke Tests"
token: ${{ secrets.GITHUB_TOKEN }}
sha: ${{ inputs.check-sha }}
- name: Setup Node
uses: actions/setup-node@v4
id: node
Expand All @@ -171,10 +185,64 @@ jobs:
run: node scripts/git-dirty.js
- name: Reset Deps
run: node scripts/resetdeps.js
- name: Run Smoke Tests
run: node . test -w smoke-tests --ignore-scripts
- name: Smoke Tests
run: ./scripts/smoke-tests.sh
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: ${{ secrets.GITHUB_TOKEN }}
conclusion: ${{ job.status }}
check_id: ${{ steps.create-check.outputs.check-id }}

publish-dryrun:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
name: Publish Dry-Run
if: github.repository_owner == 'npm'
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Setup Git User
run: |
git config --global user.email "npm-cli+bot@github.com"
git config --global user.name "npm CLI robot"
- name: Create Check
id: create-check
if: ${{ inputs.check-sha }}
uses: ./.github/actions/create-check
with:
name: "Publish Dry-Run"
token: ${{ secrets.GITHUB_TOKEN }}
sha: ${{ inputs.check-sha }}
- name: Setup Node
uses: actions/setup-node@v4
id: node
with:
node-version: 22.x
check-latest: contains('22.x', '.x')
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node scripts/resetdeps.js
- name: Publish Dry-Run
run: node ./scripts/publish.js --pack-destination=$RUNNER_TEMP --smoke-publish=true
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: ${{ secrets.GITHUB_TOKEN }}
conclusion: ${{ job.status }}
check_id: ${{ steps.create-check.outputs.check-id }}

windows-shims:
name: Windows Shims Tests
Expand Down
Empty file added scripts/smoke-tests.js
Empty file.
2 changes: 1 addition & 1 deletion scripts/smoke-publish-test.sh → scripts/smoke-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ fi
# were publishing it to the registry. The only difference is in the
# publish.js script which will only pack and not publish
node . version $NPM_VERSION --ignore-scripts --git-tag-version="$IS_CI"
node scripts/publish.js --pack-destination=$RUNNER_TEMP --smoke-publish=true
node . pack . --pack-destination "$RUNNER_TEMP"
NPM_TARBALL="$RUNNER_TEMP/npm-$NPM_VERSION.tgz"
node . install --global $NPM_TARBALL

Expand Down
66 changes: 44 additions & 22 deletions scripts/template-oss/ci-release-yml.hbs
Original file line number Diff line number Diff line change
@@ -1,23 +1,45 @@
{{> ciReleaseYml }}
{{> ciReleaseYml }}

smoke-publish:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
{{> jobMatrixYml
jobName="Smoke Publish"
jobCheckout=(obj ref="${{ inputs.ref }}")
jobCreateCheck=(obj sha="${{ inputs.check-sha }}")
windowsCI=false
macCI=false
}}
- name: Smoke Publish
run: ./scripts/smoke-publish-test.sh
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: $\{{ secrets.GITHUB_TOKEN }}
conclusion: $\{{ job.status }}
check_id: $\{{ steps.create-check.outputs.check-id }}
smoke-tests:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
{{> jobMatrixYml
jobName="Smoke Tests"
jobCheckout=(obj ref="${{ inputs.ref }}")
jobCreateCheck=(obj sha="${{ inputs.check-sha }}")
windowsCI=false
macCI=false
}}
- name: Smoke Tests
run: ./scripts/smoke-tests.sh
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: $\{{ secrets.GITHUB_TOKEN }}
conclusion: $\{{ job.status }}
check_id: $\{{ steps.create-check.outputs.check-id }}

publish-dryrun:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
{{> jobMatrixYml
jobName="Publish Dry-Run"
jobCheckout=(obj ref="${{ inputs.ref }}")
jobCreateCheck=(obj sha="${{ inputs.check-sha }}")
windowsCI=false
macCI=false
}}
- name: Publish Dry-Run
run: node ./scripts/publish.js --pack-destination=$RUNNER_TEMP --smoke-publish=true
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: $\{{ secrets.GITHUB_TOKEN }}
conclusion: $\{{ job.status }}
check_id: $\{{ steps.create-check.outputs.check-id }}
49 changes: 43 additions & 6 deletions scripts/template-oss/ci-yml.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,49 @@
- name: Check Licenses
run: {{rootNpmPath}} run licenses

smoke-tests:
{{> jobYml jobName="Smoke Tests" }}
- name: Run Smoke Tests
run: {{rootNpmPath}} test -w smoke-tests --ignore-scripts
- name: Check Git Status
run: node scripts/git-dirty.js
smoke-tests:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
{{> jobYml
jobName="Smoke Tests"
jobCheckout=(obj ref="${{ inputs.ref }}")
jobCreateCheck=(obj sha="${{ inputs.check-sha }}")
windowsCI=false
macCI=false
}}
- name: Smoke Tests
run: ./scripts/smoke-tests.sh
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: $\{{ secrets.GITHUB_TOKEN }}
conclusion: $\{{ job.status }}
check_id: $\{{ steps.create-check.outputs.check-id }}

publish-dryrun:
# This cant be tested on Windows because our node_modules directory
# checks in symlinks which are not supported there. This should be
# fixed somehow, because this means some forms of local development
# are likely broken on Windows as well.
{{> jobYml
jobName="Publish Dry-Run"
jobCheckout=(obj ref="${{ inputs.ref }}")
jobCreateCheck=(obj sha="${{ inputs.check-sha }}")
windowsCI=false
macCI=false
}}
- name: Publish Dry-Run
run: node ./scripts/publish.js --pack-destination=$RUNNER_TEMP --smoke-publish=true
- name: Conclude Check
uses: LouisBrunner/checks-action@v1.6.0
if: steps.create-check.outputs.check-id && always()
with:
token: $\{{ secrets.GITHUB_TOKEN }}
conclusion: $\{{ job.status }}
check_id: $\{{ steps.create-check.outputs.check-id }}

windows-shims:
name: Windows Shims Tests
Expand Down

0 comments on commit 61f00e3

Please sign in to comment.