The NpmBuild native step builds an npm source. This step automatically performs npm-install
on the source in a Git repository.
If you want to run tests, add a Bash step to trigger them.
Important
The NpmBuild native step may fail on W19 nodes when JFrog CLI v1 is used. Workaround is to use JFrog CLI v2.
Important
The NpmBuild
native step uses Node runtime image by default. If runtime image of any other type is configured at pipeline-level for this native step, it will be ignored.
YAML Schema
The YAML schema for NpmBuild native step is as follows:
NpmBuild
pipelines: - name: <string> steps: - name: <string> type: NpmBuild configuration: #inherits all the tags from bash # for payloadType npm: npmArgs: <string> # optional repositoryName: <string> # optional, npm repository name on artifactory resolverRepo: <string> # optional, npm repository name on artifactory sourceLocation: <string> # optional, directory containing package.json file integrations: - name: <artifactory integration> # required, unless there is a FileSpec input inputResources: - name: <gitrepo resource> # required - name: <filespec resource> # optional execution: onStart: - echo "Preparing for work..." onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo "Cleaning up some stuff"
Tags
name
An alphanumeric string (underscores are permitted) that identifies the step.
type
Must be NpmBuild
for this step type.
configuration
Specifies all configuration selections for the step's execution environment. This step inherits the Bash/ PowerShell step configuration tags, including these pertinent tags:
Tag | Description of usage | Required/Optional |
---|---|---|
| Specifies an Artifactory Integrationwhere modules will be published. If a FileSpec resource is specified in | May be required |
| Must specify a GitReporesource. The May also optionally specify a FileSpec resource that specifies what files to copy to | Required Optional |
In addition, these tags can be defined to support the step's native operation:
Note
All native steps derive from the Bash step. This means that all steps share the same base set of tags from Bash, while native steps have their own additional tags as well that support the step's particular function. So it's important to be familiar with the Bash step definition, since it's the core of the definition of all other steps.
Tag | Description of usage | Required/Optional |
---|---|---|
| Specifies a command line string of arguments to use with npm-install. | Optional |
| The name of the npm repository in Artifactory. | Optional |
| Alternative to | Optional |
| The directory containing the | Optional |
execution
Declares collections of shell command sequences to perform for pre- and post-execution phases:
Tag | Description of usage | Required/Optional |
---|---|---|
| Commands to execute in advance of the native operation | Optional |
| Commands to execute on successful completion | Optional |
| Commands to execute on failed completion | Optional |
| Commands to execute on any completion | Optional |
The actions performed for the onExecute
phase are inherent to this step type and may not be overridden.
Examples
The following examples show how to configure an NpmBuild step.
Using Default Settings
An NpmBuild step using default locations and default commands.
This example requires a GitHub Integration.
The Pipelines DSL for this example is available in this repository in the JFrog GitHub account.
For more information about running this example, see Pipeline Example: Npm Build.
NpmBuild
# This config file is templatized so that it can be easily customized. Values can be provided with a values.yml file. template: true # required for local templates valuesFilePath: ./values.yml resources: - name: npm_repo_jfp_example type: GitRepo configuration: # SCM integration where the repository is located gitProvider: {{ .Values.myRepo.gitProvider }} # Repository path, including org name/repo name path: {{ .Values.myRepo.path }} branches: # Specifies which branches will trigger dependent steps include: master - name: npm_buildinfo_jfp_example type: BuildInfo configuration: sourceArtifactory: demoArt pipelines: - name: npm_pipeline_jfp_example steps: - name: npm_build_step type: NpmBuild configuration: repositoryName: npm-virtual # required, npm repository name on artifacctory sourceLocation: . # required, location of package.json file integrations: - name: demoArt # required inputResources: - name: npm_repo_jfp_example # required
Using FileSpec Input
An NpmBuild step with a FileSpec input providing files for the build that are not in the GitRepo and resolverRepo specifying an Artifactory repository to use when resolving dependencies.
NpmBuild
pipelines: - name: npmBuildPipeline steps: - name: npmBuildStep type: NpmBuild configuration: sourceLocation: "source" resolverRepo: remote-npm inputResources: - name: gitRepoResource - name: fileSpecResource integrations: - name: artifactory_integration
How it Works
When you use the NpmBuild native step in a pipeline, it performs the following functions in the background:
jfrog rt config (if there is a FileSpec input, to configure the JFrog CLI with the Artifactory credentials in the input FileSpec)
jfrog rt use (to set the current default Artifactory configuration)
cp (if there is an input FileSpec, copy the files to the root of the cloned GitRepo)
jfrog rt npm-config (configure the repository to resolve dependencies)
jfrog rt npm-install
add_run_variables (save information about this step for future steps)
jfrog rt build-collect-env (collect environment variables)
add_run_files (save the output and the build information in the run state for later publish steps)