Akaun Awan Microsoft Azure: Buat simulasi automatik CI/CD sutera berdasarkan Azure DevOps GitHub Actions
Dalam perkembangan harian banyak pasukan R & D, anda sering dapat melihat pemandangan "monster jahitan" yang tidak masuk akal:
Pengurusan projek menggunakan Jira yang mahal, hosting kod diletakkan di GitLab yang dibina secara tempatan, pembinaan automatik (CI) menggunakan patch dan patch Jenkins yang sering digantung kerana limpahan memori, dan tinjauan dan dokumen projek terakhir dimasukkan ke dalam Microsoft's Teams Atau SharePoint. Sebaik sahaja versi baru dikeluarkan, pengurus produk mendesak di Jira untuk mengembangkan Merge Request dengan gemetar di GitLab. Operasi dan penyelenggaraan secara manual pergi ke Jenkins untuk mengklik "membina" sambil menyembah para dewa. Akhirnya, Bug dilepaskan. Semua orang berada di platform yang berbeza. Bergegas gila antara periuk dan keletihan.
Rangkaian alat "jenama Wanguo" ini bukan sahaja mempunyai kos penyelenggaraan yang menakutkan, tetapi juga "pulau maklumat" yang memisahkan pelbagai sistem, tetapi juga pembunuh pertama yang menyekat ketangkasan pasukan.
Sebenarnya, setelah Microsoft memperoleh GitHub dan menyusun semula Azure secara drastik, ia telah menyolder satu set gelung tertutup DevOps moden yang dominan di seluruh dunia. Dalam struktur teratas pengeluar utama, terdapat "Microsoft Family Bucket Combination Fist" yang dianggap sebagai siling kecekapan:
Gunakan Azure Boards untuk mendapatkan papan tanda projek tangkas, kunci kod di gudang GitHub, gunakan kekuatan pengkomputeran awan asli GitHub Actions untuk mengebom CI (integrasi berterusan), dan akhirnya menembak produk yang disusun ke dalam Azure App Service (penyebaran berterusan, CD).
Seluruh barisan pemasangan licin seperti sutera, dan rangkaian tulang belakang pertahanan tinggi yang dibina oleh Microsoft digunakan secara menyeluruh, sepenuhnya mengakhiri tarikan lintas platform. Hari ini kita menolak sebarang khotbah rasmi dan tidak membicarakan konsep yang membosankan. Mulakan secara langsung dari awal, dan bawa anda menggunakan seni bina tanpa pelayan untuk membina bangunan tinggi di tanah dalam 10 minit untuk membuat satu set barisan pemasangan automatik CI/CD peringkat kilang besar.
Tahap pertama: pembongkaran mendalam, "model hubungan ruang-waktu empat dimensi" baldi keluarga
Sebelum anda mengklik konsol, anda mesti membuat model dunia fizikal ini di bahagian bawah baldi keluarga. Ramai orang berpendapat bahawa lebih banyak alat akan menjadi tidak kemas. Sebenarnya, permainan catur Microsoft sangat indah, dan masing-masing menjalankan tugasnya:
Pusat arahan: Azure Boards (permintaan dan kemajuan terkunci): Ini adalah "otak" projek. Pengurus produk menulis Kisah Pengguna di sini, dan arkitek membongkar Task. Yang paling mengagumkan ialah setiap item kerja (Item Kerja) di sini mempunyai ID eksklusif (seperti #45).
Perpustakaan aset kod: GitHub Enterprise (dibawa oleh daging): Setelah mengembangkan dan menerima tugas #45, tulis kod secara tempatan. Apabila mereka menghantar kod git ke GitHub, tulis Fixes AzureBoards dalam mesej Commit.
#45, terowong ruang-waktu akan dibuka dengan serta-merta antara GitHub dan Azure Boards, kad di papan tanda secara automatik akan berkelip dari "dalam pembangunan" ke "selesai", dan sejarah perubahan kod juga akan dipasang secara automatik di bawah senarai permintaan untuk mencapai tahap piksel Penjejakan audit.
Pengebom senjata api berat: GitHub Actions (integrasi berterusan, CI): Selagi kod digabungkan ke cawangan utama, mesin maya (Runner) yang dihoskan sepenuhnya di latar belakang GitHub akan segera terbangun. Anda tidak perlu melengkapkan pelayan anda sendiri, ia secara automatik akan menarik persekitaran, menjalankan ujian unit, dan mengemas ke dalam pakej termampat binari.
Pengambil akhir: Perkhidmatan Aplikasi Azure (penyebaran berterusan, CD): Pakej yang disusun disuntik secara langsung ke dalam bekas web yang dihoskan oleh Azure melalui saluran tanpa kata laluan intranet Microsoft yang selamat, dan pengguna di seluruh dunia melihat ciri baru dalam beberapa saat.
Tahap kedua: latihan pertempuran sebenar satu-dua alam bersama, membuka terowong ruang-waktu antara Boards dan GitHub
Pastikan anda sudah mempunyai akaun GitHub dan akaun Azure.
1. Bina perintah tangkas anda
Log masuk ke portal Azure DevOps, buat organisasi baru, dan buat projek baru yang dipanggil projek-omega, proses memilih Scrum atau Agile.
Setelah memasuki projek, klik "Tetapan Projek" di sudut kiri bawah.
Cari "GitHub connections" di menu di sebelah kiri dan klik pada "Sambungkan akaun GitHub anda".
Setelah melengkapkan kebenaran, periksa dengan tepat gudang peribadi GitHub (seperti aplikasi omega-web) yang anda sediakan untuk eksperimen ini, dan klik Simpan.
2. Tulis kod dengan "kata laluan"
Sekarang, pergi ke Azure Boards
Papan (Kanban)
Buat tugas baru di sini, dengan anggapan bahawa ID yang diberikan kepadanya secara automatik oleh sistem adalah
5
。
Digunakan secara tempatan. NET 8 atau Java menulis beberapa baris kod web mudah. Semasa menghantar kod di baris arahan, dengan sengaja mengetuk kod isyarat berikut yang diatur oleh pengeluar utama:
Bash
Git add.
Mod git-m "feat: pengembangan antara muka log masuk teras selesai, menghubungkan Boards AB #5"
Git push origin utama
Keajaiban berlaku:
Pada masa ini, anda kembali ke halaman Azure Boards, muat semula, dan anda akan dapati ID tersebut
5
Untuk kad itu, kawasan Pembangunan dalaman secara automatik telah menarik penyerahan GitHub dengan jelas, dan bahkan baris mana yang diubah kodnya. Kedua-dua dunia dibuka sepenuhnya!
Tahap ketiga: latihan pertempuran sebenar 2
-- Tulis saluran pemasangan tegar GitHub Actions, terus ke awan
Kod tersebut sudah ada di GitHub, dan sekarang kita harus menarik GitHub Actions dan membiarkannya secara automatik memotret produk siap di Azure App Service pada saat kod digabungkan.
Langkah 1: Pergi ke Azure untuk memohon "Pas Tanpa Rahsia" (Profil Awam)
Struktur kilang besar melarang keras menulis kata laluan akaun pentadbir awan dalam kod. Kita perlu menggunakan aliran kelayakan yang paling selamat.
Log masuk ke konsol Azure dan masukkan halaman butiran Perkhidmatan Aplikasi Azure (perkhidmatan aplikasi) yang anda bina terlebih dahulu.
Di bar menu tepat di atas, klik "Dapatkan profil penerbitan" (dapatkan profil penerbitan).
Pada masa ini, komputer anda akan memuat turun kunci penyulitan yang kompleks secara automatik. Fail teks Penerbitan Settings. Buka dan pilih untuk menyalinnya.
Kembali ke halaman gudang GitHub anda, klik "Settings"-> "Rahsia dan variables"-> "Tindakan".
Klik "Daftar semula Baru", namanya adalah AZURE_WEBAPP_PUBLISH_PROFILE, tampal kandungan yang baru disalin, dan klik Simpan. Pintu keselamatan terkunci!
Langkah 2: Tangan YAML, susun barisan pemasangan automatik sepenuhnya
Di direktori root projek tempatan, buat direktori tersembunyi baru
. Github/workflows/
, Bina yang dipanggil
Deploy. yml
Fail.
Dokumen ini adalah "cetak biru cap" kami. Kita mesti menggunakan tatabahasa deklaratif murni untuk membiarkan GitHub Actions secara automatik membawa kerja:
Nama: Garis pemasangan CI-CD automatik moden Omega
# Keadaan pencetus: Selagi cabang utama mempunyai kod untuk ditolak, semua meriam akan segera ditembak
On:
Push:
Branches: ["utama"]
Jobs:
Membina-dan-deploy:
Runs-on: ubuntu-latest # menggunakan pengebom Linux terbaru yang dihoskan secara rasmi oleh GitHub
Steps:
#1. Tarik kod ke persekitaran pembinaan mesin maya
-Name: Langkah 1: Tarik kod sumber terkini
Uses: ac
Tions/checkout @ v4
#2. Suntikan. Persekitaran operasi BERSIH (jika Java, ganti dengan tindakan/set-java)
-Name: Langkah 2: Memulakan teras Microsoft. Persekitaran BERSIH
Uses: actions/setup-dotnet @ v4
Dengan:
Dotnet-version: '8.0.x'
#3. Pemulihan pergantungan dan penyusunan teras
-Name: Langkah 3: Pemulihan Bergantung dan Penyusunan Industri
Lari: |
Dotnet restore
Dotnet publish -c Release -o. /Publish-folder
#4. Penghantaran lancar rentas sempadan ke Azure
-Name: Langkah 4: Penghantaran lancar rentas sempadan ke Azure App Service
Uses: azure/webapps-deploy @ v3
Dengan:
App-name: 'your-azure-webapp-name' # Gantikan dengan nama Aplikasi Web sebenar anda di Azure
Publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Dapatkan bukti keselamatan kami di GitHub
Pakej:. /Publish-folder
Simpan fail ini secara langsung
Git push
Pengeboman ke dalam GitHub.
Tahap keempat: momen menyaksikan keajaiban-tinggalkan papan kekunci dengan kedua tangan, diam-diam menghargai taufan automatik
Sebaik sahaja kod itu ditolak, segera buka gudang GitHub anda dan klik di bahagian atas
"Actions"
Halaman tab.
Anda akan melihat bulatan kemajuan emas berputar liar. Klik di dalamnya, anda dapat melihat bahawa empat langkah yang baru ditulis di YAML menyala cangkuk hijau seperti perbarisan tentera (
✓
)。
Bahagian binaan: Mesin maya Ubuntu yang dihoskan oleh GitHub menyelesaikan pengekstrakan dan penyusunan kod dalam masa kurang dari 15 saat.
Bahagian penyebaran: Pakej binari yang disusun, melalui saluran utama PUBLISH_PROFILE yang baru dikuburkan, melintasi pertahanan rangkaian awam, dan langsung disuntik ke dalam wadah awan Microsoft.
Biasanya keseluruhan proses hanya memerlukan
45 saat hingga 1 minit
。 Apabila item terakhir menyala hijau, anda membuka penyemak imbas dan memasukkan nama domain laman Azure anda. Fungsi perniagaan baru telah dipersembahkan dengan sempurna kepada dunia.
Mengimbas kembali papan tanda Azure Boards, kerana anda menguburkan kod rahsia di Commit, ID itu adalah
5
Tugas telah diarkibkan secara automatik ke lajur "On-line" dengan sangat elegan. Pasukan proses keseluruhan tidak mengadakan pertemuan penjajaran, dan tidak mengklik tetikus ke konsol. Kod murni dipicu, dan sutera sangat selesa.
Tahap kelima: sejarah mengelakkan darah dan air mata di bawah struktur baldi keluarga peringkat perusahaan
Penyelesaian baldi keluarga Microsoft ini sangat menyegarkan untuk digunakan, dan ia dilahirkan dengan silsilah pengeluar utama. Tetapi untuk bertahan dari medan perang komersial kolaborasi berbilang orang dan penyerahan frekuensi tinggi, sebagai ketua arkitek, anda mesti segera menyolder dua spesifikasi garis bawah berikut untuk pasukan:
1. Potong gaya asal "Branch Streaking" (Branch Protection)
Banyak pasukan pemula merasa terlalu senang ketika pertama kali menggunakan barisan pemasangan ini, jadi sama ada pemaju kanan atau pelatih yang baru masuk, mereka terus ke kawasan setempat setiap hari.
Utama
Pada cawangan
Push
Kod.
Bencana berlaku: Sekiranya suatu hari pekerja magang secara tidak sengaja menulis gelung tanpa henti, atau memaksa kod yang tidak berjalan, GitHub Actions akan sangat jujur dan kejam menyusun dan menerbitkan timbunan kod sampah ini secara automatik dalam masa 1 minit Persekitaran pengeluaran secara langsung menyebabkan kelumpuhan sistem dalam talian secara besar-besaran.
Operasi penghindaran lubang standard kilang besar: "Branch Protection Rules" mesti dihidupkan. Masukkan tetapan gudang GitHub dan kunci cawangan utama secara paksa. Perintah pentadbiran: Tidak ada yang dibenarkan untuk menolak cawangan utama secara langsung! Anda mesti terlebih dahulu membina cawangan berfungsi secara tempatan, dan menyerahkan Purl Request (PR) setelah menulis. Dan konfigurasikan di GitHub: Hanya apabila hasil integrasi berterusan GitHub Actions (menjalankan ujian unit) menyala lampu hijau, dan sekurang-kurangnya seorang arkitek kanan menandatanganinya dengan mata kasar, kod tersebut berhak bergabung ke cabang utama. Gunakan proses untuk menyekat kesalahan tahap rendah.
2. Berhati-hati dengan kelebihan kuasa pengkomputeran yang disebabkan oleh "pembinaan matriks"
GitHub Actions sangat kuat
Besar, ia menyokong a
Strategi: matrix
Teknologi hitam membolehkan anda menulis beberapa baris kod pada masa yang sama di Windows, Linux, dan macOS. BERSIH 6, 7, 8 versi yang berbeza
Lakukan ujian penyusunan 9 kombinasi secara serentak
。
Pendedahan orang dalam: Had kuasa pengkomputeran GitHub Actions yang disediakan oleh Microsoft untuk setiap akaun percuma adalah terhad (biasanya 2000 minit sebulan). Sekiranya anda memulakan pembinaan matriks secara membuta tuli dalam projek besar peringkat perusahaan, setiap kali seseorang menyebut PR, ia akan menghabiskan 9 kali masa mesin maya. Dalam beberapa hari, ia akan membakar kuota kuasa pengkomputeran percuma bulan itu, yang membawa kepada keseluruhan CI/Talian pemasangan CD mogok secara langsung.
Spesifikasi pengukuhan tegar: Pada cabang pengembangan harian, ujian asas hanya dijalankan di persekitaran ubuntu-latest yang paling murah dan terpantas; hanya apabila kod tersebut benar-benar perlu dikeluarkan oleh Tag atau dimasukkan ke dalam cabang pelepasan Semasa bersiap untuk pengeluaran, hanya mencetuskan penyusunan audit tahap tinggi matriks penuh.
Ringkasan
Dengan menggunakan tong keluarga Microsoft untuk membuat barisan pemasangan automatik CI/CD, inti pati industri sebenarnya dipermudah menjadi enam belas perkataan:
Kanban menunjukkan jalan, isyarat rahsia sesuai, penyusunan awan, dan pengawalan berdasarkan bukti.
Anda benar-benar mengucapkan selamat tinggal kepada keadaan operasi dan penyelenggaraan asal di mana alat pihak ketiga dijahit di mana-mana pada masa lalu, dan pemalam Jenkins bertentangan dengan keperluan dan kod. Semua infrastruktur dan peredaran yang rumit dihoskan oleh otak yang lancar di peringkat kilang besar. Duduk di depan komputer, fokus 100% pada menggilap kod perniagaan, dan selesai menulis satu
git push
, Selebihnya diserahkan dengan elegan ke saluran pemasangan awan yang berkelip dengan kelajuan cahaya.
