1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/resources/metadata/npmExecuteScripts.yaml
R. Kloe 3cad6ac2cd
feat: allow uploading multiple boms (#3900)
* WIP: Adapt bom names

* + WIP: Adapt bom filenames

* Upgrade cyclonedx gradle plugin and use cyclonedxBom config parameters

* Fix unit tests - use correct name in bom creation

* Fix pythonBuild bom name

* introduce and use npmBomFilename const

* Introduce and use mvnBomFilename const

* Introduce and use gradleBomFilename const

* Use build-tool names for bom suffix

* + Adapt tests (build tool suffix)

* Use BOM schema version 1.2 in gradleExecuteBuild

* Pin version of cyclonedx-maven-plugin to 2.7.1

* Adapt generated files

* Fix integration tests

* Fix integration tests

* Fix gradle build integration tests

Co-authored-by: Oliver Nocon <33484802+OliverNocon@users.noreply.github.com>
2022-08-01 13:38:49 +02:00

178 lines
6.5 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 when you are building a scoped packages and have npm dependencies from the same scope
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-stretch