JavaScript ve Node.js uygulamalar oluşturun, test edin ve dağıtın

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

JavaScript ve Node.js uygulamalarını derlemek ve test etmek için bir işlem hattı kullanın ve ardından hedefleri dağıtın veya hedeflere yayımlayın. Şunları nasıl yapacağınızı öğrenin:

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.

Not

bu kılavuz Team Foundation Server (TFS) sürüm 2017,3 ve üzeri için geçerlidir.

İlk işlem hattınızı oluşturma

Azure Pipelines yeni misiniz? Bu durumda, diğer bölümlere geçmeden önce bu bölümü oluşturmak için kullanmayı öneririz.

GitHub bu depoyu çatalla:

https://github.com/Azure-Samples/js-e2e-express-server

Azure Pipelines oturum açın

Azure Pipelinesoturum açın. oturum açtıktan sonra, tarayıcınız öğesine gider https://dev.azure.com/my-organization-name ve Azure DevOps panonuzu görüntüler.

Seçtiğiniz kuruluş içinde bir Projeoluşturun. Kuruluşunuzda bir projeniz yoksa, başlamak için bir proje oluşturun ekranına bakabilirsiniz. aksi takdirde, panonun sağ üst köşesindeki oluştur Project düğmesini seçin.

İşlem hattını oluşturma

  1. Başlamak için GitHub bu depoyu çatalla.

    https://github.com/Azure-Samples/js-e2e-express-server
    
  2. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  3. projenizde Pipelines sayfasına gidin. Sonra yeni bir işlem hattı oluşturmak için eylemi seçin.

  4. ilk olarak GitHub kaynak kodunuzun konumu olarak seçerek sihirbazın adımlarını gözden geçir.

  5. oturum açmak için GitHub yönlendiriliyorsunuz. bu durumda GitHub kimlik bilgilerinizi girin.

  6. Depo listesi göründüğünde Node.js örnek deponuzu seçin.

  7. Azure Pipelines, deponuzdaki kodu analiz eder ve Node.js ardışık düzen için şablon önerir. Bu şablonu seçin.

  8. Azure Pipelines, işlem hatlarınız için bir yaml dosyası oluşturacaktır. Kaydet ve Çalıştır' ı seçin, ardından doğrudan ana dalda Yürüt' ü seçin ve ardından Kaydet ' i seçin ve yeniden çalıştırın.

  9. Yeni bir çalıştırma başlatılır. Çalıştırmanın bitmesini bekleyin.

İşiniz bittiğinde, deponuzda özelleştirmeniz için kullanabileceğiniz bir YAML dosyası ( azure-pipelines.yml ) çalışır.

İpucu

yaml dosyasında bu konuda açıklandığı gibi değişiklikler yapmak için, Pipelines sayfasında işlem hattını seçin ve sonra dosyayı düzenleyin .

YAML

  1. Başlamak için GitHub bu depoyu çatalla.

    https://github.com/Azure-Samples/js-e2e-express-server
    
  2. azure-pipelines.ymlDeponuzda bir dosya ekleyin. Bu YAML, sunucunuzda NPM yüklü Node.js sahip olduğunuzu varsayar.

trigger:
- main

pool: Default

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'
  1. Bir işlem hattı oluşturun (nasıl olduğunu bilmiyorsanız, ilk işlem hattınızı oluşturma) ve şablon Için YAML' yi seçin.

  2. İşlem hatlarınız için Aracı havuzunu ve YAML dosya yolunu ayarlayın.

  3. İşlem hattını kaydedin ve bir derlemeyi kuyruğa alın. Derleme #nnnnnnnn. n sıraya alınmış ileti görüntülendiğinde, işlem hattınızı eylemde görmek için sayı bağlantısını seçin.

  4. İşlem hattınızda değişiklik yapmaya hazırsanız, düzenleyin .

  5. İşlem hattınızı özelleştirmenin daha yaygın yöntemlerinden bazılarını öğrenmek için aşağıdaki bölümlere bakın.

Klasik

  1. Başlamak için GitHub bu depoyu çatalla.

    https://github.com/Azure-Samples/js-e2e-express-server
    
  2. Kendi deponuzda örnek kodu aldıktan sonra, ilk işlem hattınızı oluşturma bölümündeki yönergeleri kullanarak bir işlem hattı oluşturun ve boş işlem şablonunu seçin.

  3. Işlem hattı düzenleyicideki Görevler sekmesinde işlem ' i seçin ve özellikleri aşağıdaki şekilde değiştirin:

    • Aracı kuyruğu:
  4. Aşağıdaki görevleri ardışık düzene belirtilen sırada ekleyin:

    • npm

      • Komutundaki
    • npm

      • Görünen ad:
      • Komutundaki
      • Komut ve bağımsız değişkenler:
    • Test Sonuçları Yayımla

      • Özellikler için tüm varsayılan değerleri bırakın
    • Arşiv dosyaları

      • Arşivlemek için kök klasör veya dosya:
      • Arşiv yollarına eklenecek kök klasör adı: Olmayan
    • Derleme Artifacts Yayımla

      • Özellikler için tüm varsayılan değerleri bırakın
  5. İşlem hattını kaydedin ve işlem sırasında görmek için bir derlemeyi kuyruğa alın.

JavaScript derleme işleminizi özelleştirmenin bazı yaygın yollarını öğrenin.

Yapı ortamı

JavaScript uygulamalarınızı kendi altyapınızı ayarlamaya gerek kalmadan derlemek için Azure Pipelines kullanabilirsiniz. derlemelerinizi çalıştırmak için Windows ya da Linux aracılarını kullanabilirsiniz.

azure-pipelines.ymlUygun görüntüyü seçmek için dosyanızdaki aşağıdaki kod parçacığını güncelleştirin.

pool:
  vmImage: 'ubuntu-latest' # examples of other options: 'macOS-10.15', 'windows-latest'

JavaScript uygulamalarını oluşturmak, test etmek ve çalıştırmak için sık kullandığınız araçlar-NPM, Node, Yarn ve Gulp-gibi Microsoft tarafından barındırılan aracılarda önceden yüklenmiş olarak Azure Pipelines. Önceden yüklenmiş Node.js ve NPM 'nin tam sürümü için Microsoft tarafından barındırılan aracılar' a bakın. Microsoft tarafından barındırılan aracılara bu araçların belirli bir sürümünü yüklemek için, düğüm aracı yükleyici görevini işleminizin başına ekleyin.

Kendi kendine barındırılan bir aracı da kullanabilirsiniz.

Node.js belirli bir sürümünü kullanın

Microsoft tarafından barındırılan aracı üzerinde önceden yüklü olmayan bir Node.js ve NPM sürümüne ihtiyacınız varsa, düğüm aracı yükleyicisi görevinikullanın. Dosyanıza aşağıdaki kod parçacığını ekleyin azure-pipelines.yml .

Not

Barındırılan aracılar düzenli olarak güncelleştirilir ve bu görevin kurulması, işlem hattının her çalıştırılışında daha yeni bir alt sürüme önemli zaman güncelleştirmesine neden olur. Bu görevi yalnızca işlem hattınızda belirli bir düğüm sürümüne ihtiyacınız olduğunda kullanın.

- task: NodeTool@0 
  inputs:
    versionSpec: '12.x' # replace this value with the version that you need for your project

Aracıda zaten yüklü olmayan bir Node.js/NPM sürümüne ihtiyacınız varsa:

  1. İşlem hattında, Görevler' i seçin, yapı görevlerinizi çalıştıran aşamayı seçin ve ardından Bu aşamaya yeni bir görev eklemek için öğesini seçin.

  2. Görev kataloğunda, düğüm aracı yükleyici görevini bulun ve ekleyin.

  3. Görevi seçin ve yüklemek istediğiniz Node.js çalışma zamanının sürümünü belirtin.

Yalnızca NPM aracını güncelleştirmek için npm i -g npm@version-number Yapı işleminizde komutunu çalıştırın.

Birden çok düğüm sürümü kullanma

Bir strateji ve düğüm aracı yükleyici görevikullanarak uygulamanızı birden çok düğüme oluşturup test edebilirsiniz.

pool:
  vmImage: 'ubuntu-latest'
strategy:
  matrix:
    node_12_x:
      node_version: 12.x
    node_13_x:
      node_version: 13.x

steps:
- task: NodeTool@0 
  inputs:
    versionSpec: $(node_version)

- script: npm install

Yapı aracısında araçları yükler

Derlemeniz için projenizin veya dosyanızdaki geliştirme bağımlılıkları olarak gerekli araçları tanımladıysanız package.jsonpackage-lock.json , bu araçları NPM aracılığıyla proje bağımlılıklarınızın geri kalanı ile birlikte yükleyebilirsiniz. Bu, projede tanımlanan araçların tam sürümünü, derleme aracısında bulunan diğer sürümlerden yalıtılmış olarak yükler.

Bir komut dosyası veya NPM görevikullanabilirsiniz.

Package. JSON ile yüklemek için bir komut dosyası kullanma

- script: npm install --only=dev

Package. JSON ile yüklemek için NPM görevini kullanma

- task: Npm@1
  inputs:
     command: 'install'

Bu şekilde, bu şekilde bu şekilde yüklenen araçları çalıştırın. bu şekilde, bu şekilde, npx yol çözümüne bu şekilde yüklenen araçlar görüntülenir. Aşağıdaki örnek, Test Çalıştırıcısı 'nı çağırır, mocha ancak küresel olarak yüklenen (üzerinden) bir sürümü kullanmadan önce geliştirme bağımlılığı olarak yüklenen sürümü arar npm install -g .

- script: npx mocha

Projenizin ihtiyaç duyacağı ancak içinde geliştirme bağımlılıkları olarak ayarlanmamış araçları yüklemek için package.json , işlem npm install -g hattınızdaki bir betik aşamasından çağırın.

aşağıdaki örnek kullanarak Angular clı 'nın en son sürümünü yükleme . İşlem hattının geri kalanı daha sonra ng diğer aşamalardan aracı kullanabilir script .

Not

Microsoft tarafından barındırılan Linux aracılarında, gibi komutunu önceden önyüz sudosudo npm install -g .

- script: npm install -g @angular/cli

Bu görevler, işlem hatlarınızın her çalıştırılışında çalışır, bu nedenle araçlar 'ın derleme sürelerine sahip olduğu etkinin en az olması gerekir. Ek yük, derleme performankenizin önemli bir etkiye dönüşirse, Şirket içinde barındırılan aracıları ihtiyacınız olan araçların sürümüyle yapılandırmayı düşünün.

Yapı aracıınızda araçları yüklemek için işlem hattınızdaki NPM veya komut satırı görevlerini kullanın.

Bağımlılık yönetimi

yapıcınızdan,. npmrc dosyasında belirttiğiniz özel npm kayıt defteri türü olan ortak npm kayıt defteri paketleri indirmek için yarn veya Azure Artifacts/tfs kullanın.

npm

Derlemeniz için paketleri indirmek üzere birkaç yolla NPM kullanabilirsiniz:

  • İşlem npm install hattınızda doğrudan çalıştırın. Bu, paketleri herhangi bir kimlik doğrulaması gerektirmeyen bir kayıt defterinden indirmenin en kolay yoludur. Yapılarınızın çalıştırmak için aracıdaki geliştirme bağımlılıklarına ihtiyacı yoksa, bu seçenekle derleme sürelerini hızlandırabilirsiniz --only=prodnpm install .
  • Bir NPM görevikullanın. Bu, kimliği doğrulanmış bir kayıt defteri kullanırken faydalıdır.
  • Bir NPM kimlik doğrulaması görevikullanın. Bu, npm install görev çalıştıranlar-Gulp, grönmi veya Maven 'ın içinden çalıştırdığınızda yararlı olur.

Bir npm kayıt defteri belirtmek istiyorsanız, URL 'Leri .npmrc deponuzdaki bir dosyaya koyun. akışlarınızın kimliği doğrulandıysa, Project Ayarlaraltındaki hizmetler sekmesinde bir npm hizmet bağlantısı oluşturarak kimlik bilgilerini yönetin.

İşlem hattınızda bir betiği kullanarak NPM paketlerini yüklemek için aşağıdaki kod parçacığını öğesine ekleyin azure-pipelines.yml .

- script: npm install

Dosyanızda belirtilen özel bir kayıt defteri kullanmak için .npmrc Aşağıdaki kod parçacığını öğesine ekleyin azure-pipelines.yml .

- task: Npm@1
  inputs:
    customEndpoint: <Name of npm service connection>

Gulp gibi görev çalıştıranlar aracılığıyla kayıt defteri kimlik bilgilerini NPM komutlarına geçirmek için, azure-pipelines.yml görev Çalıştırıcısı 'nı çağırabilmeniz için aşağıdaki görevi öğesine ekleyin.

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

Paketleri indirmek ve yüklemek için işlem hattınızdaki NPM veya NPM kimlik doğrulaması görevini kullanın.

npm kayıt defteri paketleri geri yüklerken bağlantı sorunları nedeniyle derlemeleriniz bazen başarısız olursa, Azure Artifacts yukarı akış kaynaklarıylabirlikte kullanabilir ve paketleri önbelleğe alabilirsiniz. Azure Artifacts ' e bağlanırken işlem hattının kimlik bilgileri otomatik olarak kullanılır. bu kimlik bilgileri genellikle Project koleksiyonu derleme hizmeti hesabından türetilir.

Microsoft tarafından barındırılan aracılarkullanıyorsanız, her bir derlemeyi her çalıştırdığınızda yeni bir makine alırsınız. Bu, her seferinde bağımlılıkları geri yükleme anlamına gelir.

Bu işlem, önemli miktarda zaman alabilir. bunu azaltmak için Azure Artifacts veya şirket içinde barındırılan bir aracı kullanabilirsiniz. Daha sonra paket önbelleğini kullanmanın avantajını elde edersiniz.

Yarn

Bağımlılıkları geri yüklemek için Yarn 'yi çağırmak için bir betik aşaması kullanın. Yarn, Microsoft tarafından barındırılan bazı aracılardaönceden yüklenebilir. Bunu, diğer herhangi bir araç gibi şirket içinde barındırılan aracılara yükleyebilir ve yapılandırabilirsiniz.

- script: yarn install

Yarn'yi çağırmak için işlem hattınızda CLI veya Bash görevini kullanın.

JavaScript derleyicilerini Çalıştır

Kaynak kodunuzu Node.js çalışma zamanı veya Web tarayıcıları tarafından kullanılabilen sürümlere dönüştürmek için Babel ve TypeScript derleyicisi gibi derleyicileri kullanın.

Projenizin dosyasında derleyicinizi çalıştıran bir betik nesneniz varsa , komut dosyası görevi kullanarak işlem hattınızda çağırın.

- script: npm run compile

Komut dosyası görevini kullanarak, derleyicileri doğrudan işlem hattından çağırabilirsiniz. Bu komutlar kopyalanmış kaynak kodu deposunun kökünden çalıştırılır.

- script: tsc --target ES6 --strict true --project tsconfigs/production.json

Kodu derlemek için projenizin Package. json dosyasında tanımlanmış bir derleme betiğinizin olması halinde, işlem hattınızda NPM görevini kullanın. Proje yapılandırmanızda tanımlı ayrı bir komut dosyası yoksa, kodunuzu derlemek için Bash görevini kullanın.

Birim testlerini çalıştırma

İşlem hatlarınızı, JUnit XML biçiminde biçimlendirilen sonuçlar üretecek şekilde JavaScript testlerinizi çalıştıracak şekilde yapılandırın. Daha sonra, yerleşik test sonuçları görevini kullanarak sonuçları yayımlayabilirsiniz.

Test çatısı JUnit çıkışını desteklemiyorsa, Mocha-JUnit-Reportergibi bir iş ortağı raporlama modülü aracılığıyla destek eklemeniz gerekir. Test komut dosyanızı JUnit Reporter kullanacak şekilde güncelleştirebilir veya Raporlayıcı komut satırı seçeneklerini destekliyorsa, bunları görev tanımına geçirin.

Aşağıdaki tabloda, en yaygın olarak kullanılan test çalıştıranlar ve XML sonuçları oluşturmak için kullanılabilecek reporler listelenmiştir:

Test Çalıştırıcısı XML raporları oluşturmak için Reporters
Mocha Mocha-JUnit-Reporter
Cypress-birden çok-Reporters
Jasmine Jasmine-Reporters
jest jest-JUnit
jest-JUnit-Reporter
karma Karma-JUnit-Reporter
Ava dokunma-xUnit

Bu örnek, Mocha-JUnit-Reporter kullanır ve doğrudan bir betik kullanarak çağırır. Bu, varsayılan konumunda JUnit XML çıkışını üretir ./test-results.xml .

- script: mocha test --reporter mocha-junit-reporter

testProjenizin Package. json dosyasında bir betik tanımladıysanız kullanarak çağırabilirsiniz npm test .

- script: npm test


Test sonuçlarını yayınla

Sonuçları yayımlamak için yayımla test sonuçları görevini kullanın.

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: JUnit
    testResultsFiles: '**/test-results.xml'

Kod kapsamı sonuçlarını yayımlama

Test betikleriniz Istanbulgibi bir kod kapsamı aracı çalıştırdıysanız, kod kapsamı sonuçlarını ve test sonuçlarınızla birlikte yayımlamak Için kod kapsamı sonuçlarını yayımla görevini ekleyin. Bunu yaptığınızda, Derleme özetinde kapsam ölçümlerini bulabilir ve daha fazla analiz için HTML raporlarını indirebilirsiniz. Görev Cobertura veya JaCoCo raporlama çıktısı bekler, bu yüzden doğru çıktıyı oluşturmak için kod kapsamı araclarınızın gerekli seçeneklerle çalıştığından emin olun. (Örneğin, --report cobertura .)

Aşağıdaki örnek, Istanbul komut satırı arabirimi olan, Mocha-JUnit-Reporter ve Invoke komutuyla birlikte NYC'yi kullanır .

- 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@1
  inputs: 
    codeCoverageTool: Cobertura # or JaCoCo
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'

Test sonuçlarını, Istanbul kullanarak kod kapsamı sonuçlarıyla birlikte yayımlamak için test sonuçları Yayımla ve kod kapsamı sonuçları Yayımla görevlerini kullanın.

Dağıtım iptal edilmediği takdirde, önceki bir görev başarısız olsa bile görevi çalıştırmak için Yayımla Test Sonuçları görevinin denetim seçeneklerini ayarlayın.

Uçtan uca tarayıcı testi

Protraktör veya karmagibi araçlarla işlem hatlarınızın bir parçası olarak gözetimsiz tarayıcılarda testler çalıştırın. Ardından, derleme için sonuçları şu adımlarla VSTS 'ye yayımlayın:

  1. Gözetimsiz Chrome veya Firefox gibi bir gözetimsiz tarayıcı test sürücüsü ya da yapı aracısında hayali tomjs gibi bir tarayıcı sahte işlem aracı yükler.
  2. Test çatısını araç belgelerine göre tercih ettiğiniz gözetimsiz tarayıcı/sürücü seçeneğini kullanacak şekilde yapılandırın.
  3. JUnit biçimli test sonuçlarına çıkış yapmak için test çatısını (genellikle bir Raporlayıcı veya yapılandırmayla birlikte) yapılandırın.
  4. Gözetimsiz tarayıcı örneklerinin başlatılması için gereken herhangi bir CLı komutunu çalıştırmak üzere bir betik görevi ayarlayın.
  5. İşlem hattı aşamalarında, birim testlerinizle birlikte uçtan uca testleri çalıştırın.
  6. Birim testlerinizin yanı sıra aynı yayımla test sonuçları görevini kullanarak sonuçları yayımlayın.

Web uygulamalarını paketleme

Tüm uygulama modüllerinizi ara çıkışlar ve bağımlılıklarla dağıtım için HAZIRAN statik varlıklara dağıtmak için uygulamaları paketleyin. derlemeden sonra bir işlem hattı aşaması ekleyin ve Angular clı kullanarak webpack veya ng derlemesi gibi bir araç çalıştırın.

İlk örnek çağırır webpack . Bu işlemi gerçekleştirmek için webpack Package. JSON proje dosyanızda bir geliştirme bağımlılığı olarak yapılandırıldığından emin olun. Projenizin webpack kök klasöründe bir dosya yoksa, bu varsayılan webpack.config.js yapılandırmayla birlikte kullanılır.

- script: webpack

Sonraki örnek, package.json projesinde tanımlanan betik nesnesini çağıracak npmbuild görevini kullanır. Projeniz içinde betik nesnelerinin kullanımı, derlemenin mantığını kaynak koduna ve işlem hattının dışında taşır.

- script: npm run build

paketleme aracınızı çağırmak için işlem hattında CLI veya Bash görevini (örneğin, veya Angular kullanın.

JavaScript çerçeveleri

Angular

Daha Angular için, ng testAngular , ng derlemesive ng e2egibi belirli komutlar dahil olabilir. İşlem hattı Angular CLI komutlarını kullanmak için derleme aracınıza angular/cli npm paketini yüklemeniz gerekir.

Not

Microsoft tarafından barındırılan Linux aracıları üzerinde komutunun üzerine gibi sudosudo npm install -g yazın.

- script: |
    npm install -g @angular/cli
    npm install
    ng build --prod

İşlem hattınıza aşağıdaki görevleri ekleyin:

  • npm

    • Komut:
    • Komut ve bağımsız değişkenler:
  • npm

    • Komut:
  • bash

    • Türü:
    • Komut dosyası:

İşlem hattında tarayıcının çalışması gereken testler için (başlangıç uygulamasında karmayı çalıştıran ng test komutu gibi), standart tarayıcı yerine başsız bir tarayıcı kullansanız gerekir. Yeni Angular uygulamasında:

  1. Proje browsers dosyanız olan browsers olarak browsers: ['Chrome']browsers: ['ChromeHeadless'] değiştirme.

  2. Proje singleRun dosyanız için singleRun değerini olarak falsetrue değiştirir. Bu, Karma işleminin çalıştırıldıktan sonra durduğundan emin olunması için yardımcı olur.

React ve Vue

React ve Vue uygulamalarınız için tüm bağımlılıklar package.json dosyanıza yakalanır. azure-pipelines.yml dosyanız standart Node.js içerir:

- script: |
    npm install
    npm run build
 displayName: 'npm install and build'

Derleme dosyaları yeni bir klasördedir dist (Vue için) veya build (React). Bu kod parçacığı yayın için hazır www bir yapıt , derleme. Düğüm Yükleyicisi,Dosyaları Kopyala ve DerlemeyiYayımla Artifacts kullanır.

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and 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

Serbest bırakmak için yayın görevinizi veya distbuild yapıtını işaret edin ve Azure Web Uygulaması Dağıtma görevini dist

Webpack

JSX veya TypeScript'i düz JavaScript'e transpile etmek ve uygulamanızı paketlemek için bir derleyici (Babel veya TypeScript gibi) belirtmek için bir webpack yapılandırma dosyası kullanabilirsiniz.

- script: |
    npm install webpack webpack-cli --save-dev
    npx webpack --config webpack.config.js

İşlem hattınıza aşağıdaki görevleri ekleyin:

  • npm

    • Komut:
    • Komut ve bağımsız değişkenler:
  • bash

    • Türü:
    • Komut dosyası:

Derleme görevi çalıştırıcıları

Bir JavaScript uygulaması derlemek ve test etmek için görev çalıştırıcısı olarak Genellikle Gulp veya Grunt'un kullanımı yaygındır.

Gulp

Gulp, Microsoft tarafından barındırılan aracılara önceden yüklenmiştir. gulpYAML dosyasında komutunu çalıştırmak için:

- script: gulp                       # include any additional options that are needed

gulpfile.js dosya npm kayıt defteri:

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

- script: gulp                       # include any additional options that are needed

JUnit veya xUnit test sonuçlarını sunucuya yayımlamak için Test Sonuçları yayımlama görevini ekleyin.

- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/TEST-RESULTS.xml'
    testRunTitle: 'Test results for JavaScript using gulp'

Kod kapsamı sonuçlarını sunucuya yayımlamak için Kod Kapsamı Sonuçlarını Yayımla görevini ekleyin. Kapsam ölçümlerini derleme özetini bulabilir ve daha fazla analiz için HTML raporlarını indirebilirsiniz.

- task: PublishCodeCoverageResults@1
  inputs: 
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'

Uygulamanız Gulp kullanıyorsa işlem hattı oluşturmanın en basit yolu, işlem hattını oluştururkenNode.js şablonla birlikte kullanarak işlem hattını kullanmaktır. Bu işlem, Gulp komutlarını çağırmak ve yapıtları yayımlamak için çeşitli görevleri otomatik olarak ekler. Görevde, Kod Kapsamı'nın Etkinleştir'i seçerek Kod kapsamı'nın Etkinleştir'i seçin.

Grunt

Grunt, Microsoft tarafından barındırılan aracılara önceden yüklenmiştir. YAML dosyasında grunt komutunu çalıştırmak için:

- script: grunt                      # include any additional options that are needed

Dosyanız adımlarında kimlik Gruntfile.js doğrulaması gerektiren bir npm kayıt defteri:

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

- script: grunt                      # include any additional options that are needed

Uygulamanız Grunt kullanıyorsa işlem hattı oluşturmanın en basit yolu, işlem hattını oluştururken GruntNode.js şablonuyla birlikte kullanarak işlem hattını kullanmaktır. Bu işlem, Gulp komutlarını çağırmak ve yapıtları yayımlamak için çeşitli görevleri otomatik olarak ekler. Görevde, test sonuçlarını yayımlamak için TFS/Team Services'de Yayımla seçeneğini belirleyin ve Kod Kapsamı'nın Etkinleştir'i seçerek Kod kapsamı'nın Etkinleştir'i seçin.

Kodunuzu paketle ve teslim

Uygulamanızı oluşturduk ve test ettikten sonra derleme çıkışını Azure Pipelines'a yükleyebilir, npm veya Maven paketi oluşturabilir ve yayımlayın ya da derleme çıkışını bir web uygulamasına dağıtılacak .zip dosyasına paket haline yükleyebilirsiniz.

Dosyaları Azure Pipelines

Dosyaların çalışma dizininin tamamını karşıya yüklemek için Derlemeyi Yayımla Artifacts görevini kullanın ve aşağıdakini dosyanıza ekleyin.

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)'

Dosyaların bir alt kümesini karşıya yüklemek için, önce çalışma dizininden gerekli dosyaları Dosyaları Kopyala göreviyle bir hazırlama dizinine kopyalayın ve ardından Derlemeyi Yayımla Artifacts kullanın.

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)'
    Contents: |
      **\*.js
      package.json
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1

Modül yayımlama npm kayıt defteri

Projenizin çıkışı bir web uygulaması değil de diğer projeler tarafından kullanım için bir modülse, modülü yerel bir kayıt defterinde veya genel yönetime yayımlamak için npmnpm görevini npm kayıt defteri. Her yayımlamada benzersiz bir ad/sürüm bileşimi sağlayabilirsiniz, bu nedenle yayımlama adımlarını bir yayın veya geliştirme işlem hattının parçası olarak yapılandırıyorken bunu göz altında bulundurabilirsiniz.

İlk örnekte sürüm denetiminde dosyanıza yapılan değişikliklerle sürüm bilgilerini (npmsürümü aracılığıyla gibi) yönetebilirsiniz. Bu örnek, ortak kayıt defterinde yayımlamak için betik görevini kullanır.

- script: npm publish

Sonraki örnek, repo dosyanız içinde tanımlanan özel bir kayıt defterinde .npmrc yayımlar. Derleme çalışırken bağlantıya kimlik doğrulaması kimlik bilgilerini eklemeye bir npm hizmeti bağlantısı kurmanız gerekir.

- task: Npm@1
  inputs:
     command: publish
     publishRegistry: useExternalRegistry
     publishEndpoint: https://my.npmregistry.com

Son örnek, modülü bir paket Azure DevOps Services yayımlar.

- task: Npm@1
  inputs:
     command: publish
     publishRegistry: useFeed
     publishFeed: https://my.npmregistry.com

npm paketlerinin sürümünü oluşturma ve yayımlama hakkında daha fazla bilgi için bkz. Npm paketlerini yayımlama ve Derleme işleminin bir parçası olarak npm paketlerimi nasıl sürüme hazırlarım?.

Bir web uygulaması dağıtma

Bir web .zip yayımlamaya hazır bir dosya arşivi oluşturmak için Dosyaları Arşivle görevini kullanın:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false

Bu arşivi bir web uygulamasında yayımlamak için bkz. Azure web uygulaması dağıtımı.

Yapıtları Azure Pipelines

Derlemenizin dosyalarını Artifacts TFS'ye yayımlamak için Derlemeyi Yayımla Azure Pipelines kullanın.

Bir npm kayıt defteri'de yayımlama

Bir npm paketi oluşturmak ve yayımlamak için npm görevini kullanın. npm paketlerini sürüme almak ve yayımlama hakkında daha fazla bilgi için bkz. Npm paketlerini yayımlama.

Bir web uygulaması dağıtma

Bir web .zip yayımlamaya hazır bir dosya arşivi oluşturmak için Dosyaları Arşivle görevini kullanın. Bu arşivi bir web uygulamasında yayımlamak için bkz. Azure Web Uygulaması dağıtımı.

Kapsayıcı kayıt defterine görüntü derleme ve anında yükleme

Kaynak kodunuz başarıyla oluşturulduktan ve birim testlerinizi tamamlayan ve başarılı olduktan sonra, bir görüntü de derlemek ve bunu bir kapsayıcı kayıt defterine itebilirsiniz.

Sorun giderme

Projenizi geliştirme makineniz üzerinde derlemenize yardımcı olabilir ancak projenizi Azure Pipelines TFS'de derleme konusunda sorun varsa aşağıdaki olası nedenleri ve düzeltici eylemleri keşfedin:

  • Geliştirme makineniz üzerinde Node.js çalıştırıcı ve görev çalıştırıcısı sürümlerinin aracıda bulunan sürümlerle eş olup olamayrını kontrol edin. Aracıda nelerin yüklü olduğunu kontrol etmek node --version için işlem hattınıza gibi komut satırı betikleri dahil edin. Aracıya aynı sürümü dağıtmak için Düğüm Aracı Yükleyicisi'ne (bu kılavuzda açıklanmıştır) kullanın veya araçları istenen sürümlere güncelleştirmek için komutlar çalıştırın.

  • Paketleri geri yükleme sırasında derlemeleriniz aralıklı olarak başarısız olursa, npm kayıt defteri sorun veya Azure veri merkezi ile kayıt defteri arasında ağ sorunları vardır. Bu faktörler bizim denetimimizde değildir ve yukarı akış kaynağı olarak Azure Artifacts bir npm kayıt defteri kullanarak derlemenizin güvenilirliğini artırıp artırmay olmadığını incelemeniz gerekir.

  • Uygulamanın farklı sürümlerini nvm yönetmek için Node.js, bunun yerine Düğüm Aracı nvm göz önünde bulundurabilirsiniz. ( nvm macOS görüntüsüne geçmiş nedenlerden dolayı yüklenir.) nvm, kabuk Node.js ekleyerek ve değiştirerek, her görevi yeni bir işlemde çalıştırma Azure Pipelines kötü etkileşimde bulunarak birden çok sürüm PATHnvm

    Düğüm Aracı Yükleyicisi görevi bu modeli doğru şekilde ele almaktadır. Ancak, çalışmanız kullanımını gerektiriyorsa, her işlem hattının başına nvm aşağıdaki betiği ekleyin:

    steps:
    - bash: |
        NODE_VERSION=12  # 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"
    

    Ardından, node işlem hattı işinin geri kalanı için ve diğer komut satırı araçları çalışır. komutunu kullanmanız gereken her nvm adımda betiği şu şekilde başlatmanız gerekir:

    - bash: |
        . ${NVM_DIR}/nvm.sh
        nvm <command>
    

SSS

Azure Artifacts ve Paket Yönetimi hizmeti hakkında nereden daha fazla bilgi edinebilirim?

Azure Artifacts ve TFS 'de Paket Yönetimi

Görevler hakkında nereden daha fazla bilgi edinebilirim?

Oluşturma, yayınlama ve test görevleri

Nasıl yaparım? bir ardışık düzen hatasını, ' ÖNEMLI hata: CALL_AND_RETRY_LAST ayırma başarısız oldu-JavaScript yığını yetersiz bellek ' iletisiyle düzeltir

Bu, Node.js paketi bellek kullanım sınırını aştığında meydana gelir. Bu sorunu çözmek için, gibi bir değişken ekleyin NODE_OPTIONS ve değeri NODE_OPTIONSdeğerine atayın.

Derleme sürecinin bir parçası olarak NPM paketlerimi nasıl kullanabilirim?

Bir seçenek, sürüm denetimi ve NPM sürümününbir birleşimini kullanmaktır. İşlem hattı çalıştırmasının sonunda, deponuzu yeni sürümle güncelleştirebilirsiniz. bu yaml 'de, GitHub deposu vardır ve paket npmjs ' ye dağıtılır. Npmjs ve dosyanızdaki paket sürümünüz arasında uyuşmazlık varsa, derlemeniz başarısız olacağını unutmayın package.json .

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: NodeTool@0
  inputs:
    versionSpec: '12.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