Membangun repositori Bitbucket lokal

Azure DevOps

Catatan

Untuk mengintegrasikan Bitbucket Cloud dengan Azure Pipelines, lihat Bitbucket Cloud.

Anda dapat mengintegrasikan server Bitbucket lokal atau server Git lain dengan Azure Pipelines. Server lokal Anda mungkin terekspos ke Internet atau mungkin tidak.

Jika server lokal Anda dapat dijangkau dari server yang menjalankan layanan Azure Pipelines, maka:

  • Anda dapat menyiapkan build klasik dan mengonfigurasi pemicu CI

Jika server lokal Anda tidak dapat dijangkau dari server yang menjalankan layanan Azure Pipelines, maka:

  • Anda dapat menyiapkan alur build klasik dan memulai build manual
  • Anda tidak dapat mengonfigurasi pemicu CI

Catatan

Alur YAML tidak berfungsi dengan repositori Bitbucket lokal.

Catatan

Pemicu PR tidak tersedia dengan repositori Bitbucket lokal.

Jika server lokal Anda dapat dijangkau dari agen yang dihosting, maka Anda dapat menggunakan agen yang dihosting untuk menjalankan build manual, terjadwal, atau CI. Jika tidak, Anda harus menyiapkan agen yang dihost sendiri yang dapat mengakses server lokal Anda dan mengambil kode.

Dapat dijangkau dari Azure Pipelines

Jika server Bitbucket lokal Anda dapat dijangkau dari layanan Azure Pipelines, buat koneksi layanan Git Lainnya dan gunakan untuk membuat alur. Centang opsi untuk Mencoba mengakses server Git ini dari Azure Pipelines.

Pemicu CI bekerja melalui polling dan bukan melalui webhook. Dengan kata lain, Azure Pipelines secara berkala memeriksa server Bitbucket jika ada pembaruan kode. Jika ada, maka Azure Pipelines memulai eksekusi baru.

Tidak dapat dijangkau dari Azure Pipelines

Jika server Bitbucket tidak dapat dijangkau dari Azure Pipelines, Anda memiliki dua opsi:

  • Bekerja sama dengan departemen TI Anda untuk membuka jalur jaringan antara Azure Pipelines dan server Git lokal. Misalnya, Anda dapat menambahkan pengecualian ke aturan firewall Anda untuk memungkinkan lalu lintas dari Azure Pipelines mengalir. Lihat bagian di IP Azure DevOps untuk melihat alamat IP mana yang perlu Anda izinkan. Selain itu, Anda harus memiliki entri DNS publik untuk server Bitbucket sehingga Azure Pipelines dapat menyelesaikan FQDN server Anda ke alamat IP.

  • Anda dapat menggunakan koneksi Git Lainnya tetapi memberi tahu Azure Pipelines untuk tidak mencoba mengakses server Git ini dari Azure Pipelines. Pemicu CI dan PR tidak tersedia dengan repositori Git Lainnya. Anda hanya dapat memulai eksekusi alur manual atau terjadwal.

Dapat dijangkau dari agen yang dihosting Microsoft

Keputusan lain yang mungkin harus Anda buat adalah apakah akan menggunakan agen yang dihosting Microsoft atau agen yang dihost sendiri untuk menjalankan alur Anda. Pilihan ini sering bergantung pada apakah agen yang dihosting Microsoft dapat menjangkau server Anda. Untuk memeriksa apakah mereka bisa, buat alur untuk menggunakan agen yang dihosting Microsoft dan pastikan untuk menambahkan langkah untuk memeriksa kode sumber dari server Anda. Jika ini lolos, maka Anda dapat terus menggunakan agen yang dihosting Microsoft.

Tidak dapat dijangkau dari agen yang dihosting Microsoft

Jika alur pengujian sederhana yang disebutkan di bagian di atas gagal dengan kesalahan 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, maka server Bitbucket tidak dapat dijangkau dari agen yang dihosting Microsoft. Ini lagi-lagi mungkin disebabkan oleh firewall yang memblokir lalu lintas dari server ini. Anda memiliki dua opsi dalam hal ini:

  • Bekerja sama dengan departemen IT Anda untuk membuka jalur jaringan antara agen yang dihosting Microsoft dan server Bitbucket. Lihat bagian tentang jaringan di agen yang dihosting Microsoft.

  • Beralih menggunakan agen yang dihost sendiri atau agen set skala. Agen ini dapat disiapkan dalam jaringan Anda dan karenanya akan memiliki akses ke server Bitbucket. Agen ini hanya memerlukan koneksi keluar ke Azure Pipelines. Tidak perlu membuka firewall untuk koneksi masuk. Pastikan bahwa nama server yang Anda tentukan saat membuat koneksi layanan dapat diselesaikan dari agen yang dihost sendiri.

Alamat IP Azure DevOps

Saat Anda menggunakan koneksi Git Lain untuk menyiapkan alur klasik, nonaktifkan komunikasi antara layanan Azure Pipelines dan server Bitbucket, dan gunakan agen yang dihost sendiri untuk membangun kode, Anda mendapatkan pengalaman yang terdegradasi:

  • Anda harus mengetikkan nama repositori secara manual selama pembuatan alur
  • Anda tidak dapat menggunakan pemicu CI karena Azure Pipelines tidak akan dapat melakukan polling untuk perubahan pada kode
  • Anda tidak dapat menggunakan pemicu terjadwal dengan opsi untuk membuat hanya ketika ada perubahan
  • Anda tidak dapat melihat informasi tentang penerapan terbaru di antarmuka pengguna

Jika Anda ingin meningkatkan pengalaman ini, penting bagi Anda untuk mengaktifkan komunikasi dari Azure Pipelines ke Bitbucket Server.

Untuk mengizinkan lalu lintas dari Azure DevOps mencapai Server Bitbucket Anda, tambahkan alamat IP atau tag layanan yang ditentukan dalam Koneksi masuk ke daftar izin firewall Anda. Jika Anda menggunakan ExpressRoute, pastikan juga menyertakan rentang IP ExpressRoute ke daftar izin firewall Anda.

Izinkan Azure Pipelines mencoba mengakses server Git di koneksi layanan Git Lainnya.

Eksekusi informasi

Eksekusi informasi memberi tahu Anda Azure DevOps gagal mengambil kode sumber alur YAML. Pengambilan kode sumber terjadi sebagai respons terhadap peristiwa eksternal, misalnya, penerapan yang didorong. Ini juga terjadi sebagai respons terhadap pemicu internal, misalnya, untuk memeriksa apakah ada perubahan kode dan memulai eksekusi terjadwal atau tidak. Pengambilan kode sumber dapat gagal karena beberapa alasan, dengan sering meminta pembatasan oleh penyedia repositori git. Keberadaan eksekusi informasi tidak selalu berarti Azure DevOps akan menjalankan alur.

Eksekusi informasi terlihat seperti pada cuplikan layar berikut.

Screenshot of an informational pipeline run.

Anda dapat mengenali eksekusi informasi oleh atribut berikut:

  • Status adalah Canceled
  • Durasi adalah < 1s
  • Nama eksekusi berisi salah satu teks berikut:
    • Could not retrieve file content for {file_path} from repository {repo_name} hosted on {host} using commit {commit_sha}.
    • Could not retrieve content for object {commit_sha} from repository {repo_name} hosted on {host}.
    • Could not retrieve the tree object {tree_sha} from the repository {repo_name} hosted on {host}.
    • Could not find {file_path} from repository {repo_name} hosted on {host} using version {commit_sha}. One of the directories in the path contains too many files or subdirectories.
  • Nama eksekusi umumnya berisi kesalahan BitBucket / GitHub yang menyebabkan beban alur YAML gagal
  • Tidak ada tahapan / pekerjaan / langkah-langkah

Pelajari selengkapnya tentang eksekusi informasi.

Batasan

Azure Pipelines memuat maksimum 2000 cabang dari repositori ke dalam daftar dropdown di Portal Azure Devops, misalnya ke cabang Default untuk pengaturan build manual dan terjadwal, atau saat memilih cabang saat menjalankan alur secara manual. Jika Anda tidak melihat cabang yang Anda inginkan dalam daftar, ketik nama cabang yang diinginkan secara manual.

FAQ

Masalah yang terkait dengan integrasi Bitbucket Server termasuk dalam kategori berikut:

  • Pemicu yang gagal: Alur saya tidak dipicu saat saya mendorong pembaruan ke repositori.
  • Gagal checkout: Alur saya sedang dipicu, tetapi gagal di langkah checkout.

Pemicu yang gagal

Saya mendorong perubahan ke server saya, tetapi alur tidak dipicu.

Ikuti masing-masing langkah ini untuk memecahkan masalah pemicu anda yang gagal:

  • Apakah server Bitbucket Anda dapat diakses dari Azure Pipelines? Azure Pipelines secara berkala melakukan polling server Bitbucket untuk perubahan. Jika server Bitbucket berada di belakang firewall, lalu lintas ini mungkin tidak mencapai server Anda. Untuk informasi selengkapnya, lihat Alamat IP Azure DevOps dan verifikasi bahwa Anda telah memberikan pengecualian untuk semua alamat IP yang diperlukan. Alamat IP ini mungkin telah berubah karena Anda awalnya telah menyiapkan aturan pengecualian. Anda hanya dapat memulai eksekusi manual jika Anda menggunakan koneksi Git eksternal dan jika server Anda tidak dapat diakses dari Azure Pipelines.

  • Apakah alur Anda dijeda atau dinonaktifkan? Buka editor untuk alur, lalu pilih Pengaturan untuk memeriksa. Jika alur Anda dijeda atau dinonaktifkan, pemicu tidak berfungsi.

  • Apakah Anda mengecualikan cabang atau jalur yang Anda dorong perubahannya? Uji dengan mendorong perubahan ke jalur yang disertakan dalam cabang yang disertakan. Perhatikan bahwa jalur dalam pemicu peka huruf besar/kecil. Pastikan Anda menggunakan kasus yang sama dengan folder asli saat menentukan jalur dalam pemicu.

Saya tidak mendorong pembaruan apa pun ke kode saya, namun alur masih dipicu.

  • Pemicu integrasi berkelanjutan untuk Bitbucket bekerja melalui polling. Setelah setiap interval polling, Azure Pipelines mencoba menghubungi server Bitbucket untuk memeriksa apakah ada pembaruan pada kode. Jika Azure Pipelines tidak dapat menjangkau server Bitbucket (mungkin karena masalah jaringan), maka kami tetap memulai eksekusi baru dengan asumsi bahwa mungkin ada perubahan kode. Saat Azure Pipelines tidak dapat mengambil kode alur YAML, azure Pipelines akan membuat eksekusi informasi.

Gagal checkout

Ketika saya mencoba memulai eksekusi baru secara manual, ada penundaan 4-8 menit sebelum dimulai.

  • Server Bitbucket Anda tidak dapat dijangkau dari Azure Pipelines. Pastikan Anda belum memilih opsi untuk mencoba mengakses server Git ini dari Azure Pipelines di koneksi layanan Bitbucket. Jika opsi tersebut dipilih, Azure Pipelines akan mencoba menghubungi ke server Anda dan karena server Anda tidak dapat dijangkau, akhirnya waktu habis dan tetap memulai eksekusi. Menghapus centang opsi tersebut akan mempercepat eksekusi manual Anda.

Langkah checkout gagal dengan kesalahan bahwa server tidak dapat diselesaikan.

Apakah Anda menggunakan agen yang dihosting Microsoft? Jika demikian, agen ini mungkin tidak dapat menjangkau server Bitbucket Anda. Lihat Tidak dapat dijangkau dari agen yang dihosting Microsoft untuk informasi selengkapnya.