Using private npm packages
What you'll learn
- How to configure Artillery Pro to be able to install private packages from
npm
- How to configure Artillery Pro to be able to install private packages from Artifactory
- How to allow arbitrary customization of
.npmrc
in Artillery workers
Overview
If your test scripts make use of custom JS code depending on private packages, you can enable private npm
module support in Artillery Pro by setting a couple of configuration options. Private packages hosted on npmjs.com (opens in a new tab) and Artifactory (opens in a new tab) are supported.
Configure private access for npmjs.com
When configuring private access for npmjs.com, you must specify the AWS region where your Artillery Pro backend is deployed. The configuration will get encrypted and stored securely in AWS Parameter Store (opens in a new tab) and can only be read by Artillery Pro tests.
Set npm token
If you want to use a private package hosted on npmjs.com (opens in a new tab), you need to configure an npm token that Artillery Pro can use to fetch your private packages. Please refer to the npm documentation (opens in a new tab) for information on creating an access token. We recommend that you create a read-only
token to follow security best practices.
Once you have a read-only token, use the artillery set-config-value
command to configure the NPM_TOKEN
config value to make it available to Artillery Pro.
artillery set-config-value \
--name NPM_TOKEN \
--value 01234567890-token-from-npm-012345 \
--region eu-west-1
Set npm registry URL
If your organization uses a self-hosted NPM registry, the URL for the registry can be configured with the NPM_REGISTRY
config value.
artillery set-config-value \
--name NPM_REGISTRY \
--value https://npm.internal.acmecorp.digital \
--region eu-west-1
Configure access to an Artifactory npm registry
When configuring private access for Artifactory, you must specify the AWS region where your Artillery Pro backend is deployed. The configuration will get encrypted and stored securely in AWS Parameter Store (opens in a new tab) and can only be read by Artillery Pro tests.
Set Artifactory auth
Artillery Pro supports accessing modules hosted in a private Artifactory (opens in a new tab) registry using Basic Authentication (opens in a new tab). Please refer to the official Artifactory documentation (opens in a new tab) for information on how to acquire your Base64-encoded authentication string.
Once you have the authentication string, use the artillery set-config-value
command to configure the ARTIFACTORY_AUTH
config value to make it available to Artillery Pro.
artillery set-config-value \
--name ARTIFACTORY_AUTH \
--value replaceWithAuthString \
--region eu-west-1
You will also need to set the ARTIFACTORY_EMAIL
config value to the associated email address:
artillery set-config-value \
--name ARTIFACTORY_EMAIL \
--value myemail@example.net \
--region eu-west-1
Set Artifactory registry URL
Set the NPM_REGISTRY
config value to the URL of your organization's Artifactory npm registry:
artillery set-config-value \
--name NPM_REGISTRY \
--value http://<ARTIFACTORY_SERVER_DOMAIN>:8081/artifactory/api/npm/ \
--region eu-west-1
Running tests using private modules
Once configuration values for private registry access have been configured, tests making use of private modules can be run as normal with the artillery run-test
command. No changes to the test scripts are necessary.
Advanced .npmrc
configuration
If you require further customizations to the npm configuration in Artillery workers running on ECS or Fargate, additional .npmrc
configuration settings can be added by setting the NPMRC
config value. The contents of NPMRC
will get added as-is to .npmrc
before npm
runs in ECS/Fargate containers.
For example, the following config value will enable debug-level logs for npm
:
artillery set-config-value \
--name NPMRC \
--value "loglevel=debug" \
--region eu-west-1
To see available configuration options for .npmrc
, please refer to the npm config files documentation (opens in a new tab).