İşlem hattı çalıştırmalarıyla ilgili sorunları giderme
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Bu konu, genel sorun giderme kılavuzu sağlar. .NET Core hakkında belirli sorun giderme işlemleri için bkz. .NET Core sorun giderme.
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.
İşlem hattınızla ilgili sorunları tanılamanıza yardımcı olması için aşağıdaki sorun giderme bölümlerini kullanabilirsiniz. Ardışık düzen hatalarının çoğu bu kategorilerden birine girer.
- İşlem hattı tetiklemez
- İşlem hattı kuyrukları, ancak hiçbir şekilde aracı yok
- İşlem hattı tamamlanamazsa
İşlem hattı tetiklemez
Bir işlem hattı hiç başlamazsa, aşağıdaki ortak tetikleyiciyle ilgili sorunları kontrol edin.
- UI ayarları YAML tetikleyici ayarını geçersiz kıl
- Çekme isteği Tetikleyicileri Azure Repos desteklenmez
- CI ve PR tetikleyicilerinde yanlış yapılandırılmış dal filtreleri
- Zamanlanan tetikleyici saat dilimi dönüştürmeleri
- UI ayarları YAML zamanlanmış tetikleyicilerini geçersiz kılar
Not
Çalıştırmanın bir başka nedeni de, son kullanıcının Azure DevOps oturumu kapattıktan sonra kuruluşunuzun beş dakika sürmesidir. Bundan sonra, derleme işlem hatlarınızın her biri bir kez daha çalışır. Örneğin, kuruluşunuz devre dışı olduğunda:
- Kuruluşunuzdaki gecelik bir kod derlemesi, birisi yeniden oturum açana kadar yalnızca bir gece çalışacaktır.
- Başka bir git deposunun CI derlemeleri, birisi yeniden oturum açana kadar çalışmayı durdurur.
UI ayarları YAML tetikleyici ayarını geçersiz kıl
YAML işlem hatları, işlem triggerpr hattı ayarları Kullanıcı arabirimindeki ve tetikleme ayarlarını geçersiz kılabilir. triggerVeya pr tetikleyicilerinin tetikme görünmüyor ise, bu ayarı kontrol edin. İşlem hattınızı düzenlenirken .. . öğesini seçin ve ardından tetikler.

Deponuz için kullanılabilen tetikleyici türleri (sürekli tümleştirme veya çekme isteği doğrulama) için buradaki YAML tetikleyicisini geçersiz kıl ayarını kontrol edin.

Çekme isteği Tetikleyicileri Azure Repos desteklenmez
prtetikleyiciniz tetiklenmezse ve Azure Repos kullanıyorsanız, bunun nedeni pr tetikleyicilerinin Azure Repos desteklenmez. Git Azure Repos, çekme isteği derleme doğrulamasını uygulamak için dal ilkeleri kullanılır. Daha fazla bilgi için bkz. çekme isteği doğrulaması Için dal ilkesi.
CI ve PR tetikleyicilerinde yanlış yapılandırılmış dal filtreleri
Bir YAML PR veya CI tetikleyicisi tanımladığınızda, includeexclude dallar ve yollar için hem hem de yan tümceleri belirtebilirsiniz. includeYan tümcesinin işlemenizden ayrıntılarla eşleştiğinden ve exclude yan tümcesinin bunları dışiçermediğinden emin olun.
Önemli
Bir YAML PR veya CI tetikleyicisi tanımladığınızda, yalnızca açıkça dahil edilecek dallar bir çalıştırma tetikleyecektir. Dahil edilen ekleme, önce işlenir ve ardından listeden kaldırılır. Dışlama belirtirseniz ancak herhangi bir içerme belirtmezseniz hiçbir şey tetiklemez. Daha fazla bilgi için bkz. Tetikleyiciler.
Bir YAML PR veya CI tetikleyicisi tanımladığınızda, includeexclude dallar, Etiketler ve yollar için hem hem de yan tümceleri belirtebilirsiniz. includeYan tümcesinin işlemenizden ayrıntılarla eşleştiğinden ve exclude yan tümcesinin bunları dışiçermediğinden emin olun. Daha fazla bilgi için bkz. Tetikleyiciler.
Not
Yan tümce içermeyen bir exclude yan tümce belirtirseniz include , yan tümcesinde belirtmeye eşdeğerdir *include .
Zamanlanan tetikleyici saat dilimi dönüştürmeleri
YAML zamanlanan Tetikleyiciler UTC saat dilimi kullanılarak ayarlanır. Zamanlanan Tetikleyiciniz doğru zamanda tetiklenmek üzere görünmüyorsa, gün ayarını da hesaba ayırarak UTC ve yerel saat diliminiz arasındaki dönüşümleri onaylayın. Daha fazla bilgi için bkz. Zamanlanmış Tetikleyiciler.
UI ayarları YAML zamanlanmış tetikleyicilerini geçersiz kılar
YAML işlem hattınızda hem YAML zamanlanmış Tetikleyiciler hem de UI tanımlı zamanlanmış Tetikleyiciler varsa, yalnızca UI tanımlı zamanlanmış Tetikleyiciler çalıştırılır. YAML işlem hattınızda YAML tanımlı zamanlanmış Tetikleyicileri çalıştırmak için, işlem hattı ayarları Kullanıcı arabiriminde tanımlanan zamanlanmış Tetikleyicileri kaldırmanız gerekir.
Bir YAML işlem hattından işlem hattı ayarları Kullanıcı arabirimine erişmek için, işlem hattınızı düzenleyin, ... öğesini seçin ve ardından tetikler.

Zamanlanan tüm Tetikleyicileri kaldırın.
Tüm UI zamanlanmış Tetikleyicileri kaldırıldıktan sonra, YAML zamanlanmış tetikleyicilerinin çalışmaya başlaması için bir gönderme yapılmalıdır. Daha fazla bilgi için bkz. Zamanlanmış Tetikleyiciler.
İşlem hattı kuyrukları, ancak hiçbir şekilde aracı yok
İşlem hattı kuyruklarınız, ancak hiçbir bir aracıyı alırsa, aşağıdaki öğeleri kontrol edin.
- Paralel iş limitleri-kullanılabilir aracı yok veya ücretsiz limitlerinizi vurun
- Azure DevOps güvenlik duvarının arkasındaki Azure Key Vault erişemiyor
- Yeterli eşzamanlılık yok
- İşiniz onay bekliyor olabilir
- Kullanılabilir tüm aracılar kullanımda
- Bir aracının yeteneklerine eşleşmeyen talepler
- hizmet düşüşü için Azure DevOps durumunu denetleme
Not
Aşağıdaki senaryolar paralel bir iş tüketmez:
- Yayın işlem hatlarını veya çok aşamalı YAML işlem hatlarını kullanırsanız, bir çalıştırma yalnızca bir aşamada etkin bir şekilde dağıtıldığında bir paralel iş tüketir. Yayın bir onay veya el ile müdahale beklerken, paralel bir iş tüketmez.
- Bir sunucu işini çalıştırdığınızda veya yayın işlem hatlarını kullanarak bir dağıtım grubuna dağıttığınızda, herhangi bir paralel iş kullanamazsınız.
Daha fazla bilgi: paralel bir iş ardışık düzen tarafından nasıl kullanılır, dağıtım öncesi onaylar, sunucu işleri, dağıtım grupları ekleme
Paralel iş limitleri-kullanılabilir aracı yok veya ücretsiz limitlerinizi vurun
Şu anda başka işlem hatlarını çalıştırıyorsanız, kalan paralel işleriniz olmayabilir veya ücretsiz limitlerinizinolduğunu görebilirsiniz.
limitlerinizi denetlemek için Project ayarları, paralel işler' e gidin.

Sınırları inceledikten sonra, şu anda kaç iş çalıştığını ve kaç tane kullanılabilir olduğunu görmek için eşzamanlılık ' i kontrol edin.
Şu anda başka işlem hatlarını çalıştırıyorsanız, kalan paralel işleriniz olmayabilir veya ücretsiz limitlerinizinolduğunu görebilirsiniz.
Azure DevOps güvenlik duvarının arkasındaki Azure Key Vault erişemiyor
işlem hattınızdan Azure Key Vault erişemiyorsanız, güvenlik duvarı Azure DevOps Services aracısı ıp adresini engelliyor olabilir. Haftalık json dosyasında Yayınlanan IP adresleri allowlistelenmiş olmalıdır. Daha fazla bilgi için bkz. Microsoft tarafından barındırılan aracılar: ağ.
Yeterli eşzamanlılık yok
Ne kadar eşzamanlılık olduğunu denetlemek için:
limitlerinizi denetlemek için Project ayarları, paralel işler' e gidin.

Ayrıca
https://dev.azure.com/{org}/_settings/buildqueue?_a=concurrentJobs, ' a giderek veya günlüklerdekihttps://dev.azure.com/{org}/_settings/buildqueue?_a=concurrentJobs' i seçerek bu sayfaya ulaşabilirsiniz.
Hangi havuzun eşzamanlılık üzerinde (Microsoft tarafından barındırılan veya şirket içinde barındırılan havuzlar) denetlemesini istediğinizi belirleyin ve sürmekte olan Işleri görüntüle' yi seçin.
Şu anda X/x işlerinin çalıştığınıbildiren bir metin görürsünüz. Her iki sayı de aynı ise işler, çalışmakta olan işler tamamlanana kadar bekler.

sıraya alınan işler dahil olmak üzere tüm işleri, Project ayarlarındanaracı havuzları ' nı seçerek görüntüleyebilirsiniz.

Bu örnekte, eşzamanlı iş sınırı bir, çalışan bir iş ve bir sıraya alınmış bir iş olur. Bu örnekte olduğu gibi, tüm aracılar işleri çalıştırmakla meşgul olduğunda, ek işler sıralandığında aşağıdaki ileti görüntülenir:
The agent request is not running because all potential agents are running other requests. Current position in queue: 1. Bu örnekte, iş kuyruğun bir yanında olduğundan, konumu bir olur.
İşiniz onay bekliyor olabilir
Onay bekleyen bir işlem hattı, bir sonraki aşamaya taşınamaz. Daha fazla bilgi için bkz. onayları ve denetimleri tanımlama.
Kullanılabilir tüm aracılar kullanımda
Tüm aracılarınız Şu anda meşgulse işler bekleyebilir. Aracılarınızı denetlemek için:
https://dev.azure.com/{org}/_settings/agentpoolssayfasına gidinDenetlenecek aracı havuzunu seçin, bu örnekte FabrikamPoolve aracılar' ı seçin.

Bu sayfa şu anda çevrimiçi/çevrimdışı ve kullanımda olan tüm aracıları gösterir. Bu sayfadan havuza ek aracılar da ekleyebilirsiniz.
Bir aracının yeteneklerine eşleşmeyen talepler
İşlem hattınızda aracılarınızın herhangi birinin özelliklerini karşılamayan talepler varsa, işlem hattı başlatılmaz. Aracılarınızdan yalnızca bazılarında istenen özellikler varsa ve bunlar şu anda diğer işlem hatlarını çalıştırıyorsa, söz konusu aracılardan biri kullanılabilir duruma gelene kadar işlem hattınız durdurulur.
Aracılarınız ve işlem hatlarınızda belirtilen özellikleri ve talepleri denetlemek için bkz. Özellikler.
Not
Yetenekler ve talepler genellikle yalnızca kendi kendine barındırılan aracılarla kullanılır. İşlem hattınızda aracı sistem özellikleri ile eşleşmeyen talepler varsa, aracıları eşleşen yetenekler ile açıkça etiketlendirilmezseniz, işlem hatları bir aracı almaz.
TFS Aracısı bağlantı sorunları
- Aracı bağlantısı test edilirken yapılandırma başarısız oluyor (yalnızca şirket içi TFS)
- Aracı kayıp iletişimi
- TFS Iş aracısı başlatılmadı
- Yanlış yapılandırılmış bildirim URL 'SI (1. x aracı sürümü)
Aracı bağlantısı test edilirken yapılandırma başarısız oluyor (yalnızca şirket içi TFS)
Testing agent connection.
VS30063: You are not authorized to access http://<SERVER>:8080/tfs
Aracı yapılandırılırken yukarıdaki hata alınmışsa TFS makinenizde oturum açın. Internet Information Services (ııs) yöneticisi 'ni başlatın. Anonim kimlik doğrulamasının etkinleştirildiğinden emin olun.

Aracı kayıp iletişimi
Bu sorun, hata iletisi ile belirlenir:
The job has been abandoned because agent did not renew the lock. Ensure agent is running, not sleeping, and has not lost communication with the service.
Bu hata, aracının birkaç dakikalık bir yayma için sunucu ile iletişimi kaybettiğini işaret ediyor olabilir. Aracı makinede ağ veya diğer kesintiler için kural yapmak üzere aşağıdakileri denetleyin:
- Otomatik güncelleştirmelerin kapalı olduğunu doğrulayın. Bir güncelleştirmeden makine yeniden başlatması, derleme veya yayının yukarıdaki hatayla başarısız olmasına neden olur. Bu tür kesintiyi önlemek için güncelleştirmeleri denetimli bir biçimde uygulayın. Aracı makinesini yeniden başlatmadan önce, aracının havuz yönetimi sayfasında devre dışı olarak işaretlenmesi ve çalışan tüm derleme bitmesine izin vermek gerekir.
- Uyku ayarlarının kapalı olduğunu doğrulayın.
- Aracı bir sanal makinede çalışıyorsa, makinenin sistem durumunu birden çok dakika etkileyebilecek canlı geçişden veya diğer VM bakım işleminden kaçının.
- Aracı bir sanal makinede çalışıyorsa, konak makineye yönelik aynı işletim sistemi güncelleştirme önerileri ve uyku ayarı önerileri de geçerlidir. Ayrıca, konak makineyi çok etkileyen diğer bakım işlemleri de vardır.
- Performans İzleyicisi günlüğü veya diğer sistem durumu ölçümü günlüğe kaydetme, bu hata türünü aracı makinede kısıtlanmış kaynak kullanılabilirliğine (disk, bellek, sayfa dosyası, işlemci, ağ) ilişkilendirmenize yardımcı olabilir.
- Sorunu ağ sorunlarıyla ilişkilendirmenin bir diğer yolu da bir sunucuya süresiz olarak ping ve çıktıyı bir dosyaya döklerin zaman damgalarıyla birlikte dökümünü belirlemektir. İyi bir zaman aralığı kullanın, örneğin 20 veya 30 saniye. Azure Pipelines kullanıyorsanız, bir ınternet etki alanına ping eklemek isteyebilirsiniz, örneğin, bing.com. Şirket içi TFS sunucusu kullanıyorsanız, aynı ağ üzerindeki bir sunucuya ping eklemek istersiniz.
- Makinenin ağ aktarım hızı yeterli olduğunu doğrulayın. Aktarım hızını denetlemek için çevrimiçi bir hız testi gerçekleştirebilirsiniz.
- Proxy kullanıyorsanız, aracının proxy 'nizi kullanacak şekilde yapılandırıldığını doğrulayın. Aracı dağıtım konusuna başvurun.
TFS Iş aracısı başlatılmadı
Bu, "bir aracının istenmesi bekleniyor" Web konsolundaki bir iletiyle ayırdedilir. service Windows hizmetinin başlatıldığını tfsjobagent (görünen ad: Visual Studio Team Foundation arka plan iş aracısı) doğrulayın.
Yanlış yapılandırılmış bildirim URL 'SI (1. x aracı sürümü)
Bu, "bir aracıdan konsol çıkışı bekleniyor" Web konsolundaki bir iletiyle nitelenebilir ve işlem zaman aşımına uğrar.
Eşleşmeyen bir bildirim URL 'SI, çalışan işleminin sunucuya bağlanamamasına neden olabilir. Bkz. Team Foundation Yönetim Konsolu, uygulama katmanı. 1. x Aracısı, ile yapılandırılan URL 'YI kullanarak ileti kuyruğunu dinler. Ancak, bir iş iletisi kuyruktan çekiliyorsa, çalışan işlemi sunucuya geri iletişim kurmak için bildirim URL 'sini kullanır.
hizmet düşüşü için Azure DevOps durumunu denetleme
aracılar için daha fazla sıra süresi gibi hizmet düşüşüne neden olabilecek sorunlar için Azure DevOps hizmet durumu portalına bakın. daha fazla bilgi için bkz. Azure DevOps hizmet durumu.
İşlem hattı tamamlanamazsa
İşlem hatınız bir aracı alırsa ancak tamamlanamazsa, aşağıdaki yaygın sorunları kontrol edin. Sorununuz bunlardan biriyle eşleşmiyorsa, bkz. sorunları tanılamak için günlükleri al.
- İş zaman aşımı
- Kodu indirirken sorunlar
- İşlem hatm, MSBUILD gibi bir komut satırı adımında başarısız oluyor
- Dosya veya klasör kullanımda hatalar
- aralıklı veya tutarsız MSBuild başarısızlığı
- İşlem yanıt vermiyor
- Birden çok platform için satır sonları
- ' (Tek tırnak) eklenmiş değişkenler
- Hizmet bağlantısıyla ilgili sorunlar
İş zaman aşımı
İşlem hattı uzun bir süre çalışabilir ve sonra iş zaman aşımı nedeniyle başarısız olur. İş zaman aşımı, kullanılan aracıya göre değişir. Ücretsiz Microsoft barındırılan aracılarının, özel bir depo için iş başına en fazla 60 dakikalık zaman aşımı ve genel bir depo için 360 dakika vardır. Bir iş için maksimum zaman aşımını artırmak üzere aşağıdakilerden herhangi birini tercih edebilirsiniz.
- Kullanılan depodan bağımsız olarak tüm işler için size 360 dakika alacak bir Microsoft barındırılan Aracısı satın alın
- Aracıdan kaynaklanan zaman aşımı sorunlarını gidermek için kendi kendine barındırılan bir aracı kullanın
İş zaman aşımıhakkında daha fazla bilgi edinin.
Not
Microsoft tarafından barındırılan aracı işleriniz zaman aşımına uğradıysanız, bir iş için maksimum zaman aşımından daha az olan bir işlem hattı zaman aşımı belirtmadığınızdan emin olun. Denetlemek için bkz. zaman aşımları.
Kodu indirirken sorunlar
- İşlem hatm bir kullanıma alma adımında başarısız oluyor
- Team Foundation Sürüm Denetimi (tfvc) sorunları
İşlem hatm bir kullanıma alma adımında başarısız oluyor
checkoutkuruluşunuzdaki farklı bir projede bulunan Azure Repos Git deposunda bir adım kullanıyorsanız, checkout ayarının devre dışı olduğundan emin olun veya işlem hattınızı depoya erişebildiğinden emin olmak için kapsamlı derleme kimliklerinizde adımları izleyin.
Ardışık düzen, sınırlı iş yetkilendirme kapsamı nedeniyle depoya erişemediği zaman, bu hatayı alırsınız Git fetch failed with exit code 128 ve günlüklerinizin şuna benzer bir giriş vardır Remote: TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting.
İşlem hatlarınız hemen ile başarısız olursa Could not find a project that corresponds with the repository , checkout adımda veya depo kaynağı bildiriminde projenizin ve depo adınızın doğru olduğundan emin olun.
Team Foundation Sürüm Denetimi (tfvc) sorunları
Bazı dosyaları indirmeden kaynakları al
Bu, tf get komutundan "Tüm dosyalar güncel" günlüğünde bir iletiyle nitelendirilen bir durum olabilir. Yerleşik hizmet kimliğinin kaynakları indirme iznine sahip olduğunu doğrulayın. Koleksiyon Derleme Project veya Project Derleme Hizmeti kimliği, derleme işlem hattının Genel sekmesinde seçilen yetkilendirme kapsamına bağlı olarak kaynakları indirme iznine sahip olur. Sürüm denetimi web kullanıcı arabiriminde, klasör hiyerarşisinin herhangi bir düzeyinde proje dosyalarına göz atabilir ve güvenlik ayarlarını kontrol edebilirsiniz.
Team Foundation Proxy aracılığıyla kaynak al
Aracıyı Team Foundation Proxy aracılığıyla kaynakları alacak şekilde yapılandırmanın en kolay yolu, aracının kullanıcı olarak çalışması için TFVC proxy sunucusuna işaret alan ortam TFSPROXY değişkeni ayarlamaktır.
Windows:
set TFSPROXY=http://tfvcproxy:8081
setx TFSPROXY=http://tfvcproxy:8081 // If the agent service is running as NETWORKSERVICE or any service account you can't easily set user level environment variable
macOS/Linux:
export TFSPROXY=http://tfvcproxy:8081
İşlem hattım MSBUILD gibi bir komut satırı adımda başarısız oluyor
Derleme veya yayın hatasının bir Azure Pipelines/TFS ürün sorununa (aracı veya görevler) neden olup olmadığını daraltmak yararlı olur. Derleme ve sürüm hataları dış komutlardan da sonuçlandırabilirsiniz.
Başarısız görev tarafından yürütülen tam komut satırı için günlükleri kontrol edin. Komutu komut satırına yerel olarak çalıştırma girişimi sorunu yeniden ortaya çıkarabiliyor. Komutu kendi makineden yerel olarak çalıştırmak ve/veya makinede oturum açmak ve komutu hizmet hesabı olarak çalıştırmak yararlı olabilir.
Örneğin, sorun derleme işlem hattınızı MSBuild sırasında mı yaşanıyor (örneğin, MSBuild veya Visual StudioDerleme görevi kullanıyor musunuz)? Öyleyse, yerel makinede aynı MSBuild aynı bağımsız değişkenleri kullanarak komutunu çalıştırmayı deneyin. Sorunu yerel makinede yeniden oluşturasanız, sonraki adımlarınız sorunu MSBuild.
Dosya düzeni
Bir derleme için gereken araçların, kitaplıkların, üst bilgilerin ve diğer şeylerin konumu, barındırılan aracıda yerel makinenize göre farklı olabilir. Derleme bu dosyalardan birini bulamayarak başarısız olursa, aracıda düzeni incelemek için aşağıdaki betikleri kullanabilirsiniz. Bu, eksik dosyayı takip etmeye yardımcı olabilir.
Geçici bir konumda (örneğin sorun giderme amacıyla oluşturulan yeni bir depo) yeni bir YAML işlem hattı oluşturun.
Betik, yazıldığı gibi yolunuz üzerinde dizinleri arar.
İsteğe bağlı olarak satırı diğer SEARCH_PATH= yerlerde arama yapmak için düzenleyebilirsiniz.
# Script for Linux and macOS
pool: { vmImage: ubuntu-latest } # or whatever pool you use
steps:
- checkout: none
- bash: |
SEARCH_PATH=$PATH # or any colon-delimited list of paths
IFS=':' read -r -a PathDirs <<< "$SEARCH_PATH"
echo "##[debug] Found directories"
for element in "${PathDirs[@]}"; do
echo "$element"
done;
echo;
echo;
echo "##[debug] Found files"
for element in "${PathDirs[@]}"; do
find "$element" -type f
done
# Script for Windows
pool: { vmImage: windows-2019 } # or whatever pool you use
steps:
- checkout: none
- powershell: |
$SEARCH_PATH=$Env:Path
Write-Host "##[debug] Found directories"
ForEach ($Dir in $SEARCH_PATH -split ";") {
Write-Host "$Dir"
}
Write-Host ""
Write-Host ""
Write-Host "##[debug] Found files"
ForEach ($Dir in $SEARCH_PATH -split ";") {
Get-ChildItem $Dir -File -ErrorAction Continue | ForEach-Object -Process {
Write-Host $_.FullName
}
}
Yerel komut istemi ile aracı arasındaki farklar
Yerel makinede komut yürütücürken ve aracıda derleme veya yayın çalıştırıldıklarında bazı farkların etkili olduğunu unutmayın. Aracı Linux, macOS veya Windows hizmet olarak çalıştıracak şekilde yapılandırılmışsa etkileşimli bir oturum açma oturumunda çalışmıyor olur. Etkileşimli oturum açma oturumu olmadan kullanıcı arabirimi etkileşimi ve diğer sınırlamalar vardır.
Kullanım hataları olan dosya veya klasör
Kullanım hatalarında dosya veya klasör genellikle aşağıdaki gibi hata iletileriyle birlikte görünür:
Access to the path [...] is denied.The process cannot access the file [...] because it is being used by another process.Access is denied.Can't move [...] to [...]
Sorun giderme adımları:
- Kullanımda olan dosyaları ve klasörleri algılama
- Virüsten koruma dışlama
- MSBuild ve /nodeReuse:false
- MSBuild ve /maxcpucount:[n]
Kullanımda olan dosyaları ve klasörleri algılama
İşlem Windows gibi araçlar, belirli bir dizin altında dosya olaylarının bir izlemesi yakalamak için olabilir. Veya zaman içinde anlık görüntü için İşlem Gezgini veya Tanıtıcıgibi araçlar kullanılabilir.
Virüsten koruma dışlama
Dosyalarınızı tarayabilecek virüsten koruma yazılımı, derleme veya sürüm sırasında dosya veya klasör kullanım hatalarına neden olabilir. Aracı dizininiz ve yapılandırılmış "çalışma klasörü" için virüsten koruma dışlaması eklemek, virüsten koruma yazılımını engelleme işlemi olarak belirlemeye yardımcı olabilir.
MSBuild ve /nodeReuse:false
Derlemeniz sırasında MSBuild çağırırsanız bağımsız değişkenini (kısa biçim) /nodeReuse:false iletirsiniz. /nr:false Aksi MSBuild derleme tamamlandıktan sonra işlem çalıştırmaya devam ediyor olur. İşlemler, sonraki olası bir derlemenin beklentisiyle bir süre daha kalır.
Bu MSBuild, bir dizinin çalışma diziniyle çakışması nedeniyle bir dizini silme veya taşıma girişimlerini MSBuild olabilir.
MSBuild ve Visual Studio Derleme görevleri, derleme görevlerine geçirilen /nr:false bağımsız değişkenlere zaten MSBuild. Ancak, kendi betiği MSBuild bir komut dosyası çağırırsanız, bağımsız değişkenini belirtmeniz gerekir.
MSBuild ve /maxcpucount:[n]
Varsayılan olarak, MSBuild ve Visual Studioderleme görevleri anahtarıyla MSBuild çalıştırmayı kullanır. Bazı durumlarda bu, birden çok işlem dosyası erişim sorunu gibi sorunlara neden olabilir.
Derleme görevlerinize bağımsız değişkenini ekleyerek MSBuild aynı /m:1 anda yalnızca bir işlem çalıştırmaya zorlarsınız.
Dosya kullanım sırasında sorunlar, dosyanın eşzamanlı işlem özelliği kullanılabilirken MSBuild. Bağımsız değişken (kısa /maxcpucount:[n] biçim) belirtmezseniz, MSBuild /m:[n] tek bir işlem kullanmaları talimatı verir. MSBuild veya Visual Studio Derleme görevlerini kullanıyorsanız, varsayılan olarak eklenen "/m" bağımsız değişkenlerini geçersiz kılmak için "/m:1" belirtmeniz gerekir.
Aralıklı veya tutarsız MSBuild hataları
Aralıklı veya tutarsız hatalarla MSBuild, MSBuild tek işlem kullanma talimatı kullanmayı deneyin. Aralıklı veya tutarsız hatalar, hedef yapılandırmanın, yapılandırma yapılandırmanıza ait eşzamanlı işlem özelliğiyle uyumsuz olduğunu MSBuild. Bkz. MSBuild ve /maxcpucount:[n].
İşlem yanıt vermiyor
İşlem nedenlere ve sorun giderme adımlarına yanıt vermiyor:
Giriş Bekliyor
Yanıt vermeyi durduran bir işlem, bir işlemin giriş beklediğini gösteriyor olabilir.
Aracıyı etkileşimli oturum açmış oturum açma oturumunun komut satırıyla çalıştırmanız, bir işlemden giriş için bir iletişim kutusu isteyip isteminde olmadığını belirlemeye yardımcı olabilir.
Aracıyı hizmet olarak çalıştırma, programların giriş istemini ortadan kaldırmaya yardımcı olabilir. Örneğin .NET'te programlar, istem olup olmadığını belirlemek için System.Environment.UserInteractive Boolean'a güvenmektedir. Bir hizmet olarak Windows, değer false olur.
İşlem dökümü
Sürecin dökümlerini analiz etmek, kilitlenmeye neden olan işlemleri belirlemeye yardımcı olabilir.
WiX projesi
Özel günlük MSBuild etkinleştirildiğinde bir WiX projesi oluşturmak, WiX'in çıkış akışında beklerken kilitlenmeye neden olabilir. Ek bağımsız MSBuild eklemek /p:RunWixToolsOutOfProc=true soruna geçici bir çözüm sağlar.
Birden çok platform için satır bitişleri
İşlem hatlarını birden çok platformda çalıştırarak farklı satır uçları ile ilgili sorunlarla karşılaşabiliyorsunuz. Geçmişte Linux ve macOS satır besleme (LF) karakterlerini, satır başı Windows satır besleme (CRLF) karakterlerini de kullanmıştı. Git, depodaki SATıRLARın LF ile ancak CRLF'nin depodaki çalışma dizininde bitimini otomatik olarak Windows.
Çoğu Windows araçları yalnızca LF bitişleriyle ilgili değildir ve bu otomatik davranış çöze çözenden daha fazla soruna neden olabilir.
Satır sonlarına göre sorunlarla karşılaşırsanız Git'i her yerde LF'yi tercih etmek üzere yapılandırmanız önerilir.
Bunu yapmak için .gitattributes deponun köküne bir dosya ekleyin.
Bu dosyaya aşağıdaki satırı ekleyin:
* text eol=lf
' (tek tırnak) ekli değişkenler
İşlem hattınız komutunu kullanarak değişkenleri ayaran bir Bash betiği içerirse, ayar değişkeninin ##vso' değerine ek olarak bir ekinin ekini görebilir.
Bu, ile bir etkileşim nedeniyle set -x oluşur.
Çözüm, değişken ayarlamadan set -x önce geçici olarak devre dışı bırakmaktır.
Bunu yapmak için Bash söz dizimi şu set +x şekildedir: .
set +x
echo ##vso[task.setvariable variable=MY_VAR]my_value
set -x
Bu neden oluyor?
Birçok Bash betik, set -x hata ayıklamaya yardımcı olmak için komutunu içerir.
Bash, yürütülen komutu tam olarak izler ve stdout'a yankılar.
Bu, aracının komutu iki kez görmelerine neden olur ve ##vso ikincisinde Bash karakteri sona ' ekleyştirecek.
Örneğin, şu işlem hattını göz önünde önünde önünden alalım:
steps:
- bash: |
set -x
echo ##vso[task.setvariable variable=MY_VAR]my_value
stdout üzerinde aracı iki satır görebilir:
##vso[task.setvariable variable=MY_VAR]my_value
+ echo '##vso[task.setvariable variable=MY_VAR]my_value'
Aracı ilk satırı gördüğünde doğru değer olan MY_VAR "my_value".
Ancak, aracı ikinci satırı gördüğünde her şeyi satırın sonuna kadar işler.
MY_VAR "my_value" olarak ayarlanır.
Betik yürütülürken Python uygulaması için kitaplıklar yüklenmez
Bir Python uygulaması dağıtıldığında, bazı durumlarda CI/CD işlem hattı çalışır ve kod başarıyla dağıtılır, ancak tüm bağımlılık kitaplıklarını yüklemekten sorumlu olanrequirements.txt dosyası yürütülmez.
Bağımlılıkları yüklemek için dağıtım sonrası betiği App Service kullanın. Aşağıdaki örnek, dağıtım sonrası betikte kullanmak için gereken komutu gösterir. Betiği senaryo için güncelleştirin.
D:\home\python364x64\python.exe -m pip install -r requirements.txt
Hizmet Bağlantısı ile ilgili sorunlar
Hizmet bağlantılarıyla ilgili sorunları gidermek için bkz. Hizmet bağlantısı sorunlarını giderme.
.css Depolama Gezgini gibi statik içerikleri web sitesinden .js web sitesine dağıtmak için Azure DevOps'yi Azure Pipelines
Bu senaryoda, içeriği web sitesine yüklemek için Azure Dosya Kopyalama görevini kullanabilirsiniz. İçeriği web kapsayıcıya yüklemek için İçerik yükleme konusunda açıklanan araçlardan herhangi birini kullanabilirsiniz.
Sorunları tanılamak için günlükleri al
Önceki önerilerin hiçbiri probleminizle eşlenemse, başarısız işlem hattınızı tanılamak için günlüklerde yer alan bilgileri kullanabilirsiniz.
Tamamlanan derleme veya yayında günlüklere bakarak başlayabilirsiniz. İşlem hattı çalıştırma özetine giderek ve işi ve görevi seçerek günlükleri görüntüleyebilirsiniz. Belirli bir görev başarısız olursa, o görevin günlüklerini kontrol edin.
İşlem hattı derleme özetini günlük görüntülemeye ek olarak, ek tanılama bilgileri içeren tam günlükleri indirebilir ve sorun gidermenize yardımcı olmak için daha ayrıntılı günlükler yapılandırebilirsiniz.
Günlükleri yapılandırma ve kullanma hakkında ayrıntılı yönergeler için bkz. İşlem hattı sorunlarını tanılamak için günlükleri gözden geçirme.
Daha fazla yardıma ihtiyacım var. Bir hata buldum. Bir önerim var. Nereye gidebilirim?
Abonelik, faturalama ve teknik destek alma
Tüm sorunları bildirin veya Developer Community'da geri bildirim gönderin.
Önerilerinizi memnuniyetle karşılarız: