Delen via


npmAuthenticate@0 - npm-verificatie (voor taaklopers) v0-taak

Gebruik deze taak om npm referenties op te geven voor een .npmrc-bestand in uw opslagplaats voor het bereik van de build. Hierdoor kunnen npm, evenals npm taaklopers, zoals gulp en Grunt, worden geverifieerd met privéregisters.

Syntaxis

# 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.

Invoer

workingFile - .npmrc-bestand om te verifiëren
string. Verplicht.

Het pad naar het bestand .npmrc waarmee de registers worden opgegeven waarmee u wilt werken. Selecteer het bestand, niet de map, zoals /packages/mypackage.npmrc.


customEndpoint - referenties voor registers buiten deze organisatie/verzameling
string.

De door komma's gescheiden lijst met npm-serviceverbinding namen voor registers buiten deze organisatie of verzameling. Het opgegeven .npmrc bestand moet registervermeldingen bevatten die overeenkomen met de serviceverbindingen. Als u alleen registers in deze organisatie of verzameling nodig hebt, laat u dit leeg. De referenties van de build worden automatisch gebruikt.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Gebruik deze taak om npm referenties op te geven voor een .npmrc-bestand in uw opslagplaats voor het bereik van de build. Hierdoor kunnen npm, evenals npm taaklopers, zoals gulp en Grunt, worden geverifieerd met privéregisters.

Hoe werkt deze taak?

Deze taak doorzoekt het opgegeven .npmrc-bestand op registervermeldingen en voegt vervolgens verificatiegegevens toe voor de gedetecteerde registers aan het einde van het bestand. Voor alle registers in de huidige organisatie/verzameling worden de referenties van de build gebruikt. Voor registers in een andere organisatie of gehost door een derde partij, worden de register-URI's vergeleken met de URI's van de npm-serviceverbindingen opgegeven door de customEndpoint invoer en worden de bijbehorende referenties gebruikt. Het .npmrc-bestand wordt teruggezet naar de oorspronkelijke status aan het einde van de pijplijnuitvoering.

Wanneer moet ik deze taak uitvoeren in mijn pijplijn?

Deze taak moet worden uitgevoerd voordat u npmof een npm taakloper gebruikt om pakketten te installeren of te pushen naar een geverifieerde NPM-opslagplaats, zoals Azure Artifacts. Er zijn geen andere bestelvereisten.

Ik heb meerdere npm-projecten. Moet ik deze taak uitvoeren voor elk NPMRC-bestand?

Met deze taak worden alleen verificatiegegevens toegevoegd aan één .npmrc bestand tegelijk. Als u verificatie nodig hebt voor meerdere .npmrc bestanden, kunt u de taak meerdere keren uitvoeren, één keer voor elk .npmrc bestand. U kunt ook een .npmrc-bestand maken dat alle registers aangeeft die door uw projecten worden gebruikt, npmAuthenticate uitvoeren op dit .npmrc bestand en vervolgens een omgevingsvariabele instellen om dit .npmrc bestand aan te wijzen als het npm-configuratiebestand per gebruiker.

- 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

Mijn agent bevindt zich achter een webproxy. Wordt npmAuthenticatenpm/gulp/Grunt ingesteld om mijn proxy te gebruiken?

Het antwoord is: nee. Hoewel deze taak zelf werkt achter een webproxy uw agent is geconfigureerd voor het gebruik van, configureert deze niet npm of npm taaklopers om de proxy te gebruiken.

Hiervoor kunt u het volgende doen:

  • Stel de omgevingsvariabelen in http_proxy/https_proxy en no_proxy desgewenst op uw proxy-instellingen. Zie npm-configuratie voor meer informatie. Houd er rekening mee dat dit veelgebruikte variabelen zijn die andere niet-npm hulpprogramma's (bijvoorbeeld curl) ook kunnen gebruiken.

  • Voeg de proxy-instellingen toe aan de npm-configuratiehandmatig met behulp van npm-configuratiesetof door omgevingsvariabelen in te stellen voorafgegaan door NPM_CONFIG_.

    Waarschuwing:
    npm taaklopers zijn mogelijk niet compatibel met alle methoden van proxyconfiguratie die door npmworden ondersteund.

  • Geef de proxy op met een opdrachtregelvlag bij het aanroepen van npm.

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Als voor uw proxy verificatie is vereist, moet u mogelijk een extra buildstap toevoegen om een geverifieerde proxy-URI te maken.

- 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)

Mijn pijplijn moet toegang krijgen tot een feed in een ander project

Als de pijplijn wordt uitgevoerd in een ander project dan het project dat als host fungeert voor de feed, moet u het andere project instellen om lees-/schrijftoegang te verlenen aan de buildservice. Zie Pakketmachtigingen in Azure Pipelines voor meer informatie.

Voorbeelden

Herstel npm pakketten voor uw project vanuit een register binnen uw organisatie

Als de enige geverifieerde registers die u gebruikt Azure Artifacts-registers in uw organisatie zijn, hoeft u alleen het pad naar een .npmrc-bestand op te geven voor de npmAuthenticate taak.

.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 pakketten buiten uw organisatie herstellen en publiceren

Als uw .npmrc Azure Artifacts-registers van een andere organisatie bevat of een geverifieerde pakketopslagplaats van derden gebruikt, moet u npm-serviceverbindingen instellen en deze opgeven in de customEndpoint invoer. Registers binnen uw Azure Artifacts-organisatie worden ook automatisch geverifieerd.

.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

De register-URL die verwijst naar een Azure Artifacts-feed kan het project al dan niet bevatten. Een URL voor een projectbereikfeed moet het project bevatten en de URL voor een binnen het bereik van een organisatiefeed mag het project niet bevatten. Meer informatie over projectbereikfeeds.

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection en ThirdPartyRepositoryNpmConnection zijn de namen van npm-serviceverbindingen die zijn geconfigureerd en geautoriseerd voor gebruik in uw pijplijn, en URL's hebben die overeenkomen met die in het opgegeven .npmrc-bestand.

Vereisten

Voorwaarde Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Geen
mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Welk dan ook
variabelen instellen Welk dan ook
Agentversie 2.115.0 of hoger
Taakcategorie Pakket