Memecahkan masalah pipeline

| Layanan Azure DevOps Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Topik ini menyediakan panduan pemecahan masalah umum. Untuk pemecahan masalah spesifik tentang .NET Core, lihat pemecahan masalah .NET Core.

Catatan

Di Microsoft Team Foundation Server (TFS) 2018 dan versi sebelumnya, alur build dan rilis disebut definisi, eksekusi disebut build, koneksi layanan disebut titik akhir layanan, tahapan disebut lingkungan, dan pekerjaan disebut fase.

Anda dapat menggunakan bagian pemecahan masalah berikut untuk membantu mendiagnosis masalah dengan alur Anda. Sebagian besar kegagalan alur termasuk dalam salah satu kategori ini.

Alur tidak akan terpicu

Jika alur tidak dimulai sama sekali, periksa masalah terkait pemicu umum berikut.

Catatan

Alasan tambahan yang berjalan mungkin tidak dimulai adalah organisasi Anda tidak aktif lima menit setelah pengguna terakhir keluar dari Azure DevOps. Setelah itu, setiap alur build Anda akan berjalan sekali lagi. Misalnya, saat organisasi Anda tidak aktif:

  • Build kode malam di organisasi Anda hanya akan berjalan satu malam sampai seseorang masuk lagi.
  • Build CI dari repositori Git Lainnya akan berhenti berjalan sampai seseorang masuk lagi.

Pengaturan UI mengambil alih pengaturan pemicu YAML

Alur YAML dapat mengesampingkan pengaturan dan pr pemicunya trigger di antarmuka pengguna pengaturan alur. Jika pemicu atau pr Anda trigger tampaknya tidak diaktifkan, periksa pengaturan tersebut. Saat mengedit alur Anda, pilih ... lalu Pemicu.

UI pengaturan alur

Periksa pengaturan Ambil alih pemicu YAML dari sini untuk jenis pemicu (Integrasi berkelanjutan atau validasi permintaan Pull) yang tersedia untuk repositori Anda.

Ambil alih pemicu YAML dari sini.

Pemicu permintaan pull tidak didukung dengan Azure Repos

Jika pemicu Anda pr tidak diaktifkan, dan Anda menggunakan Azure Repos, itu karena pr pemicu tidak didukung untuk Azure Repos. Di Azure Repos Git, kebijakan cabang digunakan untuk menerapkan validasi build permintaan pull. Untuk informasi selengkapnya, lihat Kebijakan cabang untuk validasi permintaan pull.

Filter cabang salah dikonfigurasi dalam pemicu CI dan PR

Saat Anda menentukan pemicu YAML PR atau CI, Anda dapat menentukan include klausa dan exclude untuk cabang dan jalur. Pastikan klausul include cocok dengan detail penerapan Anda dan bahwa exclude klausul tidak mengecualikannya.

Penting

Saat Anda menentukan pemicu YAML PR atau CI, hanya cabang yang secara eksplisit dikonfigurasi untuk disertakan yang akan memicu eksekusi. Termasuk diproses terlebih dahulu, lalu pengecualian dihapus dari daftar. Jika Anda menentukan pengecualian tetapi tidak menentukan yang disertakan, tidak ada yang akan memicu. Untuk informasi selengkapnya, lihat pr dan pemicu.

Saat Anda menentukan pemicu YAML PR atau CI, Anda dapat menentukan include klausa dan exclude untuk cabang, tag, dan jalur. Pastikan klausul include cocok dengan detail penerapan Anda dan bahwa exclude klausul tidak mengecualikannya. Untuk informasi selengkapnya, lihat pr dan pemicu.

Catatan

Jika Anda menentukan exclude klausul tanpa include klausul, klausul tersebut setara dengan menentukan * dalam include klausul .

Konversi zona waktu pemicu terjadwal

Pemicu terjadwal YAML diatur menggunakan zona waktu UTC. Jika pemicu terjadwal Anda tampaknya tidak diaktifkan pada waktu yang tepat, konfirmasikan konversi antara UTC dan zona waktu lokal Anda, dengan mempertimbangkan pengaturan hari juga. Untuk informasi selengkapnya, lihat Pemicu terjadwal.

Pengaturan UI mengambil alih pemicu terjadwal YAML

Jika alur YAML Anda memiliki pemicu terjadwal YAML dan pemicu terjadwal yang ditentukan UI, hanya pemicu terjadwal yang ditentukan UI yang dijalankan. Untuk menjalankan pemicu terjadwal yang ditentukan YAML di alur YAML, Anda harus menghapus pemicu terjadwal yang ditentukan dalam antarmuka pengguna pengaturan alur.

Untuk mengakses antarmuka pengguna pengaturan alur dari alur YAML, edit alur Anda, pilih ... lalu Pemicu.

UI pengaturan alur

Hapus semua pemicu terjadwal.

Hapus pemicu terjadwal di UI pengaturan Alur.

Setelah semua pemicu terjadwal UI dihapus, dorongan harus dilakukan agar pemicu terjadwal YAML mulai berjalan. Untuk informasi selengkapnya, lihat Pemicu terjadwal.

Antrean alur tetapi tidak pernah mendapatkan agen

Jika alur Anda mengantre tetapi tidak pernah mendapatkan agen, periksa item berikut.

Catatan

Skenario berikut tidak akan menggunakan pekerjaan paralel:

  • Jika Anda menggunakan alur rilis atau alur YAML multi-tahap, eksekusi hanya menggunakan pekerjaan paralel saat sedang disebarkan secara aktif ke tahap. Saat rilis menunggu persetujuan atau intervensi manual, rilis tidak menggunakan pekerjaan paralel.
  • Saat Anda menjalankan pekerjaan server atau menyebarkan ke grup penyebaran menggunakan alur rilis, Anda tidak menggunakan pekerjaan paralel apa pun.

Pelajari lebih lanjut: Bagaimana pekerjaan paralel digunakan oleh alur, Menambahkan Persetujuan pra-penyebaran, Pekerjaan server, Grup penyebaran

Batas pekerjaan paralel - tidak ada agen yang tersedia atau Anda telah mencapai batas gratis Anda

Jika saat ini Anda menjalankan alur lain, Anda mungkin tidak memiliki sisa pekerjaan paralel, atau Anda mungkin telah mencapai batas gratis Anda.

Untuk memeriksa batas Anda, navigasikan ke Pengaturan proyek, Pekerjaan paralel.

Pekerjaan bersamaan alur

Setelah meninjau batas, periksa konkurensi untuk melihat berapa banyak pekerjaan yang saat ini berjalan dan berapa banyak yang tersedia.

Jika saat ini Anda menjalankan alur lain, Anda mungkin tidak memiliki sisa pekerjaan paralel, atau Anda mungkin telah mencapai batas gratis Anda.

Tidak dapat mengakses Azure Key Vault di belakang firewall dari Azure DevOps

Jika Anda tidak dapat mengakses Azure Key Vault dari alur Anda, firewall mungkin memblokir alamat IP agen Azure DevOps Services. Alamat IP yang diterbitkan dalam file JSON mingguan harus diizinkan. Untuk informasi selengkapnya, lihat Agen yang dihosting Microsoft: Jaringan.

Anda tidak memiliki konkurensi yang cukup

Untuk memeriksa berapa banyak konkurensi yang Anda miliki:

  1. Untuk memeriksa batas Anda, navigasikan ke Pengaturan proyek, Pekerjaan paralel.

    Batas alur bersamaan

    Anda juga dapat mencapai halaman ini dengan menavigasi ke https://dev.azure.com/{org}/_settings/buildqueue?_a=concurrentJobs, atau memilih kelola pekerjaan paralel dari log.

    Mengelola pekerjaan paralel

  2. Tentukan kumpulan mana yang ingin Anda periksa konkurensinya (kumpulan yang dihosting Microsoft atau yang dihost sendiri), dan pilih Lihat pekerjaan yang sedang berlangsung.

  3. Anda akan melihat teks yang mengatakan Saat ini menjalankan pekerjaan X/X. Jika kedua angka sama, maka pekerjaan akan menunggu hingga pekerjaan yang sedang berjalan selesai.

    Menampilkan pekerjaan yang sedang berlangsung

    Anda dapat melihat semua pekerjaan, termasuk pekerjaan yang diantrekan, dengan memilih Kumpulan agen dari pengaturan Proyek.

    Lihat pekerjaan yang diantrekan

    Dalam contoh ini, batas pekerjaan bersamaan adalah satu, dengan satu pekerjaan berjalan dan satu mengantre. Ketika semua agen sibuk menjalankan pekerjaan, seperti dalam contoh ini, pesan berikut ditampilkan ketika pekerjaan tambahan diantrekan: The agent request is not running because all potential agents are running other requests. Current position in queue: 1. Dalam contoh ini pekerjaan berikutnya dalam antrean sehingga posisinya adalah satu.

Pekerjaan Anda mungkin menunggu persetujuan

Alur Anda mungkin tidak berpindah ke tahap berikutnya karena menunggu persetujuan. Untuk informasi selengkapnya, lihat Menentukan persetujuan dan pemeriksaan.

Semua agen yang tersedia sedang digunakan

Pekerjaan mungkin menunggu jika semua agen Anda saat ini sibuk. Untuk memeriksa agen Anda:

  1. Navigasikan ke https://dev.azure.com/{org}/_settings/agentpools

  2. Pilih kumpulan agen untuk diperiksa, dalam contoh ini FabrikamPool, dan pilih Agen.

    Status agen

    Halaman ini memperlihatkan semua agen yang saat ini online/offline dan sedang digunakan. Anda juga dapat menambahkan agen tambahan ke kumpulan dari halaman ini.

Tuntutan yang tidak cocok dengan kemampuan agen

Jika alur Anda memiliki tuntutan yang tidak memenuhi kemampuan salah satu agen Anda, alur Anda tidak akan dimulai. Jika hanya beberapa agen Anda yang memiliki kemampuan yang diinginkan dan mereka saat ini menjalankan alur lain, alur Anda akan dihentikan hingga salah satu agen tersebut tersedia.

Untuk memeriksa kemampuan dan permintaan yang ditentukan untuk agen dan alur Anda, lihat Kemampuan.

Catatan

Kemampuan dan tuntutan biasanya hanya digunakan dengan agen yang dihost sendiri. Jika alur Anda memiliki tuntutan yang tidak cocok dengan kemampuan sistem agen, kecuali Anda telah secara eksplisit memberi label agen dengan kemampuan pencocokan, alur Anda tidak akan mendapatkan agen.

Masalah koneksi agen TFS

Konfigurasi gagal saat menguji koneksi agen (hanya TFS lokal)

Testing agent connection.
VS30063: You are not authorized to access http://<SERVER>:8080/tfs

Jika kesalahan di atas diterima saat mengonfigurasi agen, masuk ke komputer TFS Anda. Mulai manajer Layanan Informasi Internet (IIS). Pastikan Autentikasi Anonim diaktifkan.

mengaktifkan autentikasi anonim TFS

Agen kehilangan komunikasi

Masalah ini ditandai dengan pesan kesalahan:

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.

Kesalahan ini mungkin menunjukkan agen kehilangan komunikasi dengan server selama beberapa menit. Periksa hal berikut untuk mengesampingkan jaringan atau gangguan lain pada mesin agen:

  • Verifikasi pembaruan otomatis dinonaktifkan. Boot ulang komputer dari pembaruan akan menyebabkan build atau rilis gagal dengan kesalahan di atas. Terapkan pembaruan secara terkontrol untuk menghindari jenis gangguan ini. Sebelum me-reboot mesin agen, agen harus terlebih dahulu ditandai dinonaktifkan di halaman administrasi kumpulan dan membiarkan build yang berjalan selesai.
  • Pastikan setelan tidur dimatikan.
  • Jika agen berjalan pada komputer virtual, hindari migrasi langsung atau operasi pemeliharaan VM lainnya yang dapat sangat berdampak pada kesehatan komputer selama beberapa menit.
  • Jika agen berjalan pada komputer virtual, rekomendasi pembaruan sistem operasi dan rekomendasi pengaturan tidur yang sama berlaku untuk komputer host. Dan juga operasi pemeliharaan lainnya yang beberapa berdampak pada komputer host.
  • Pengelogan monitor performa atau pengelogan metrik kesehatan lainnya dapat membantu menghubungkan jenis kesalahan ini dengan ketersediaan sumber daya yang dibatasi pada komputer agen (disk, memori, file halaman, prosesor, jaringan).
  • Cara lain untuk menghubungkan kesalahan dengan masalah jaringan adalah dengan ping server tanpa batas waktu dan membuang output ke file, bersama dengan tanda waktu. Gunakan interval sehat, misalnya 20 atau 30 detik. Jika Anda menggunakan Azure Pipelines, maka Anda ingin melakukan ping domain internet, misalnya bing.com. Jika Anda menggunakan server TFS lokal, maka Anda ingin melakukan ping server di jaringan yang sama.
  • Pastikan throughput jaringan komputer memadai. Anda dapat melakukan tes kecepatan online untuk memeriksa throughput.
  • Jika Anda menggunakan proksi, verifikasi bahwa agen dikonfigurasi untuk menggunakan proksi Anda. Lihat topik penyebaran agen.

Agen Pekerjaan TFS belum dimulai

Ini dapat ditandai dengan pesan di konsol web "Menunggu agen diminta". Verifikasi layanan Windows TFSJobAgent (nama tampilan: Visual Studio Team Foundation Background Job Agent) dimulai.

URL pemberitahuan yang salah dikonfigurasi (versi agen 1.x)

Ini dapat ditandai dengan pesan di konsol web "Menunggu output konsol dari agen", dan proses akhirnya kehabisan waktu.

URL pemberitahuan yang tidak cocok dapat menyebabkan pekerja diproses gagal tersambung ke server. Lihat Konsol Administrasi Team Foundation, Tingkat Aplikasi. Agen 1.x mendengarkan antrean pesan menggunakan URL yang dikonfigurasi dengannya. Namun, ketika pesan pekerjaan ditarik dari antrean, proses pekerja menggunakan URL pemberitahuan untuk berkomunikasi kembali ke server.

Periksa status Azure DevOps untuk degradasi layanan

Periksa Portal Status Layanan Azure DevOps untuk masalah apa pun yang dapat menyebabkan degradasi layanan, seperti peningkatan waktu antrean untuk agen. Untuk informasi selengkapnya, lihat Status Layanan Azure DevOps.

Alur gagal diselesaikan

Jika alur Anda mendapatkan agen tetapi gagal diselesaikan, periksa masalah umum berikut. Jika masalah Anda tampaknya tidak cocok dengan salah satu hal ini, lihat Mendapatkan log untuk mendiagnosis masalah.

Batas waktu pekerjaan

Alur dapat berjalan untuk waktu yang lama dan kemudian gagal karena waktu habis pekerjaan. Batas waktu pekerjaan sangat tergantung pada agen yang digunakan. Agen gratis yang dihosting Microsoft memiliki batas waktu maksimum 60 menit per pekerjaan untuk repositori privat dan 360 menit untuk repositori publik. Untuk meningkatkan batas waktu maksimum untuk pekerjaan, Anda dapat memilih salah satu hal berikut ini.

  • Beli agen yang dihosting Microsoft yang akan memberi Anda 360 menit untuk semua pekerjaan, terlepas dari repositori yang digunakan
  • Gunakan agen yang dihost sendiri untuk mengesampingkan masalah waktu habis karena agen

Pelajari selengkapnya tentang batas waktu pekerjaan.

Catatan

Jika waktu pekerjaan agen yang dihosting Microsoft habis, pastikan Anda belum menentukan batas waktu alur yang kurang dari batas waktu maksimum untuk pekerjaan. Untuk memeriksanya, lihat Batas waktu.

Masalah saat mengunduh kode

Alur saya gagal pada langkah checkout

Jika Anda menggunakan checkout langkah pada repositori Azure Repos Git di organisasi Anda yang berada dalam proyek yang berbeda dari alur Anda, pastikan bahwa batasi cakupan otorisasi pekerjaan ke pengaturan proyek saat ini dinonaktifkan, atau ikuti langkah-langkah dalam Identitas build tercakup untuk memastikan bahwa alur Anda memiliki akses ke repositori.

Ketika alur Anda tidak dapat mengakses repositori karena cakupan otorisasi pekerjaan yang terbatas, Anda akan menerima kesalahan Git fetch failed with exit code 128 dan log Anda akan berisi entri yang mirip dengan 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.

Jika alur Anda gagal segera dengan Could not find a project that corresponds with the repository, pastikan bahwa nama proyek dan repositori Anda sudah benar dalam checkout langkah atau deklarasi sumber daya repositori.

Masalah Team Foundation Version Control (TFVC)

Mendapatkan sumber yang tidak mengunduh beberapa file

Ini mungkin ditandai dengan pesan dalam log "Semua file terbaru" dari perintah tf get . Verifikasi identitas layanan bawaan memiliki izin untuk mengunduh sumber. Baik Identitas Project Collection Build Service atau Project Build Service akan memerlukan izin untuk mengunduh sumber, tergantung pada cakupan otorisasi yang dipilih pada tab Umum dari alur build. Di antarmuka pengguna web kontrol versi, Anda dapat menelusuri file proyek di tingkat hierarki folder apa pun dan memeriksa pengaturan keamanan.

Mendapatkan sumber melalui Team Foundation Proxy

Cara termampu untuk mengonfigurasi agen untuk mendapatkan sumber melalui Proksi Team Foundation adalah mengatur variabel TFSPROXY lingkungan yang menunjuk ke server proksi TFVC untuk agen yang dijalankan sebagai pengguna.

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

Alur saya gagal pada langkah baris perintah seperti MSBUILD

Sangat membantu untuk mempersempit apakah kegagalan build atau rilis adalah hasil dari masalah produk Azure Pipelines/TFS (agen atau tugas). Kegagalan build dan rilis juga dapat diakibatkan oleh perintah eksternal.

Periksa log untuk baris perintah yang tepat yang dijalankan oleh tugas yang gagal. Mencoba menjalankan perintah secara lokal dari baris perintah dapat mereprodurasi masalah. Sangat membantu untuk menjalankan perintah secara lokal dari komputer Anda sendiri, dan/atau masuk ke komputer dan menjalankan perintah sebagai akun layanan.

Misalnya, apakah masalah terjadi selama bagian MSBuild dari alur build Anda (misalnya, apakah Anda menggunakan tugas MSBuild atau Visual Studio Build )? Jika demikian, coba jalankan perintah MSBuild yang sama pada komputer lokal menggunakan argumen yang sama. Jika Anda dapat mereproduksi masalah pada komputer lokal, maka langkah Anda berikutnya adalah menyelidiki masalah MSBuild .

Tata letak file

Lokasi alat, pustaka, header, dan hal-hal lain yang diperlukan untuk build mungkin berbeda pada agen yang dihosting daripada dari komputer lokal Anda. Jika build gagal karena tidak dapat menemukan salah satu file ini, Anda dapat menggunakan skrip di bawah ini untuk memeriksa tata letak pada agen. Ini dapat membantu Anda melacak file yang hilang.

Buat alur YAML baru di lokasi sementara (misalnya repositori baru yang dibuat untuk tujuan pemecahan masalah). Seperti yang tertulis, skrip mencari direktori di jalur Anda. Anda dapat secara opsional mengedit SEARCH_PATH= baris untuk mencari tempat lain.

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

Perbedaan antara prompt perintah lokal dan agen

Perlu diingat, beberapa perbedaan berlaku saat menjalankan perintah pada komputer lokal dan ketika build atau rilis berjalan pada agen. Jika agen dikonfigurasi untuk berjalan sebagai layanan di Linux, macOS, atau Windows, agen tidak berjalan dalam sesi masuk interaktif. Tanpa sesi masuk interaktif, interaksi UI dan batasan lainnya ada.

Kesalahan penggunaan file atau folder

Kesalahan file atau folder yang sedang digunakan sering ditunjukkan oleh pesan kesalahan seperti:

  • 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 [...]

Langkah-langkah pemecahan masalah:

Mendeteksi file dan folder yang digunakan

Di Windows, alat seperti Monitor Proses bisa untuk mengambil jejak peristiwa file di bawah direktori tertentu. Atau, untuk rekam jepret tepat waktu, alat seperti Process Explorer atau Handle dapat digunakan.

Pengecualian anti-virus

Perangkat lunak anti-virus yang memindai file Anda dapat menyebabkan file atau folder dalam kesalahan penggunaan selama build atau rilis. Menambahkan pengecualian anti-virus untuk direktori agen Anda dan "folder kerja" yang dikonfigurasi dapat membantu mengidentifikasi perangkat lunak anti-virus sebagai proses mengganggu.

MSBuild dan /nodeReuse:false

Jika Anda memanggil MSBuild selama build Anda, pastikan untuk meneruskan argumen /nodeReuse:false (bentuk /nr:falsependek ). Jika tidak, proses MSBuild akan tetap berjalan setelah build selesai. Proses tetap untuk beberapa waktu untuk mengantisipasi potensi build berikutnya.

Fitur MSBuild ini dapat mengganggu upaya untuk menghapus atau memindahkan direktori - karena konflik dengan direktori kerja proses MSBuild.

Tugas MSBuild dan Visual Studio Build sudah ditambahkan /nr:false ke argumen yang diteruskan ke MSBuild. Namun, jika Anda memanggil MSBuild dari skrip Anda sendiri, maka Anda harus menentukan argumen .

MSBuild dan /maxcpucount:[n]

Secara default tugas build seperti MSBuild dan Visual Studio Build menjalankan MSBuild dengan /m sakelar. Dalam beberapa kasus, ini dapat menyebabkan masalah seperti beberapa masalah akses file proses.

Coba tambahkan /m:1 argumen ke tugas build Anda untuk memaksa MSBuild menjalankan hanya satu proses pada satu waktu.

Masalah penggunaan file dapat mengakibatkan pemanfaatan fitur proses bersamaan MSBuild. Tidak menentukan argumen /maxcpucount:[n] (bentuk /m:[n]pendek ) menginstruksikan MSBuild untuk menggunakan satu proses saja. Jika Anda menggunakan tugas MSBuild atau Visual Studio Build, Anda mungkin perlu menentukan "/m:1" untuk mengambil alih argumen "/m" yang ditambahkan secara default.

Kegagalan MSBuild yang terputus-putus atau tidak konsisten

Jika Anda mengalami kegagalan MSBuild yang terputus-putus atau tidak konsisten, coba instruksikan MSBuild untuk menggunakan satu proses saja. Kesalahan terputus-terputus atau tidak konsisten dapat menunjukkan bahwa konfigurasi target Anda tidak kompatibel dengan fitur proses bersamaan MSBuild. Lihat MSBuild dan /maxcpucount:[n].

Proses berhenti merespons

Proses berhenti merespons penyebab dan langkah-langkah pemecahan masalah:

Menunggu Input

Proses yang berhenti merespons dapat menunjukkan bahwa proses sedang menunggu input.

Menjalankan agen dari baris perintah sesi yang masuk interaktif dapat membantu mengidentifikasi apakah proses meminta dialog untuk input.

Menjalankan agen sebagai layanan dapat membantu menghilangkan program agar tidak meminta input. Misalnya di .NET, program dapat mengandalkan Boolean System.Environment.UserInteractive untuk menentukan apakah akan meminta. Saat berjalan sebagai layanan Windows, nilainya adalah false.

Proses pencadangan

Menganalisis cadangan proses dapat membantu mengidentifikasi proses yang mengalami kebuntuan.

Proyek WiX

Membangun proyek WiX ketika pencatat MSBuild kustom diaktifkan, dapat menyebabkan Kebuntuan WiX menunggu aliran output. Menambahkan argumen /p:RunWixToolsOutOfProc=true MSBuild tambahan akan mengatasi masalah tersebut.

Akhiran baris untuk beberapa platform

Saat Anda menjalankan alur di beberapa platform, Terkadang Anda dapat mengalami masalah dengan akhiran baris yang berbeda. Secara historis, Linux dan macOS menggunakan karakter linefeed (LF) sementara Windows menggunakan pengembalian kereta ditambah linefeed (CRLF). Git mencoba mengimbangi perbedaan dengan secara otomatis membuat baris berakhiran LF di repositori tetapi CRLF di direktori kerja di Windows.

Sebagian besar alat Windows tidak masalah dengan akhiran khusus LF, dan perilaku otomatis ini dapat menyebabkan lebih banyak masalah daripada yang dipecahkan. Jika Anda mengalami masalah berdasarkan akhiran baris, kami sarankan Anda mengonfigurasi Git untuk lebih memilih LF di mana saja. Untuk melakukan ini, tambahkan .gitattributes file ke akar repositori Anda. Dalam file tersebut, tambahkan baris berikut:

* text eol=lf

Variabel yang memiliki ' (kutipan tunggal) ditambahkan

Jika alur Anda menyertakan skrip Bash yang mengatur variabel menggunakan ##vso perintah , Anda mungkin melihat tambahan ' ditambahkan ke nilai variabel yang Anda tetapkan. Ini terjadi karena interaksi dengan set -x. Solusinya adalah menonaktifkan set -x sementara sebelum mengatur variabel. Sintaks Bash untuk melakukan itu adalah set +x.

set +x
echo ##vso[task.setvariable variable=MY_VAR]my_value
set -x

Mengapa hal ini terjadi?

Banyak skrip Bash menyertakan set -x perintah untuk membantu penelusuran kesalahan. Bash akan melacak dengan tepat perintah apa yang dijalankan dan menggemakannya ke stdout. Ini akan menyebabkan agen melihat ##vso perintah dua kali, dan kedua kalinya, Bash akan menambahkan karakter ke ' akhir.

Misalnya, pertimbangkan alur ini:

steps:
- bash: |
    set -x
    echo ##vso[task.setvariable variable=MY_VAR]my_value

Pada stdout, agen akan melihat dua baris:

##vso[task.setvariable variable=MY_VAR]my_value
+ echo '##vso[task.setvariable variable=MY_VAR]my_value'

Ketika agen melihat baris pertama, MY_VAR akan diatur ke nilai yang benar, "my_value". Namun, ketika melihat baris kedua, agen akan memproses semuanya hingga akhir baris. MY_VAR akan diatur ke "my_value'".

Pustaka tidak diinstal untuk aplikasi Python saat skrip dijalankan

Ketika aplikasi Python disebarkan, dalam beberapa kasus, alur CI/CD berjalan dan kode berhasil disebarkan, tetapi file requirements.txt yang bertanggung jawab untuk menginstal semua pustaka dependensi tidak dijalankan.

Untuk menginstal dependensi, gunakan skrip pasca-penyebaran dalam tugas penyebaran App Service. Contoh berikut menunjukkan perintah yang harus Anda gunakan dalam skrip pasca-penyebaran. Anda dapat memperbarui skrip untuk skenario Anda.

D:\home\python364x64\python.exe -m pip install -r requirements.txt

Untuk memecahkan masalah yang terkait dengan koneksi layanan, lihat Pemecahan masalah koneksi layanan.

Aktifkan Storage Explorer untuk menyebarkan konten statis seperti .css dan .js ke situs web statis dari Azure DevOps melalui Azure Pipelines

Dalam skenario ini, Anda dapat menggunakan tugas Azure File Copy untuk mengunggah konten ke situs web. Anda dapat menggunakan salah satu alat yang dijelaskan dalam Mengunggah konten untuk mengunggah konten ke kontainer web.

Mendapatkan log untuk mendiagnosis masalah

Jika tidak ada saran sebelumnya yang cocok dengan masalah Anda, Anda dapat menggunakan informasi dalam log untuk mendiagnosis alur Anda yang gagal.

Mulailah dengan melihat log di build atau rilis Anda yang telah selesai. Anda dapat melihat log dengan membuka ringkasan aksekusi alur dan memilih pekerjaan dan tugas. Periksa log tugas jika ada tugas tertentu yang gagal.

Selain melihat log dalam ringkasan build alur, Anda dapat mengunduh log lengkap yang menyertakan informasi diagnostik tambahan, dan Anda dapat mengonfigurasi lebih banyak log verbose untuk membantu pemecahan masalah Anda.

Untuk instruksi detail cara mengonfigurasi dan menggunakan log, lihat Meninjau log untuk mendiagnosis masalah alur.

Aku butuh bantuan lagi. Aku menemukan bug. Aku punya saran. Kemana aku harus pergi?

Mendapatkan langganan, penagihan, dan dukungan teknis

Laporkan masalah atau kirimkan umpan balik di Komunitas Pengembang.

Kami menyambut saran Anda: