diff --git a/.github/workflows/smoke.yaml b/.github/workflows/smoke.yaml index 7be7851659..61cac620eb 100644 --- a/.github/workflows/smoke.yaml +++ b/.github/workflows/smoke.yaml @@ -40,7 +40,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 24 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redocly-cli.tgz" "npm run" + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--npm--node-24--redoc: needs: prepare-smoke @@ -53,12 +53,15 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 24 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redoc redocly-cli.tgz" "npm run" + - name: Add redoc to deps + run: bash ./tests/smoke/basic/add-redoc.sh + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--yarn--node-24: needs: prepare-smoke runs-on: ubuntu-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -68,15 +71,18 @@ jobs: node-version: 24 - name: Clear Yarn Cache run: yarn cache clean + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh - run: | for i in {1..2}; do # workaround for yarn cache issue - sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn add ./redocly-cli.tgz" "yarn" && break + sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn install" "yarn" && break done run-smoke--yarn--node-24--redoc: needs: prepare-smoke runs-on: ubuntu-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -86,9 +92,13 @@ jobs: node-version: 24 - name: Clear Yarn Cache run: yarn cache clean + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh + - name: Add redoc to deps + run: bash ./tests/smoke/basic/add-redoc.sh - run: | for i in {1..2}; do # workaround for yarn cache issue - sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn add redoc ./redocly-cli.tgz" "yarn" && break + sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn install" "yarn" && break done run-smoke--pnpm--node-24: needs: prepare-smoke @@ -105,7 +115,7 @@ jobs: uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 with: version: 10 - - run: bash ./tests/smoke/basic/run-smoke.sh "pnpm add ./redocly-cli.tgz" "pnpm run" + - run: bash ./tests/smoke/basic/run-smoke.sh "pnpm install" "pnpm run" # Skipped due to a known Windows + NodeJS v24 issue: https://github.com/nodejs/node/issues/56645 # run-smoke--npm--node-24--windows: @@ -158,7 +168,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 22 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redocly-cli.tgz" "npm run" + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--npm--node-22--redoc: needs: prepare-smoke @@ -171,12 +181,15 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 22 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redoc redocly-cli.tgz" "npm run" + - name: Add redoc to deps + run: bash ./tests/smoke/basic/add-redoc.sh + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--yarn--node-22: needs: prepare-smoke runs-on: ubuntu-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -186,15 +199,18 @@ jobs: node-version: 22 - name: Clear Yarn Cache run: yarn cache clean + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh - run: | for i in {1..2}; do # workaround for yarn cache issue - sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn add ./redocly-cli.tgz" "yarn" && break + sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn install" "yarn" && break done run-smoke--yarn--node-22--redoc: needs: prepare-smoke runs-on: ubuntu-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -204,9 +220,13 @@ jobs: node-version: 22 - name: Clear Yarn Cache run: yarn cache clean + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh + - name: Add redoc to deps + run: bash ./tests/smoke/basic/add-redoc.sh - run: | for i in {1..2}; do # workaround for yarn cache issue - sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn add redoc ./redocly-cli.tgz" "yarn" && break + sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn install" "yarn" && break done run-smoke--pnpm--node-22: needs: prepare-smoke @@ -223,7 +243,7 @@ jobs: uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 with: version: 10 - - run: bash ./tests/smoke/basic/run-smoke.sh "pnpm add ./redocly-cli.tgz" "pnpm run" + - run: bash ./tests/smoke/basic/run-smoke.sh "pnpm install" "pnpm run" run-smoke--npm--node-22--windows: needs: prepare-smoke @@ -237,12 +257,22 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 22 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redocly-cli.tgz" "npm run" + - name: Clear npm cache + run: npm cache clean --force + - name: Run Smoke Tests + run: | + for ($i = 1; $i -le 3; $i++) { + bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit $LASTEXITCODE } + Start-Sleep -Seconds 5 + } run-smoke--yarn--node-22--windows: needs: prepare-smoke runs-on: windows-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -255,17 +285,15 @@ jobs: run: | yarn cache clean npm cache clean --force + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh - name: Run Smoke Tests run: | - Start-Sleep -Seconds 20 # workaround for yarn cache issue for ($i = 1; $i -le 3; $i++) { - try { - bash ./tests/smoke/basic/run-smoke.sh "yarn add ./redocly-cli.tgz --no-lockfile --network-timeout 100000" "yarn" - if ($LASTEXITCODE -eq 0) { break } - } catch { - if ($i -eq 3) { throw } - Start-Sleep -Seconds 5 - } + bash ./tests/smoke/basic/run-smoke.sh "yarn install --network-timeout 100000" "yarn" + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit $LASTEXITCODE } + Start-Sleep -Seconds 5 } run-smoke--npm--node-20: @@ -279,7 +307,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 20 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redocly-cli.tgz" "npm run" + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--npm--node-20--redoc: needs: prepare-smoke @@ -292,12 +320,15 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 20 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redoc redocly-cli.tgz" "npm run" + - name: Add redoc to deps + run: bash ./tests/smoke/basic/add-redoc.sh + - run: bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" run-smoke--yarn--node-20: needs: prepare-smoke runs-on: ubuntu-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -307,9 +338,11 @@ jobs: node-version: 20 - name: Clear Yarn Cache run: yarn cache clean + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh - run: | for i in {1..2}; do # workaround for yarn cache issue - sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn add ./redocly-cli.tgz" "yarn" && break + sleep 5 && bash ./tests/smoke/basic/run-smoke.sh "yarn install" "yarn" && break done run-smoke--npm--node-20--windows: @@ -324,12 +357,22 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 20 - - run: bash ./tests/smoke/basic/run-smoke.sh "npm i redocly-cli.tgz" "npm run" + - name: Clear npm cache + run: npm cache clean --force + - name: Run Smoke Tests + run: | + for ($i = 1; $i -le 3; $i++) { + bash ./tests/smoke/basic/run-smoke.sh "npm install" "npm run" + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit $LASTEXITCODE } + Start-Sleep -Seconds 5 + } run-smoke--yarn--node-20--windows: needs: prepare-smoke runs-on: windows-latest steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: tests/smoke/basic/ @@ -342,17 +385,15 @@ jobs: run: | yarn cache clean npm cache clean --force + - name: Pin intersecting deps + run: bash ./tests/smoke/basic/pin-intersecting-deps.sh - name: Run Smoke Tests run: | - Start-Sleep -Seconds 20 # workaround for yarn cache issue for ($i = 1; $i -le 3; $i++) { - try { - bash ./tests/smoke/basic/run-smoke.sh "yarn add ./redocly-cli.tgz --no-lockfile --network-timeout 100000" "yarn" - if ($LASTEXITCODE -eq 0) { break } - } catch { - if ($i -eq 3) { throw } - Start-Sleep -Seconds 5 - } + bash ./tests/smoke/basic/run-smoke.sh "yarn install --network-timeout 100000" "yarn" + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit $LASTEXITCODE } + Start-Sleep -Seconds 5 } run-smoke--docker-image: diff --git a/tests/smoke/basic/add-redoc.sh b/tests/smoke/basic/add-redoc.sh new file mode 100755 index 0000000000..33b37a16b2 --- /dev/null +++ b/tests/smoke/basic/add-redoc.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +node -e " + const fs = require('fs'); + const pkgPath = './tests/smoke/basic/package.json'; + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + (pkg.dependencies ??= {}).redoc = 'latest'; + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n'); + console.log('Added redoc@latest to smoke test dependencies'); +" diff --git a/tests/smoke/basic/package.json b/tests/smoke/basic/package.json index 3653af547f..9588569a4c 100644 --- a/tests/smoke/basic/package.json +++ b/tests/smoke/basic/package.json @@ -13,5 +13,8 @@ "redocly-respect": "redocly respect museum-tickets.arazzo.yaml" }, "author": "redocly", - "license": "ISC" + "license": "ISC", + "dependencies": { + "@redocly/cli": "file:./redocly-cli.tgz" + } } diff --git a/tests/smoke/basic/pin-intersecting-deps.sh b/tests/smoke/basic/pin-intersecting-deps.sh new file mode 100755 index 0000000000..e8fb64dd3d --- /dev/null +++ b/tests/smoke/basic/pin-intersecting-deps.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +node -e " + const fs = require('fs'); + const core = JSON.parse(fs.readFileSync('./packages/core/package.json', 'utf8')); + const pkgPath = './tests/smoke/basic/package.json'; + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + + const PINNED = ['@redocly/config', '@redocly/ajv']; + + for (const name of PINNED) { + const version = core.dependencies[name].replace(/^[\^~]/, ''); + console.log('Pinning ' + name + ' to ' + version + ' in smoke test resolutions'); + (pkg.resolutions ??= {})[name] = version; + } + + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n'); +"