使用此任務為存儲庫中的檔提供 npm 內部版本範圍的憑證 .npmrc 。 這使 npm以及 npm gulp 和 Grunt 等任務運行程式能夠使用私有註冊表進行身份驗證。
語法
# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
inputs:
workingFile: # string. Required. .npmrc file to authenticate.
#customEndpoint: # string. Credentials for registries outside this organization/collection.
輸入
workingFile
-
.npmrc 文件進行身份驗證
string。 必須的。
指定要使用的註冊表的文件的路徑 .npmrc 。 選擇檔案,而不是資料夾,例如 /packages/mypackage.npmrc.
customEndpoint
-
此組織/集合外部登錄的認證
string。
此組織或集合外部的註冊表的 npm 服務連接 名稱的逗號分隔清單。 指定的 .npmrc 文件必須包含與服務連接對應的註冊表項。 如果您只需要此組織或集合中的註冊表,請將此欄位留空。 系統會自動使用內部版本的憑證。
工作控制選項
除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制選項和一般工作屬性。
輸出變數
沒有。
備註
使用此任務為存儲庫中的檔提供 npm 內部版本範圍的憑證 .npmrc 。 這使 npm以及 npm gulp 和 Grunt 等任務運行程式能夠使用私有註冊表進行身份驗證。
- 此任務如何運作?
- 我管線中的何時應該執行這項工作?
- 我有多個 npm 專案。 是否需要為每個 .npmrc 檔運行此任務?
- 我的代理程式位於 Web Proxy 後方。 會
npmAuthenticate設置npm/gulp/Grunt使用我的代理嗎? - 我的管線需要存取不同專案中的摘要
這項工作如何運作?
此任務在指定的 .npmrc 檔中搜索註冊表項,然後將發現的註冊表的身份驗證詳細資訊附加到檔末尾。 對於當前組織/集合中的所有註冊表,將使用生成的憑證。 對於不同組織中或由第三方託管的註冊表,註冊表 URI 將與輸入指定的 customEndpoint URI 進行比較,並使用相應的憑證。 該檔 .npmrc 將在管道執行結束時恢復為其原始狀態。
我的管線中何時應該執行此工作?
此任務必須先運行,然後才能使用 npm或任務 npm 運行程式將包安裝或推送到經過身份驗證的 npm 存儲庫,例如 Azure Artifacts。 沒有其他排序需求。
我有多個 npm 專案。 是否需要為每個 .npmrc 檔運行此任務?
此任務一次只將身份驗證詳細資訊添加到一個 .npmrc 檔。 如果需要對多個 .npmrc 文件進行身份驗證,則可以多次運行任務,每個 .npmrc 檔運行一次。 或者,考慮創建一個.npmrc檔,該檔指定專案使用的所有註冊表,在此npmAuthenticate檔上運行.npmrc,然後設置環境變數以將此.npmrc檔指定為 npm 每使用者配置檔。
- task: npmAuthenticate@0
inputs:
workingFile: $(Agent.TempDirectory)/.npmrc
- script: echo "##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(Agent.TempDirectory)/.npmrc"
- script: npm ci
workingDirectory: project1
- script: npm ci
workingDirectory: project2
我的代理程式位於 Web Proxy 後方。 會 npmAuthenticate 設置 npm/gulp/Grunt 使用我的代理嗎?
答案是不可能。 雖然此任務本身將在您的 代理配置為使用的 Web 代理後工作,但它不會配置 npm 或 npm 任務運行程式使用該代理。
若要這樣做,您可以:
設置環境變數
http_proxy/https_proxy,並選擇性no_proxy地設置您的代理設置。 有關詳細資訊,請參閱 npm config 。 請注意,這些是其他非npm工具(例如 curl)也可能使用的常用變數。使用 npm config set 手動將代理設置添加到 npm 配置中,或者通過設置前綴為 的
NPM_CONFIG_。這很重要
npmTask Runners 可能與 支援npm的所有代理配置方法不相容。在呼叫
npm.- script: npm ci --https-proxy $(agent.proxyurl)
如果您的代理需要身份驗證,則可能需要添加額外的構建步驟來構建經過身份驗證的代理 URI。
- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)
我的管線需要存取不同專案中的摘要
如果管線是在與裝載摘要的專案不同的項目中執行,您必須設定其他專案,以授與建置服務的讀取/寫入許可權。 如需詳細資訊,請參閱 Azure Pipelines 中的
範例
從組織內的註冊表恢復 npm 專案的包
如果使用的唯一經過身份驗證的註冊表是組織中的 Azure Artifacts 註冊表,則只需指定任務的文件.npmrc路徑npmAuthenticate。
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
- script: npm ci
- script: npm publish
在組織外部還原和發佈 npm 包
.npmrc如果包含來自不同組織的 Azure Artifacts 註冊表或使用經過第三方身份驗證的包存儲庫,則需要設置 npm 服務連接並在輸入中customEndpoint指定它們。
Azure Artifacts 組織中的註冊表也將自動進行身份驗證。
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true
指向 Azure Artifacts 源的註冊表 URL 可能包含也可能不包含專案。 專案範圍訂閱源的 URL 必須包含專案,而組織範圍訂閱源的 URL 不得包含專案。 深入瞭解 項目範圍摘要。
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection # Name of your service connection
- script: npm ci
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
OtherOrganizationNpmConnection 和 ThirdPartyRepositoryNpmConnection 是已配置並授權在管道中使用的 npm 服務連接 的名稱,並且具有與指定 .npmrc 檔中的 URL 匹配的 URL。
需求
| 要求 | 說明 |
|---|---|
| 管線類型 | YAML、傳統組建、傳統版本 |
| 執行於 | Agent、DeploymentGroup |
| 要求 | 沒有 |
| 能力 | 此工作不符合作業中後續工作的任何需求。 |
| 命令限制 | 任意 |
| Settable 變數 | 任意 |
| 代理程式版本 | 2.115.0 或更新 |
| 工作類別 | 套件/包裹 |