From 41517a0f6e6fdca40699927968b0afad595acb2e Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:23:38 -0800 Subject: [PATCH 1/7] Add GitHub Actions workflow to print package versions --- .github/workflows/github-script-deps.yaml | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/github-script-deps.yaml diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml new file mode 100644 index 0000000..f226e82 --- /dev/null +++ b/.github/workflows/github-script-deps.yaml @@ -0,0 +1,41 @@ +name: Print github-script runtime dependency versions + +on: + pull_request: + +permissions: + contents: read + +jobs: + print-versions: + runs-on: ubuntu-latest + steps: + - name: Print bundled package versions (github-script runtime) + uses: actions/github-script@v8 + with: + script: | + function versionOf(pkg) { + try { + return require(require.resolve(`${pkg}/package.json`)).version + } catch (err) { + return `NOT FOUND (${err.code || err.message})` + } + } + + const packages = [ + '@actions/core', + '@actions/exec', + '@actions/github', + '@actions/glob', + '@actions/io', + '@octokit/core', + ] + + const result = Object.fromEntries( + packages.map(name => [name, versionOf(name)]) + ) + + console.log({ + node: process.version, + ...result, + }) From 5a865bc7418feb72e7d2ceb8d3a1e2fdc379075d Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:24:59 -0800 Subject: [PATCH 2/7] Update versionOf function to handle require.resolve Fix version retrieval for GitHub script dependencies. --- .github/workflows/github-script-deps.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index f226e82..aa9023c 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -16,7 +16,8 @@ jobs: script: | function versionOf(pkg) { try { - return require(require.resolve(`${pkg}/package.json`)).version + // Works in github-script even when require.resolve is not available + return require(`${pkg}/package.json`).version } catch (err) { return `NOT FOUND (${err.code || err.message})` } From ee019f024544af13f66469d4e97f12da77ba9a29 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:25:42 -0800 Subject: [PATCH 3/7] Change runner from ubuntu-latest to ubuntu-slim --- .github/workflows/github-script-deps.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index aa9023c..870b9c7 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -8,7 +8,7 @@ permissions: jobs: print-versions: - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - name: Print bundled package versions (github-script runtime) uses: actions/github-script@v8 From 36b4ce2f4955d4bba259ea54b59a7604b2d3f119 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:26:20 -0800 Subject: [PATCH 4/7] Update GitHub Actions workflow for dependency versioning --- .github/workflows/github-script-deps.yaml | 36 +++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index 870b9c7..027b3f4 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -1,4 +1,4 @@ -name: Print github-script runtime dependency versions +name: Print github-script bundled dependency versions on: pull_request: @@ -8,16 +8,29 @@ permissions: jobs: print-versions: - runs-on: ubuntu-slim + runs-on: ubuntu-latest steps: - - name: Print bundled package versions (github-script runtime) + - name: Print versions from github-script action bundle uses: actions/github-script@v8 with: script: | - function versionOf(pkg) { + const fs = require('fs') + const path = require('path') + + const actionPath = process.env.GITHUB_ACTION_PATH + if (!actionPath) throw new Error('GITHUB_ACTION_PATH is not set') + + function pkgJsonPath(pkgName) { + // "@actions/core" -> ["@actions","core"] + const parts = pkgName.split('/') + return path.join(actionPath, 'node_modules', ...parts, 'package.json') + } + + function versionOf(pkgName) { try { - // Works in github-script even when require.resolve is not available - return require(`${pkg}/package.json`).version + const p = pkgJsonPath(pkgName) + const json = JSON.parse(fs.readFileSync(p, 'utf8')) + return json.version || '(no version field)' } catch (err) { return `NOT FOUND (${err.code || err.message})` } @@ -32,11 +45,10 @@ jobs: '@octokit/core', ] - const result = Object.fromEntries( - packages.map(name => [name, versionOf(name)]) - ) + const out = Object.fromEntries(packages.map(p => [p, versionOf(p)])) - console.log({ + console.log(JSON.stringify({ node: process.version, - ...result, - }) + github_script_action_path: actionPath, + ...out, + }, null, 2)) From cbf40f4cc956fbf402d0c26b4bae86ed6fd723aa Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:27:43 -0800 Subject: [PATCH 5/7] Rename workflow to print runtime dependency versions --- .github/workflows/github-script-deps.yaml | 37 ++++++++++------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index 027b3f4..a5f754c 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -1,4 +1,4 @@ -name: Print github-script bundled dependency versions +name: Print github-script runtime dependency versions on: pull_request: @@ -10,27 +10,21 @@ jobs: print-versions: runs-on: ubuntu-latest steps: - - name: Print versions from github-script action bundle + - name: Print bundled package versions uses: actions/github-script@v8 with: script: | - const fs = require('fs') const path = require('path') + const fs = require('fs') - const actionPath = process.env.GITHUB_ACTION_PATH - if (!actionPath) throw new Error('GITHUB_ACTION_PATH is not set') - - function pkgJsonPath(pkgName) { - // "@actions/core" -> ["@actions","core"] - const parts = pkgName.split('/') - return path.join(actionPath, 'node_modules', ...parts, 'package.json') - } - - function versionOf(pkgName) { + function versionOf(pkg) { try { - const p = pkgJsonPath(pkgName) - const json = JSON.parse(fs.readFileSync(p, 'utf8')) - return json.version || '(no version field)' + // Resolve actual file location of the module + const entry = require(pkg) + const entryPath = require('module').createRequire(__filename).resolve(pkg) + const pkgRoot = entryPath.split(`node_modules/${pkg}`)[0] + `node_modules/${pkg}` + const pkgJson = path.join(pkgRoot, 'package.json') + return JSON.parse(fs.readFileSync(pkgJson, 'utf8')).version } catch (err) { return `NOT FOUND (${err.code || err.message})` } @@ -45,10 +39,11 @@ jobs: '@octokit/core', ] - const out = Object.fromEntries(packages.map(p => [p, versionOf(p)])) + const result = Object.fromEntries( + packages.map(p => [p, versionOf(p)]) + ) - console.log(JSON.stringify({ + console.log({ node: process.version, - github_script_action_path: actionPath, - ...out, - }, null, 2)) + ...result + }) From 7d04732bc2c673138da787ec266b330754ac2dda Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:29:00 -0800 Subject: [PATCH 6/7] Update workflow to print bundled dependency versions --- .github/workflows/github-script-deps.yaml | 53 ++++++++++++++++------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index a5f754c..d4406b5 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -1,4 +1,4 @@ -name: Print github-script runtime dependency versions +name: Print github-script bundled dependency versions on: pull_request: @@ -10,21 +10,36 @@ jobs: print-versions: runs-on: ubuntu-latest steps: - - name: Print bundled package versions + - name: Print versions uses: actions/github-script@v8 with: script: | - const path = require('path') const fs = require('fs') + const path = require('path') + + function readJson(p) { + return JSON.parse(fs.readFileSync(p, 'utf8')) + } + + // Find the action install dir. + // Typically process.argv[1] == .../_actions/actions/github-script/v8/dist/index.js + const entry = + (process.argv && process.argv[1]) || + (require.main && require.main.filename) - function versionOf(pkg) { + if (!entry) throw new Error('Could not determine Node entry file path.') + + const distDir = path.dirname(entry) + const actionDir = path.resolve(distDir, '..') // dist -> action root + + function pkgJsonPath(pkgName) { + // "@actions/core" -> actionDir/node_modules/@actions/core/package.json + return path.join(actionDir, 'node_modules', ...pkgName.split('/'), 'package.json') + } + + function versionOf(pkgName) { try { - // Resolve actual file location of the module - const entry = require(pkg) - const entryPath = require('module').createRequire(__filename).resolve(pkg) - const pkgRoot = entryPath.split(`node_modules/${pkg}`)[0] + `node_modules/${pkg}` - const pkgJson = path.join(pkgRoot, 'package.json') - return JSON.parse(fs.readFileSync(pkgJson, 'utf8')).version + return readJson(pkgJsonPath(pkgName)).version || '(no version field)' } catch (err) { return `NOT FOUND (${err.code || err.message})` } @@ -39,11 +54,17 @@ jobs: '@octokit/core', ] - const result = Object.fromEntries( - packages.map(p => [p, versionOf(p)]) - ) + // Also print github-script action's own version + let githubScriptVersion = '(unknown)' + try { + githubScriptVersion = readJson(path.join(actionDir, 'package.json')).version || '(no version field)' + } catch {} + + const out = Object.fromEntries(packages.map(p => [p, versionOf(p)])) - console.log({ + console.log(JSON.stringify({ node: process.version, - ...result - }) + actionDir, + github_script: githubScriptVersion, + ...out, + }, null, 2)) From 797b8c6e3343a7fd36000c9bb099a1a7a4ecb915 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 25 Feb 2026 22:30:26 -0800 Subject: [PATCH 7/7] Refactor github-script dependency version printing --- .github/workflows/github-script-deps.yaml | 41 +++-------------------- 1 file changed, 5 insertions(+), 36 deletions(-) diff --git a/.github/workflows/github-script-deps.yaml b/.github/workflows/github-script-deps.yaml index d4406b5..92c3180 100644 --- a/.github/workflows/github-script-deps.yaml +++ b/.github/workflows/github-script-deps.yaml @@ -1,4 +1,4 @@ -name: Print github-script bundled dependency versions +name: Print github-script bundled dep versions on: pull_request: @@ -7,39 +7,16 @@ permissions: contents: read jobs: - print-versions: + versions: runs-on: ubuntu-latest steps: - - name: Print versions + - name: Print versions (from action runtime) uses: actions/github-script@v8 with: script: | - const fs = require('fs') - const path = require('path') - - function readJson(p) { - return JSON.parse(fs.readFileSync(p, 'utf8')) - } - - // Find the action install dir. - // Typically process.argv[1] == .../_actions/actions/github-script/v8/dist/index.js - const entry = - (process.argv && process.argv[1]) || - (require.main && require.main.filename) - - if (!entry) throw new Error('Could not determine Node entry file path.') - - const distDir = path.dirname(entry) - const actionDir = path.resolve(distDir, '..') // dist -> action root - - function pkgJsonPath(pkgName) { - // "@actions/core" -> actionDir/node_modules/@actions/core/package.json - return path.join(actionDir, 'node_modules', ...pkgName.split('/'), 'package.json') - } - - function versionOf(pkgName) { + function versionOf(pkg) { try { - return readJson(pkgJsonPath(pkgName)).version || '(no version field)' + return __original_require__(`${pkg}/package.json`).version } catch (err) { return `NOT FOUND (${err.code || err.message})` } @@ -54,17 +31,9 @@ jobs: '@octokit/core', ] - // Also print github-script action's own version - let githubScriptVersion = '(unknown)' - try { - githubScriptVersion = readJson(path.join(actionDir, 'package.json')).version || '(no version field)' - } catch {} - const out = Object.fromEntries(packages.map(p => [p, versionOf(p)])) console.log(JSON.stringify({ node: process.version, - actionDir, - github_script: githubScriptVersion, ...out, }, null, 2))