The @nx/azure-cache
plugin enables you to self-host your remote cache on Azure Storage.
Set Up @nx/azure-cache
Section titled “Set Up @nx/azure-cache”1. Install the Package
Section titled “1. Install the Package”Run the following command:
nx add @nx/azure-cache
This will add the @nx/azure-cache
NPM package and automatically configure it for your workspace. As part of this process, you'll be guided to generate a new activation key. This is a fully automated process to register your plugin.
The key will be saved in your repository (.nx/key/key.ini
) and should be committed so that every developer has access to it. If your repository is public (or in CI), you can also use an environment variable:
NX_KEY=YOUR_ACTIVATION_KEY
Why require an activation key? It simply helps us know and support our users. If you prefer not to provide this information, you can also build your own cache server. Learn more.
2. Authenticate with Azure
Section titled “2. Authenticate with Azure”There are several ways to authenticate with Azure Storage, but the method recommended by Azure is to use OpenID Connect, like this:
name: CI...permissions: id-token: write ...
jobs: main: env: NX_KEY: ${{ secrets.NX_KEY }} runs-on: ubuntu-latest steps: ...
- name: Azure login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} ...
- run: pnpm exec nx affected -t lint test build
You need to set the AZURE_CLIENT_ID
, AZURE_TENANT_ID
and AZURE_SUBSCRIPTION_ID
secrets as defined in the Azure documentation.
Note: Any authentication method that sets up the DefaultAzureCredentials
will enable the plugin to work.
3. Configure the Nx Cache to Use Azure Storage
Section titled “3. Configure the Nx Cache to Use Azure Storage”Finally, you need to configure your Nx cache in the nx.json
file. The container
that you specify needs to already exist - Nx doesn't create it for you.
{ "azure": { "container": "mycontainer", "accountName": "myaccount" }}
Property | Description |
---|---|
container | The name of the container to use |
accountName | The name of blob storage account |
Migrating from Custom Tasks Runners
Section titled “Migrating from Custom Tasks Runners”Many people who are interested in Nx Powerpack have previously used custom task runners. Nx offers a new and simpler extension API designed to meet the same use cases as the now-deprecated custom task runners.
To learn more about migrating from custom task runners, please refer to this detailed guide.
By default, Nx will try to write and read from the remote cache while running locally. This means that permissions must be set for users who are expected to access the remote cache.
Nx will only show warnings when the remote cache is not writable. You can disable these warnings by setting localMode
to read-only
or no-cache
in the nx.json
file.
{ "azure": { // ... "localMode": "read-only" }}
The cache mode in CI can also be configured by setting ciMode
to read-only
or no-cache
in the nx.json
file. Or setting NX_POWERPACK_CACHE_MODE
to read-only
or no-cache
in the CI environment.
{ "azure": { // ... "ciMode": "read-only" }}