Anpassa JavaScript för Azure Pipelines
Du kan använda Azure Pipelines för att skapa dina JavaScript-appar utan att behöva konfigurera någon egen infrastruktur. Verktyg som du ofta använder för att skapa, testa och köra JavaScript-appar – t.ex. npm, Node, Yarn och Gulp – blir förinstallerade på Microsoft-värdbaserade agenter i Azure Pipelines.
Den version av Node.js och npm som är förinstallerad finns i Microsoft-värdbaserade agenter. Om du vill installera en specifik version av dessa verktyg på Microsoft-värdbaserade agenter lägger du till uppgiften Installationsprogram för nodverktyg i början av processen. Du kan också använda en lokalt installerad agent.
Information om hur du skapar din första pipeline med JavaScript finns i Snabbstart för JavaScript.
Använda en specifik version av Node.js
Om du behöver en version av Node.js och npm som inte redan är installerad på den Microsoft-värdbaserade agenten använder du installationsuppgiften för Node-verktyget. Lägg till följande kodfragment i azure-pipelines.yml
filen.
Kommentar
De värdbaserade agenterna uppdateras regelbundet, och om du konfigurerar den här aktiviteten kan du ägna mycket tid åt att uppdatera till en nyare delversion varje gång pipelinen körs. Använd endast den här uppgiften när du behöver en specifik nodversion i pipelinen.
- task: UseNode@1
inputs:
version: '16.x' # replace this value with the version that you need for your project
Om du behöver en version av Node.js/npm som inte redan är installerad på agenten:
I pipelinen väljer du Uppgifter, väljer den fas som kör dina bygguppgifter och väljer + sedan för att lägga till en ny aktivitet i den fasen.
I aktivitetskatalogen letar du upp och lägger till uppgiften Installationsprogram för nodverktyget.
Välj uppgiften och ange den version av Node.js körning som du vill installera.
Om du bara vill uppdatera npm-verktyget kör npm i -g npm@version-number
du kommandot i byggprocessen.
Använda flera nodversioner
Du kan skapa och testa din app på flera versioner av Node med installationsuppgiften för Node-verktyget.
pool:
vmImage: 'ubuntu-latest'
strategy:
matrix:
node_16_x:
node_version: 16.x
node_13_x:
node_version: 18.x
steps:
- task: UseNode@1
inputs:
version: $(node_version)
- script: npm install
Installera verktyg på byggagenten
Om du har verktyg som är utvecklingsberoenden i projektet package.json
eller package-lock.json
filen installerar du dina verktyg och beroenden via npm. Den exakta versionen av verktygen definieras i projektet, isolerad från andra versioner som finns i byggagenten.
Använd ett skript eller npm-aktiviteten.
Använd ett skript för att installera med package.json
- script: npm install --only=dev
Använd npm-uppgiften för att installera med package.json
- task: Npm@1
inputs:
command: 'install'
Kör verktyg som installerats på det här sättet med hjälp av npm-paketlöparen npx
, som identifierar verktyg som är installerade på det här sättet i sin sökvägsupplösning. I följande exempel anropas mocha
testlöparen men söker efter den version som installerats som ett utvecklingsberoende innan en globalt installerad (via npm install -g
) version används.
- script: npx mocha
Om du vill installera verktyg som projektet behöver men som inte anges som utvecklingsberoenden i package.json
anropar npm install -g
du från ett skriptsteg i pipelinen.
I följande exempel installeras den senaste versionen av Angular CLI med hjälp npm
av . Resten av pipelinen kan sedan använda ng
verktyget från andra script
steg.
Kommentar
På Microsoft-värdbaserade Linux-agenter förordar du kommandot med sudo
, till exempel sudo npm install -g
.
- script: npm install -g @angular/cli
Dricks
De här uppgifterna körs varje gång pipelinen körs, så tänk på vilken inverkan installationsverktyg har på byggtiderna. Överväg att konfigurera lokalt installerade agenter med den version av verktygen som du behöver om det blir en allvarlig inverkan på byggprestandan.
Använd npm- eller kommandoradsuppgifterna i pipelinen för att installera verktyg på byggagenten.
Hantera beroenden
I din version använder du Yarn eller Azure Artifacts för att ladda ned paket från det offentliga npm-registret. Det här registret är en typ av privat npm-register som du anger i .npmrc
filen.
Använd npm
Du kan använda npm på följande sätt för att ladda ned paket för din version:
- Kör
npm install
direkt i pipelinen eftersom det är det enklaste sättet att ladda ned paket från ett register utan autentisering. Om ditt bygge inte behöver utvecklingsberoenden på agenten för att köras kan du påskynda byggtiden med--only=prod
alternativet tillnpm install
. - Använd en npm-uppgift. Den här uppgiften är användbar när du använder ett autentiserat register.
- Använd en npm Authenticate-uppgift. Den här uppgiften är användbar när du springer
npm install
inifrån dina aktivitetslöpare – Gulp, Grunt eller Maven.
Om du vill ange ett npm-register placerar du URL:erna i en .npmrc
fil på lagringsplatsen.
Om ditt flöde autentiseras skapar du en npm-tjänstanslutning på fliken Tjänster i Projektinställningar för att hantera dess autentiseringsuppgifter.
Om du vill installera npm-paket med ett skript i pipelinen lägger du till följande kodfragment i azure-pipelines.yml
.
- script: npm install
Om du vill använda ett privat register som anges i .npmrc
filen lägger du till följande kodfragment i azure-pipelines.yml
.
- task: Npm@1
inputs:
customEndpoint: <Name of npm service connection>
Om du vill skicka registerautentiseringsuppgifter till npm-kommandon via aktivitetslöpare som Gulp lägger du till följande aktivitet azure-pipelines.yml
innan du anropar aktivitetslöparen.
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
Använd uppgiften npm- eller npm-autentisera i pipelinen för att ladda ned och installera paket.
Om dina versioner ibland misslyckas på grund av anslutningsproblem när du återställer paket från npm-registret kan du använda Azure Artifacts med överordnade källor och cachelagrar paketen. Autentiseringsuppgifterna för pipelinen används automatiskt när du ansluter till Azure Artifacts. Dessa autentiseringsuppgifter härleds vanligtvis från Project Collection Build Service-kontot .
Om du använder Microsoft-värdbaserade agenter får du en ny dator varje gång du kör en version, vilket innebär att återställa beroendena varje gång, vilket kan ta lång tid. För att minimera kan du använda Azure Artifacts eller en lokalt installerad agent – sedan får du fördelen av att använda paketcacheminnet.
Använda Yarn
Använd ett skriptsteg för att anropa Yarn för att återställa beroenden. Yarn förinstalleras på vissa Microsoft-värdbaserade agenter. Du kan installera och konfigurera den på lokalt installerade agenter som alla andra verktyg.
- script: yarn install
Använd CLI- eller Bash-uppgiften i pipelinen för att anropa Yarn.
Köra JavaScript-kompilatorer
Använd kompilatorer som Babel och TypeScript-kompilatorn tsc
för att konvertera källkoden till versioner som kan användas av Node.js-körningen eller i webbläsare.
Om du har konfigurerat ett skriptobjekt i projektfilen package.json
som kör kompilatorn anropar du det i pipelinen med hjälp av en skriptuppgift.
- script: npm run compile
Du kan anropa kompilatorer direkt från pipelinen med hjälp av skriptuppgiften. Dessa kommandon körs från roten på den klonade källkodslagringsplatsen.
- script: tsc --target ES6 --strict true --project tsconfigs/production.json
Använd npm-aktiviteten i pipelinen om du har ett kompileringsskript definierat i projektet package.json för att skapa koden. Använd Bash-aktiviteten för att kompilera koden om du inte har ett separat skript definierat i projektkonfigurationen.
Köra enhetstester
Konfigurera dina pipelines så att de kör JavaScript-testerna så att de ger resultat som är formaterade i JUnit XML-format. Du kan sedan publicera resultaten med hjälp av den inbyggda publiceringstestresultataktiviteten .
Om testramverket inte stöder JUnit-utdata lägger du till stöd via en partnerrapporteringsmodul, till exempel mocha-junit-reporter. Du kan antingen uppdatera testskriptet för att använda JUnit-reportern, eller om reportern har stöd för kommandoradsalternativ skickar du dessa alternativ till uppgiftsdefinitionen.
I följande tabell visas de vanligaste testlöparna och de reportrar som kan användas för att skapa XML-resultat:
Testkörare | Reportrar för att skapa XML-rapporter |
---|---|
mocka | mocha-junit-reporter cypress-multi-reportrar |
jasmin | jasmine-reportrar |
skämta | jest-junit jest-junit-reporter |
karma | karma-junit-reporter |
Ava | tap-xunit |
I följande exempel används mocha-junit-reporter och anropas mocha test
direkt med hjälp av ett skript. Det här skriptet genererar JUnit XML-utdata på standardplatsen ./test-results.xml
för .
- script: mocha test --reporter mocha-junit-reporter
Om du har definierat ett test
skript i projektet package.json fil kan du anropa det med hjälp npm test
av .
- script: npm test
Publicera testresultat
Om du vill publicera resultaten använder du aktiviteten Publicera testresultat .
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: JUnit
testResultsFiles: '**/test-results.xml'
Publicera resultat för kodtäckning
Om testskripten kör ett kodtäckningsverktyg, till exempel Istanbul, lägger du till uppgiften Publicera kodtäckningsresultat . När du gör det kan du hitta täckningsmått i byggsammanfattningen och ladda ned HTML-rapporter för ytterligare analys. Uppgiften förväntar sig Cobertura- eller JaCoCo-rapporteringsutdata, så se till att kodtäckningsverktyget körs med de alternativ som krävs för att generera rätt utdata. Exempel: --report cobertura
I följande exempel används nyc, istanbuls kommandoradsgränssnitt, tillsammans med mocha-junit-reporter och anropar npm test
kommandot.
- script: |
nyc --reporter=cobertura --reporter=html \
npm test -- --reporter mocha-junit-reporter --reporter-options mochaFile=./test-results.xml
displayName: 'Build code coverage report'
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
Använd uppgifterna Publicera testresultat och Publicera kodtäckningsresultat i pipelinen för att publicera testresultat tillsammans med kodtäckningsresultat med hjälp av Istanbul.
Ange kontrollalternativen för aktiviteten Publicera testresultat för att köra aktiviteten även om en tidigare aktivitet har misslyckats, såvida inte distributionen avbröts.
Testa webbläsaren från slutpunkt till slutpunkt
Kör tester i huvudlösa webbläsare som en del av din pipeline med verktyg som Protractor eller Karma. Publicera sedan resultatet för versionen till Azure DevOps med följande steg:
- Installera en huvudlös webbläsartestdrivrutin, till exempel headless Chrome eller Firefox, eller ett webbläsarföraktande verktyg som PhantomJS, på byggagenten.
- Konfigurera ditt testramverk så att det använder valfritt webbläsar-/drivrutinsalternativ enligt verktygets dokumentation.
- Konfigurera testramverket (vanligtvis med ett plugin-program eller en konfiguration för reporter) för att mata ut JUnit-formaterade testresultat.
- Konfigurera en skriptuppgift för att köra de CLI-kommandon som behövs för att starta de huvudlösa webbläsarinstanserna.
- Kör testerna från slutpunkt till slutpunkt i pipelinestegen tillsammans med dina enhetstester.
- Publicera resultaten med hjälp av samma publicera testresultat-uppgift tillsammans med dina enhetstester.
Paketera webbappar
Paketera program för att paketera alla dina programmoduler med mellanliggande utdata och beroenden i statiska tillgångar som är redo för distribution. Lägg till en pipelinefas efter kompilering och tester för att köra ett verktyg som webpack eller ng build med hjälp av Angular CLI.
I det första exemplet anropas webpack
. Om du vill ha det här arbetet kontrollerar du att webpack
det är konfigurerat som ett utvecklingsberoende i din package.json projektfil. Detta körs webpack
med standardkonfigurationen om du inte har en webpack.config.js
fil i rotmappen för projektet.
- script: webpack
I nästa exempel används npm-aktiviteten för att anropa npm run build
build
skriptobjektet som definierats i projektet package.json. Med hjälp av skriptobjekt i projektet flyttas logiken för bygget till källkoden och ut ur pipelinen.
- script: npm run build
Använd CLI- eller Bash-uppgiften i pipelinen för att anropa paketeringsverktyget, till exempel webpack
eller Angulars ng build
.
Implementera JavaScript-ramverk
Angular
För Angular-appar kan du inkludera Angular-specifika kommandon som ng-test, ng build och ng e2e. Om du vill använda Angular CLI-kommandon i pipelinen installerar du angular/cli npm-paketet på byggagenten.
Kommentar
På Microsoft-värdbaserade Linux-agenter förordar du kommandot med sudo
, till exempel sudo npm install -g
.
- script: |
npm install -g @angular/cli
npm install
ng build --prod
Lägg till följande uppgifter i pipelinen:
npm
- Kommando:
custom
- Kommando och argument:
install -g @angular/cli
- Kommando:
npm
- Kommando:
install
- Kommando:
våldsamt slag
- Typ:
inline
- Manus:
ng build --prod
- Typ:
För tester i pipelinen som kräver att en webbläsare körs, till exempel ng-testkommandot i startappen, som kör Karma, använder du en huvudlös webbläsare i stället för en standardwebbläsare. I Angular-startappen:
browsers
Ändra posten i din karma.conf.js projektfil frånbrowsers: ['Chrome']
tillbrowsers: ['ChromeHeadless']
.singleRun
Ändra posten i din karma.conf.js projektfil från värdetfalse
tilltrue
. Den här ändringen hjälper dig att se till att Karma-processen stoppas när den har körts.
React och Vue
Alla beroenden för dina React- och Vue-appar samlas in i din package.json-fil . Din azure-pipelines.yml-fil innehåller standardskriptet för Node.js:
- script: |
npm install
displayName: 'npm install'
- script: |
npm run build
displayName: 'npm build'
Byggfilerna finns i en ny mapp, dist
(för Vue) eller build
(för React). Det här kodfragmentet skapar en artefakt – www
– som är redo för lansering. Den använder aktiviteterna Node Installer, Copy Files och Publish Build Artifacts .
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
displayName: 'npm install'
- script: |
npm run build
displayName: 'npm build'
- task: CopyFiles@2
inputs:
Contents: 'build/**' # Pull the build directory (React)
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory) # dist or build files
ArtifactName: 'www' # output artifact named www
Släpp genom att peka versionsuppgiften dist
på artefakten eller build
och använda Azure Web App Deploy-uppgiften.
Webpack
Du kan använda en webpack-konfigurationsfil för att ange en kompilator, till exempel Babel eller TypeScript, för att transpilera JSX eller TypeScript till oformaterad JavaScript och paketera din app.
- script: |
npm install webpack webpack-cli --save-dev
npx webpack --config webpack.config.js
Lägg till följande uppgifter i pipelinen:
npm
- Kommando:
custom
- Kommando och argument:
install -g webpack webpack-cli --save-dev
- Kommando:
våldsamt slag
- Typ:
inline
- Manus:
npx webpack --config webpack.config.js
- Typ:
Skapa aktivitetslöpare
Det är vanligt att använda Gulp eller Grunt som uppgiftslöpare för att skapa och testa en JavaScript-app.
Klunk
Gulp förinstalleras på Microsoft-värdbaserade agenter. gulp
Kör kommandot i YAML-filen:
- script: gulp # include any additional options that are needed
Om stegen i gulpfile.js-filen kräver autentisering med ett npm-register:
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
- script: gulp # include any additional options that are needed
Lägg till uppgiften Publicera testresultat för att publicera JUnit- eller xUnit-testresultat på servern.
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/TEST-RESULTS.xml'
testRunTitle: 'Test results for JavaScript using gulp'
Lägg till aktiviteten Publicera kodtäckningsresultat för att publicera kodtäckningsresultat till servern. Du hittar täckningsmått i byggsammanfattningen och du kan ladda ned HTML-rapporter för ytterligare analys.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
Det enklaste sättet att skapa en pipeline om din app använder Gulp är att använda Node.js med gulp build-mallen när du skapar pipelinen. Den här mallen lägger automatiskt till olika uppgifter för att anropa Gulp-kommandon och publicera artefakter. I uppgiften väljer du Aktivera kodtäckning för att aktivera kodtäckning med hjälp av Istanbul.
Grunt
Grunt förinstalleras på Microsoft-värdbaserade agenter. Så här kör du grunt-kommandot i YAML-filen:
- script: grunt # include any additional options that are needed
Om stegen i Gruntfile.js
filen kräver autentisering med ett npm-register:
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
- script: grunt # include any additional options that are needed
Det enklaste sättet att skapa en pipeline om din app använder Grunt är att använda Node.js med Grunt-byggmallen när du skapar pipelinen. Detta lägger automatiskt till olika uppgifter för att anropa Gulp-kommandon och publicera artefakter. I uppgiften väljer du alternativet Publicera till TFS/Team Services för att publicera testresultat och väljer Aktivera kodtäckning för att aktivera kodtäckning med hjälp av Istanbul.
Paketera och leverera din kod
När du har skapat och testat appen kan du ladda upp byggutdata till Azure Pipelines, skapa och publicera ett npm- eller Maven-paket eller paketera byggutdata till en .zip fil för distribution till ett webbprogram.
Publicera filer till Azure Pipelines
Om du vill ladda upp hela arbetskatalogen med filer använder du aktiviteten Publicera byggartefakter och lägger till följande i azure-pipelines.yml
filen.
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)'
Om du vill ladda upp en delmängd filer kopierar du först de filer som behövs från arbetskatalogen till en mellanlagringskatalog med uppgiften Kopiera filer och använder sedan aktiviteten Publicera byggartefakter.
- task: CopyFiles@2
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)'
Contents: |
**\*.js
package.json
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
Publicera en modul till ett npm-register
Om projektets utdata är en npm
modul för användning av andra projekt och inte ett webbprogram använder du npm-aktiviteten för att publicera modulen till ett lokalt register eller till det offentliga npm-registret. Ange en unik kombination av namn/version varje gång du publicerar.
Exempel
Det första exemplet förutsätter att du hanterar versionsinformation (till exempel via en npm-version) genom ändringar package.json
i filen i versionskontroll. I följande exempel används skriptuppgiften för att publicera till det offentliga registret.
- script: npm publish
Nästa exempel publicerar till ett anpassat register som definierats i lagringsplatsens .npmrc
fil. Konfigurera en npm-tjänstanslutning för att mata in autentiseringsuppgifter i anslutningen när bygget körs.
- task: Npm@1
inputs:
command: publish
publishRegistry: useExternalRegistry
publishEndpoint: https://my.npmregistry.com
Det sista exemplet publicerar modulen till ett Azure DevOps Services-pakethanteringsflöde.
- task: Npm@1
inputs:
command: publish
publishRegistry: useFeed
publishFeed: https://my.npmregistry.com
Mer information om versionshantering och publicering av npm-paket finns i Publicera npm-paket och Hur kan jag version mina npm-paket som en del av byggprocessen?.
Distribuera en webbapp
Om du vill skapa ett .zip filarkiv som är redo för publicering till en webbapp använder du uppgiften Arkivfiler :
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
Information om hur du publicerar det här arkivet till en webbapp finns i Distribution av Azure-webbappar.
Publicera artefakter till Azure Pipelines
Använd uppgiften Publicera byggartefakter för att publicera filer från din version till Azure Pipelines.
Publicera till ett npm-register
Om du vill skapa och publicera ett npm-paket använder du npm-aktiviteten. Mer information om versionshantering och publicering av npm-paket finns i Publicera npm-paket.
Distribuera en webbapp
Om du vill skapa ett .zip filarkiv som är redo för publicering till en webbapp använder du uppgiften Arkivfiler. Information om hur du publicerar det här arkivet till en webbapp finns i Distribution av Azure Web App.
Skapa och push-överföra avbildning till containerregister
När källkoden har skapats och enhetstesterna har genomförts kan du även skapa en avbildning och skicka den till ett containerregister.
Felsöka
Om du kan bygga projektet på utvecklingsdatorn men har problem med att skapa det i Azure Pipelines kan du utforska följande potentiella orsaker och korrigerande åtgärder:
Kontrollera att versionerna av Node.js och aktivitetslöparen på utvecklingsdatorn matchar dem i agenten. Du kan inkludera kommandoradsskript som i pipelinen för att kontrollera vad som
node --version
är installerat på agenten. Använd antingen installationsprogrammet för nodverktyget (som beskrivs i den här vägledningen) för att distribuera samma version på agenten eller körnpm install
kommandon för att uppdatera verktygen till önskade versioner.Om dina versioner misslyckas tillfälligt när du återställer paket har npm-registret antingen problem eller så finns det nätverksproblem mellan Azure-datacentret och registret. Vi kan inte kontrollera dessa faktorer. Utforska om användning av Azure Artifacts med ett npm-register som en överordnad källa förbättrar tillförlitligheten för dina versioner.
Om du använder
nvm
för att hantera olika versioner av Node.js kan du byta till uppgiften Installationsprogram för nodverktyg i stället. (nvm
installeras av historiska skäl på macOS-avbildningen.)nvm
hanterar flera Node.js versioner genom att lägga till gränssnittsalias och ändraPATH
, vilket interagerar dåligt med hur Azure Pipelines kör varje uppgift i en ny process.Uppgiften Installationsprogram för nodverktyget hanterar den här modellen korrekt. Men om ditt arbete kräver användning av
nvm
kan du lägga till följande skript i början av varje pipeline:steps: - bash: | NODE_VERSION=16 # or whatever your preferred version is npm config delete prefix # avoid a warning . ${NVM_DIR}/nvm.sh nvm use ${NODE_VERSION} nvm alias default ${NODE_VERSION} VERSION_PATH="$(nvm_version_path ${NODE_VERSION})" echo "##vso[task.prependPath]$VERSION_PATH"
node
Sedan fungerar andra kommandoradsverktyg för resten av pipelinejobbet. I varje steg där du användernvm
kommandot startar du skriptet med följande kod:- bash: | . ${NVM_DIR}/nvm.sh nvm <command>
Vanliga frågor
F: Var kan jag lära mig mer om Azure Artifacts och pakethanteringstjänsten?
S: Pakethantering i Azure Artifacts
F: Var kan jag lära mig mer om uppgifter?
S: Bygg-, versions- och testuppgifter
F: Hur åtgärdar jag ett pipelinefel med meddelandet "FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed – JavaScript heap out of memory"?
S: Den här feltypen inträffar när Node.js-paketet överskrider minnesanvändningsgränsen. Lös problemet genom att lägga till en variabel som NODE_OPTIONS
och tilldela den värdet --max_old_space_size=16384.
F: Hur kan jag version mina npm-paket som en del av byggprocessen?
S: Ett alternativ är att använda en kombination av versionskontroll och npm-version. I slutet av en pipelinekörning kan du uppdatera lagringsplatsen med den nya versionen. I den här YAML-filen finns en GitHub-lagringsplats och paketet distribueras till npmjs. Bygget misslyckas om det finns ett matchningsfel mellan paketversionen på npmjs och package.json
filen.
variables:
MAP_NPMTOKEN: $(NPMTOKEN) # Mapping secret var
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps: # Checking out connected repo
- checkout: self
persistCredentials: true
clean: true
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
customEndpoint: 'my-npm-connection'
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
displayName: 'npm install'
- script: |
npm pack
displayName: 'Package for release'
- bash: | # Grab the package version
v=`node -p "const p = require('./package.json'); p.version;"`
echo "##vso[task.setvariable variable=packageVersion]$v"
- task: CopyFiles@2
inputs:
contents: '*.tgz'
targetFolder: $(Build.ArtifactStagingDirectory)/npm
displayName: 'Copy archives to artifacts staging directory'
- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: 'package.json'
targetFolder: $(Build.ArtifactStagingDirectory)/npm
displayName: 'Copy package.json'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/npm'
artifactName: npm
displayName: 'Publish npm artifact'
- script: | # Config can be set in .npmrc
npm config set //registry.npmjs.org/:_authToken=$(MAP_NPMTOKEN)
npm config set scope "@myscope"
# npm config list
# npm --version
npm version patch --force
npm publish --access public
- task: CmdLine@2 # Push changes to GitHub (substitute your repo)
inputs:
script: |
git config --global user.email "username@contoso.com"
git config --global user.name "Azure Pipeline"
git add package.json
git commit -a -m "Test Commit from Azure DevOps"
git push -u origin HEAD:main