For the complete documentation index, see llms.txt. This page is also available as Markdown.

NodeJS

Use a CI pipeline to build and test a NodeJS application.

You can build and test a Node.js application using a Linux platform on Harness Cloud or a self-managed Kubernetes cluster build infrastructure.

This guide assumes you've created a Harness CI pipeline.

Install dependencies

Use Run step to install dependencies in the build environment.

- step:
    type: Run
    identifier: dependencies
    name: Dependencies
    spec:
      shell: Sh
      command: |-
        npm install express@4.18.2 --no-save
- step:
    type: Run
    identifier: dependencies
    name: Dependencies
    spec:
      connectorRef: YOUR_IMAGE_REGISTRY_CONNECTOR
      image: node:14.18.2-alpine
      command: |-
        npm install express@14.18.2 --no-save

In addition to Run steps, Plugin steps are also useful for installing dependencies.

You can use Background steps to run dependent services that are needed by multiple steps in the same stage.

Cache dependencies

Cache Node dependencies with Cache Intelligence.

Add caching.enabled.true to your stage.spec:

- stage:
    spec:
      caching:
        enabled: true

You can use built-in steps to:

NODE CACHE KEY AND PATH REQUIREMENTS

All Node pipelines must include node_modules in the sourcePaths for your Save Cache step.

spec:
  sourcePaths:
    - node_modules

If your pipeline uses npm, the key value must reference package-lock.json in your Save Cache and Restore Cache steps.

spec:
  key: cache-{{ checksum "package-lock.json" }}

If your pipeline uses yarn, the key value must reference yarn.lock in your Save Cache and Restore Cache steps.

spec:
  key: cache-{{ checksum "yarn.lock" }}
YAML example: Save and restore cache steps

Here's an example of a pipeline with Save Cache to S3 and Restore Cache from S3 steps.

            steps:
              - step:
                  type: RestoreCacheS3
                  name: Restore Cache From S3
                  identifier: Restore_Cache_From_S3
                  spec:
                    connectorRef: AWS_Connector
                    region: us-east-1
                    bucket: your-s3-bucket
                    key: cache-{{ checksum "package-lock.json" }}
                    archiveFormat: Tar
              - step:
                  type: Run
                  ...
              - step:
                  type: BuildAndPushDockerRegistry
                  ...
              - step:
                  type: SaveCacheS3
                  name: Save Cache to S3
                  identifier: Save_Cache_to_S3
                  spec:
                    connectorRef: AWS_Connector
                    region: us-east-1
                    bucket: your-s3-bucket
                    key: cache-{{ checksum "package-lock.json" }}
                    sourcePaths:
                      - node_modules
                    archiveFormat: Tar

Build and run tests

Add Run steps to build and run tests in Harness CI.

Visualize test results

If you want to view test results in Harness, make sure your test commands produce reports in JUnit XML format and that your steps include the reports specification.

Test splitting

You can use test splitting (parallelism) to improve test times.

Specify version

Node is pre-installed on Hosted Cloud runners. For details about all available tools and versions, go to Platforms and image specifications.

If your application requires a specific Node version, add a Run step to install it.

Install one Node version
Install multiple Node versions
  1. Add the matrix looping strategy configuration to your stage.

  1. Reference the matrix variable in your steps.

Specify the desired Node Docker image tag in your steps. There is no need for a separate install step when using Docker.

Use a specific Node version
Use multiple node versions
  1. Add the matrix looping strategy configuration to your stage.

  1. Reference the matrix variable in the image field of your steps.

Full pipeline examples

Here's a YAML example of a pipeline that:

  1. Tests a Node code repo.

  2. Builds and pushes an image to Docker Hub.

This pipeline uses Harness Cloud build infrastructure and Cache Intelligence.

If you copy this example, replace the placeholder values with appropriate values for your Harness project, connector IDs, account/user names, and repo names.

Pipeline YAML

Next steps

Now that you have created a pipeline that builds and tests a Node app, you could:

Last updated

Was this helpful?