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:
- Microsoft tarafından barındırılan veya şirket içinde barındırılan aracılarla derleme ortamınızı ayarlayın.
- Derlemeniz için paketleri indirmek üzere NPM görevini veya bir betiği kullanın.
- JavaScript çerçeveleriuygulama: Angular, React veya vue.
- Birim testlerini çalıştırın ve test sonuçlarını yayınla göreviyleyayımlayın.
- Kod kapsamı sonuçlarını yayımlamak için kod kapsamını Yayımla görevini kullanın.
- NPM paketlerini Azure Artifacts ile yayımlayın.
- Dosyaları Arşivle göreviyle bir Web uygulamasına yayımlamaya ve Azure 'a dağıtmayayönelik bir .zip dosya arşivi oluşturun.
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
Başlamak için GitHub bu depoyu çatalla.
https://github.com/Azure-Samples/js-e2e-express-serverAzure DevOps kuruluşunuzda oturum açın ve projenize gidin.
projenizde Pipelines sayfasına gidin. Sonra yeni bir işlem hattı oluşturmak için eylemi seçin.
ilk olarak GitHub kaynak kodunuzun konumu olarak seçerek sihirbazın adımlarını gözden geçir.
oturum açmak için GitHub yönlendiriliyorsunuz. bu durumda GitHub kimlik bilgilerinizi girin.
Depo listesi göründüğünde Node.js örnek deponuzu seçin.
Azure Pipelines, deponuzdaki kodu analiz eder ve
Node.jsardışık düzen için şablon önerir. Bu şablonu seçin.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.
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
Başlamak için GitHub bu depoyu çatalla.
https://github.com/Azure-Samples/js-e2e-express-serverazure-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'
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.
İşlem hatlarınız için Aracı havuzunu ve YAML dosya yolunu ayarlayın.
İş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.
İşlem hattınızda değişiklik yapmaya hazırsanız, düzenleyin .
İş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
Başlamak için GitHub bu depoyu çatalla.
https://github.com/Azure-Samples/js-e2e-express-serverKendi 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.
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:
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
İş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:
İş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.
Görev kataloğunda, düğüm aracı yükleyici görevini bulun ve ekleyin.
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 installhattı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 installgö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
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:
- 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.
- 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.
- 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.
- 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.
- İşlem hattı aşamalarında, birim testlerinizle birlikte uçtan uca testleri çalıştırın.
- 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:
Proje
browsersdosyanız olanbrowsersolarakbrowsers: ['Chrome']browsers: ['ChromeHeadless']değiştirme.Proje
singleRundosyanız içinsingleRundeğerini olarakfalsetruedeğ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 --versioniç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
nvmyönetmek için Node.js, bunun yerine Düğüm Aracınvmgöz önünde bulundurabilirsiniz. (nvmmacOS 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ümPATHnvmDüğü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
nvmaş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,
nodeişlem hattı işinin geri kalanı için ve diğer komut satırı araçları çalışır. komutunu kullanmanız gereken hernvmadı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