mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
f2b236c537
* feat(npmExecuteScripts): added option to skip installing dev. deps. * added unit tests * setting of OpenFile function for local testing --------- Co-authored-by: Anil Keshav <anil.keshav@sap.com>
186 lines
7.0 KiB
YAML
186 lines
7.0 KiB
YAML
metadata:
|
|
name: npmExecuteScripts
|
|
aliases:
|
|
- name: executeNpm
|
|
description: Execute npm run scripts on all npm packages in a project
|
|
longDescription: |
|
|
Execute npm run scripts in all package json files, if they implement the scripts.
|
|
|
|
### build with depedencies from a private repository
|
|
if your build has scoped/unscoped dependencies from a private repository you can include a .npmrc into the source code
|
|
repository as below (replace the `@privateScope:registry` value(s) with a valid private repo url) :
|
|
|
|
```
|
|
@privateScope:registry=https://private.repository.com/
|
|
//private.repository.com/:username=${PIPER_VAULTCREDENTIAL_USER}
|
|
//private.repository.com/:_password=${PIPER_VAULTCREDENTIAL_PASSWORD_BASE64}
|
|
//private.repository.com/:always-auth=true
|
|
registry=https://registry.npmjs.org
|
|
```
|
|
`PIPER_VAULTCREDENTIAL_USER` and `PIPER_VAULTCREDENTIAL_PASSWORD_BASE64` (Base64 encoded password) are the username and password for the private repository
|
|
and are exposed are environment variables that must be present in the environment where the Piper step runs or alternatively can be created using :
|
|
[vault general purpose credentials](../infrastructure/vault.md#using-vault-for-general-purpose-and-test-credentials)
|
|
spec:
|
|
inputs:
|
|
resources:
|
|
- name: source
|
|
type: stash
|
|
params:
|
|
- name: install
|
|
type: bool
|
|
description: Run npm install or similar commands depending on the project structure.
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
default: true
|
|
- name: runScripts
|
|
type: "[]string"
|
|
description: List of additional run scripts to execute from package.json.
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- name: defaultNpmRegistry
|
|
type: string
|
|
description: URL of the npm registry to use. Defaults to https://registry.npmjs.org/
|
|
scope:
|
|
- PARAMETERS
|
|
- GENERAL
|
|
- STAGES
|
|
- STEPS
|
|
aliases:
|
|
- name: npm/defaultNpmRegistry
|
|
- name: virtualFrameBuffer
|
|
type: bool
|
|
description: (Linux only) Start a virtual frame buffer in the background. This allows you to run a web browser without the need for an X server. Note that xvfb needs to be installed in the execution environment.
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- name: scriptOptions
|
|
type: "[]string"
|
|
description: Options are passed to all runScripts calls separated by a '--'. './piper npmExecuteScripts --runScripts ci-e2e --scriptOptions '--tag1' will correspond to 'npm run ci-e2e -- --tag1'
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- name: buildDescriptorExcludeList
|
|
type: "[]string"
|
|
description: List of build descriptors and therefore modules to exclude from execution of the npm scripts. The elements can either be a path to the build descriptor or a pattern.
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
default: ["deployment/**"]
|
|
- name: buildDescriptorList
|
|
type: "[]string"
|
|
description: List of build descriptors and therefore modules for execution of the npm scripts. The elements have to be paths to the build descriptors. **If set, buildDescriptorExcludeList will be ignored.**
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- name: createBOM
|
|
type: bool
|
|
description: Create a BOM xml using CycloneDX.
|
|
scope:
|
|
- GENERAL
|
|
- STEPS
|
|
- STAGES
|
|
- PARAMETERS
|
|
default: false
|
|
- name: publish
|
|
type: bool
|
|
description: Configures npm to publish the artifact to a repository.
|
|
scope:
|
|
- STEPS
|
|
- STAGES
|
|
- PARAMETERS
|
|
- name: repositoryUrl
|
|
type: string
|
|
description: Url to the repository to which the project artifacts should be published.
|
|
scope:
|
|
- GENERAL
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: custom/npmRepositoryURL
|
|
- name: commonPipelineEnvironment
|
|
param: custom/repositoryUrl
|
|
- name: repositoryPassword
|
|
type: string
|
|
description: Password for the repository to which the project artifacts should be published.
|
|
scope:
|
|
- GENERAL
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
secret: true
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: custom/npmRepositoryPassword
|
|
- name: commonPipelineEnvironment
|
|
param: custom/repositoryPassword
|
|
- name: repositoryUsername
|
|
type: string
|
|
description: Username for the repository to which the project artifacts should be published.
|
|
scope:
|
|
- GENERAL
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
secret: true
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: custom/npmRepositoryUsername
|
|
- name: commonPipelineEnvironment
|
|
param: custom/repositoryUsername
|
|
- name: buildSettingsInfo
|
|
type: string
|
|
description: build settings info is typically filled by the step automatically to create information about the build settings that were used during the npm build . This information is typically used for compliance related processes.
|
|
scope:
|
|
- STEPS
|
|
- STAGES
|
|
- PARAMETERS
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: custom/buildSettingsInfo
|
|
- name: packBeforePublish
|
|
type: bool
|
|
default: false
|
|
description: used for executing npm pack first, followed by npm publish. This two step maybe required in two cases. case 1) When building multiple npm packages (multiple package.json) please keep this parameter true and also see `buildDescriptorList` or `buildDescriptorExcludeList` to choose which package(s) to publish. case 2)when you are building a single npm (single `package.json` in your repo) / multiple npm (multiple package.json) scoped package(s) and have npm dependencies from the same scope.
|
|
scope:
|
|
- STEPS
|
|
- STAGES
|
|
- PARAMETERS
|
|
- name: production
|
|
type: bool
|
|
default: false
|
|
description: used for omitting installation of dev. dependencies if true
|
|
scope:
|
|
- STEPS
|
|
- STAGES
|
|
- PARAMETERS
|
|
outputs:
|
|
resources:
|
|
- name: commonPipelineEnvironment
|
|
type: piperEnvironment
|
|
params:
|
|
- name: custom/buildSettingsInfo
|
|
- name: reports
|
|
type: reports
|
|
params:
|
|
- filePattern: "**/bom-npm.xml"
|
|
type: sbom
|
|
- filePattern: "**/TEST-*.xml"
|
|
type: junit
|
|
- filePattern: "**/cobertura-coverage.xml"
|
|
type: cobertura-coverage
|
|
- filePattern: "**/e2e/*.json"
|
|
type: cucumber
|
|
containers:
|
|
- name: node
|
|
image: node:lts-buster
|