Update pack and compare npm actions.
This commit is contained in:
101
npm/npm-pack-and-compare/action.yaml
Normal file
101
npm/npm-pack-and-compare/action.yaml
Normal file
@@ -0,0 +1,101 @@
|
||||
name: npm-pack-and-compare
|
||||
description: "Build and pack an NPM package into a .tgz file."
|
||||
inputs:
|
||||
name:
|
||||
description: "The name of the package."
|
||||
required: true
|
||||
workingDirectory:
|
||||
description: "Working directory containing package.json."
|
||||
required: false
|
||||
default: "."
|
||||
nodeVersion:
|
||||
description: "Node.js version to use."
|
||||
required: false
|
||||
default: "20"
|
||||
buildScript:
|
||||
description: "Build script to run before packing (e.g., 'build' for 'npm run build'). Set to empty string to skip build step."
|
||||
required: false
|
||||
default: "build"
|
||||
defaultVersion:
|
||||
description: "Version of the package."
|
||||
required: true
|
||||
default: "1.0.0"
|
||||
outputDirectory:
|
||||
description: "Directory for the output .tgz."
|
||||
required: true
|
||||
default: "out"
|
||||
registry:
|
||||
description: "NPM registry URL."
|
||||
required: false
|
||||
default: ${{ github.server_url }}/api/packages/${{ github.repository_owner }}/nuget/index.json
|
||||
authToken:
|
||||
description: "Authentication token for the registry."
|
||||
required: true
|
||||
skipCompare:
|
||||
description: "Skip in-depth comparison."
|
||||
required: true
|
||||
default: "false"
|
||||
outputs:
|
||||
tgz:
|
||||
description: "The generated output .tgz file."
|
||||
value: ${{ steps.package.outputs.tgz }}
|
||||
tgzName:
|
||||
description: "The generated output .tgz file's name."
|
||||
value: ${{ steps.package.outputs.tgzName }}
|
||||
hasChanged:
|
||||
description: "Whether or not the package files match."
|
||||
value: ${{ !steps.npm.outputs.latestVersion || inputs.skipCompare == 'true' || steps.compare.outputs.hasDifferences == 'true' }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: "Get the next version of the package."
|
||||
uses: act/common/npm/npm-get-next-branched-version@master
|
||||
id: npm
|
||||
with:
|
||||
name: ${{ inputs.name }}
|
||||
defaultVersion: ${{ inputs.defaultVersion }}
|
||||
registry: ${{ inputs.registry }}
|
||||
authToken: ${{ inputs.authToken }}
|
||||
- name: "Pack with latest version for comparison"
|
||||
if: ${{ steps.npm.outputs.latestVersion && inputs.skipCompare == 'false' }}
|
||||
id: pack_comparison
|
||||
uses: act/common/npm/npm-pack@master
|
||||
with:
|
||||
version: ${{ steps.npm.outputs.latestVersion }}
|
||||
workingDirectory: ${{ inputs.workingDirectory }}
|
||||
nodeVersion: ${{ inputs.nodeVersion }}
|
||||
buildScript: ${{ inputs.buildScript }}
|
||||
outputDirectory: ${{ inputs.outputDirectory }}/comparison
|
||||
registry: ${{ inputs.registry }}
|
||||
- name: "Compare to remote package"
|
||||
if: ${{ steps.npm.outputs.latestVersion && inputs.skipCompare == 'false' }}
|
||||
id: compare
|
||||
uses: act/common/npm/npm-diff@master
|
||||
with:
|
||||
name: ${{ inputs.name }}
|
||||
lhsVersion: ${{ steps.npm.outputs.latestVersion }}
|
||||
rhsVersion: ${{ steps.npm.outputs.latestVersion }}
|
||||
workingDirectory: ${{ inputs.workingDirectory }}
|
||||
registry: ${{ inputs.registry }}
|
||||
authToken: ${{ inputs.authToken }}
|
||||
failOnDifferences: "false"
|
||||
- name: "Pack with next version"
|
||||
if: ${{ !steps.npm.outputs.latestVersion || inputs.skipCompare == 'true' || steps.compare.outputs.hasDifferences == 'true' }}
|
||||
id: pack_final
|
||||
uses: act/common/npm/npm-pack@master
|
||||
with:
|
||||
version: ${{ steps.npm.outputs.nextVersion }}
|
||||
workingDirectory: ${{ inputs.workingDirectory }}
|
||||
nodeVersion: ${{ inputs.nodeVersion }}
|
||||
buildScript: ${{ inputs.buildScript }}
|
||||
outputDirectory: ${{ inputs.outputDirectory }}
|
||||
registry: ${{ inputs.registry }}
|
||||
skipInstall: ${{ steps.pack_comparison.conclusion != '' }}
|
||||
- name: "Generate package outputs"
|
||||
id: package
|
||||
run: |
|
||||
TGZ_NAME="${{ inputs.name }}-${{ steps.npm.outputs.nextVersion }}.tgz"
|
||||
TGZ_PATH="${{ inputs.outputDirectory }}/$TGZ_NAME"
|
||||
echo "tgz=$TGZ_PATH" >> "$GITHUB_OUTPUT"
|
||||
echo "tgzName=$TGZ_NAME" >> "$GITHUB_OUTPUT"
|
||||
shell: bash
|
||||
Reference in New Issue
Block a user