Updating building of executables to use pkg
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
name: Publish Executables
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Build executables
|
||||||
|
run: |
|
||||||
|
npm run base-build
|
||||||
|
npm run build-exe
|
||||||
|
|
||||||
|
- name: Attach artifacts
|
||||||
|
uses: actions/upload-artifacts@v3
|
||||||
|
with:
|
||||||
|
name: executables
|
||||||
|
path: cli/*
|
||||||
Binary file not shown.
+18
-4
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "maven-dependency-tree-action",
|
"name": "maven-dependency-tree-submission",
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"base-build": "npm ci && tsc",
|
"base-build": "npm ci && tsc",
|
||||||
"build": "npm run base-build && npm exec -- @vercel/ncc build --source-map lib/src/index.js",
|
"build": "npm run base-build && npm exec -- @vercel/ncc build --source-map lib/src/index.js",
|
||||||
"pre-build-exe": "npm run base-build && npm exec -- @vercel/ncc build lib/src/executable/cli.js -o runtime",
|
"build-exe": "pkg package.json --compress Gzip",
|
||||||
"build-exe-linux-x64": "npm run pre-build-exe && nexe -i runtime/index.js -t linux-x64-14.15.3 -o cli/maven-dependency-submission-linux-x64",
|
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -33,9 +32,24 @@
|
|||||||
"@vercel/ncc": "^0.34.0",
|
"@vercel/ncc": "^0.34.0",
|
||||||
"chai": "^4.3.6",
|
"chai": "^4.3.6",
|
||||||
"jest": "^28.1.3",
|
"jest": "^28.1.3",
|
||||||
"nexe": "^4.0.0-rc.1",
|
"pkg": "^5.8.0",
|
||||||
"ts-jest": "^28.0.7",
|
"ts-jest": "^28.0.7",
|
||||||
"ts-node": "^10.8.2",
|
"ts-node": "^10.8.2",
|
||||||
"typescript": "^4.7.4"
|
"typescript": "^4.7.4"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"cli": "lib/src/executable/cli.js"
|
||||||
|
},
|
||||||
|
"pkg": {
|
||||||
|
"targets": [
|
||||||
|
"node16-linux-x64",
|
||||||
|
"node16-win-x64",
|
||||||
|
"node16-macos-x64"
|
||||||
|
],
|
||||||
|
"assets": [
|
||||||
|
"package.json"
|
||||||
|
],
|
||||||
|
"publicPackages": "*",
|
||||||
|
"outputPath": "cli"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+25
-6
@@ -1,31 +1,45 @@
|
|||||||
import { Snapshot, submitSnapshot } from '@github/dependency-submission-toolkit';
|
|
||||||
import { generateSnapshot } from '../snapshot-generator';
|
|
||||||
import pkg from '../../package.json';
|
import pkg from '../../package.json';
|
||||||
|
|
||||||
const { program } = require('commander');
|
const { program } = require('commander');
|
||||||
program.name('maven-dependency-submission');
|
program.name(pkg.name);
|
||||||
program.version(pkg.version);
|
program.version(pkg.version);
|
||||||
|
|
||||||
program.requiredOption('-t, --token <token>', 'GitHub access token');
|
program.requiredOption('-t, --token <token>', 'GitHub access token');
|
||||||
program.requiredOption('-r --repository <repository>', 'GitHub repository, owner/repo_name format');
|
program.requiredOption('-r --repository <repository>', 'GitHub repository, owner/repo_name format');
|
||||||
program.requiredOption('-b --branch-ref <ref>', 'GitHub repository branch reference, e.g. /refs/heads/main');
|
program.requiredOption('-b --branch-ref <ref>', 'GitHub repository branch reference, e.g. refs/heads/main');
|
||||||
program.requiredOption('-s --sha <commitSha>', 'GitHub repository commit SHA');
|
program.requiredOption('-s --sha <commitSha>', 'GitHub repository commit SHA');
|
||||||
|
|
||||||
program.option('-d --directory <maven-project-directory>', 'the directory containing the Maven POM file', '.');
|
program.option('-d --directory <maven-project-directory>', 'the directory containing the Maven POM file', '.');
|
||||||
|
program.option('--settings-file <settings-file>', 'path to the Maven settings file');
|
||||||
|
program.option('--ignore-maven-wrapper', 'ingore Maven wrappers, if present, and use Maven from the PATH');
|
||||||
|
program.option('--maven-args <maven-args>', 'additional arguments to pass to Maven');
|
||||||
program.option('--github-api-url <url>', 'GitHub API URL', 'https://api.github.com');
|
program.option('--github-api-url <url>', 'GitHub API URL', 'https://api.github.com');
|
||||||
program.option('-j --job-name <jobName>', 'Optional name for the activity creating and submitting the graph', 'maven-dependency-submission-cli');
|
program.option('-j --job-name <jobName>', 'Optional name for the activity creating and submitting the graph', 'maven-dependency-submission-cli');
|
||||||
program.option('-i --run-id <jobName>', 'Optional Run ID number for the activity that is providing the graph');
|
program.option('-i --run-id <jobName>', 'Optional Run ID number for the activity that is providing the graph');
|
||||||
|
|
||||||
program.parse(process.argv);
|
program.parse(process.argv);
|
||||||
|
|
||||||
async function execute() {
|
|
||||||
const opts = program.opts();
|
const opts = program.opts();
|
||||||
|
|
||||||
// Inject some required environment variables like the Actions INPUTs and special environment variables
|
// Inject some required environment variables like the Actions INPUTs and special environment variables
|
||||||
process.env['INPUT_TOKEN'] = opts.token;
|
process.env['INPUT_TOKEN'] = opts.token;
|
||||||
process.env['GITHUB_REPOSITORY'] = opts.repository;
|
process.env['GITHUB_REPOSITORY'] = opts.repository;
|
||||||
|
process.env['GITHUB_API_URL'] = opts.githubApiUrl;
|
||||||
|
|
||||||
|
// The above injection of environment variables is required before the submission APIs are imported
|
||||||
|
import { Snapshot, submitSnapshot } from '@github/dependency-submission-toolkit';
|
||||||
|
import { generateSnapshot } from '../snapshot-generator';
|
||||||
|
|
||||||
|
async function execute() {
|
||||||
let snapshot: Snapshot | undefined;
|
let snapshot: Snapshot | undefined;
|
||||||
|
|
||||||
|
// The dependency submission API requires a formatted ref reference so check early fo now
|
||||||
|
if (`/^refs\//`.match(opts.branchRef) === null) {
|
||||||
|
console.error(`Branch reference must be in path form, e.g. 'refs/heads/main' for the 'main' branch.`);
|
||||||
|
program.help({ error: true });
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Build a fake GitHub Actions context so that values for the submission APIs can be retrieved
|
// Build a fake GitHub Actions context so that values for the submission APIs can be retrieved
|
||||||
const context = {
|
const context = {
|
||||||
@@ -38,7 +52,12 @@ async function execute() {
|
|||||||
id: `${opts.runId || Date.now()}`
|
id: `${opts.runId || Date.now()}`
|
||||||
};
|
};
|
||||||
|
|
||||||
const mvnConfig = {};
|
const mvnConfig = {
|
||||||
|
directory: opts.directory,
|
||||||
|
settingsFile: opts.settingsFile,
|
||||||
|
ignoreMavenWrapper: opts.ignoreMavenWrapper,
|
||||||
|
mavenArgs: opts.mavenArgs
|
||||||
|
};
|
||||||
|
|
||||||
snapshot = await generateSnapshot(opts.directory, mvnConfig, context, job);
|
snapshot = await generateSnapshot(opts.directory, mvnConfig, context, job);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user