Rumah >pembangunan bahagian belakang >C++ >Penyepaduan Berterusan dengan Tindakan GitHub

Penyepaduan Berterusan dengan Tindakan GitHub

DDD
DDDasal
2024-11-22 07:15:16250semak imbas

Continuous Integration with GitHub Actions

pengenalan

Dalam Makmal 8 DPS909, saya meneroka kuasa Integrasi Berterusan (CI), khususnya melalui Tindakan GitHub. Makmal ini merupakan peluang yang baik untuk meningkatkan projek saya dengan mengautomasikan ujian, memastikan kawalan kualiti dan belajar untuk menyepadukan aliran kerja ke dalam amalan pembangunan dunia sebenar.

CI memastikan kod kekal berfungsi dan bebas pepijat dengan setiap perubahan. Ia menghalang pemecahan cawangan lalai dengan menjalankan ujian secara berterusan. Untuk makmal ini, saya bukan sahaja menyepadukan CI ke dalam projek saya sendiri tetapi juga menyumbang ujian kepada projek rakan kongsi saya. Catatan blog ini menggambarkan perjalanan saya melalui tugasan ini.


Menyediakan Tindakan GitHub untuk Projek Saya

Untuk menyediakan CI dalam projek saya, saya mencipta GitHub Actions Workflow. Aliran kerja ini dicetuskan pada bila-bila masa:

  • Tekanan dibuat ke cawangan utama.
  • Permintaan tarik dibuat menyasarkan cawangan utama.

Konfigurasi Aliran Kerja YAML

Di bawah ialah fail YAML yang saya gunakan untuk aliran kerja Tindakan GitHub saya:

name: CI Workflow

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build-and-test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up C++
        uses: actions/setup-cpp@v1
        with:
          compiler: gcc

      - name: Build the project
        run: |
          mkdir build
          cd build
          cmake ..
          make

      - name: Run Tests
        run: |
          cd build
          ctest

Aliran kerja ini menyemak repositori saya, membina projek menggunakan CMake dan menjalankan ujian yang saya tulis dalam Lab 7.


Menguji CI dengan Permintaan Tarik

Untuk memastikan aliran kerja berfungsi seperti yang diharapkan, saya:

  1. Mencipta cawangan baharu, tambah-lebih-ujian.
  2. Menambahkan ujian baharu untuk fungsi berbeza dalam projek saya.
  3. Menolak cawangan ke repositori saya dan membuka permintaan tarik yang menyasarkan cawangan utama.

Aliran kerja CI berjalan seperti yang dijangkakan:

  • Pada mulanya, saya melanggar salah satu ujian dengan sengaja untuk melihat kegagalan. Log jelas menunjukkan isu itu, yang menjadikan penyahpepijatan menjadi mudah.
  • Selepas membetulkan ujian, CI lulus, mengesahkan kejayaan aliran kerja.

Menggabungkan permintaan tarik ini ke dalam cawangan utama memberi saya keyakinan bahawa projek saya dilindungi daripada pepijat yang tidak disengajakan.


Menyumbang Ujian kepada Projek Rakan Kongsi

Di bahagian kedua makmal, saya bekerjasama dengan rakan sekelas saya, Inder Parmar, dan menyumbangkan ujian kepada repositori mereka, Tailor4Job.

Permintaan Tarik Saya: #11

  • Tugas: Saya menambahkan kes ujian untuk fungsi jobFilter mereka untuk memastikan ia mengendalikan kes tepi dengan betul.
  • Cabaran: Repositori mereka menggunakan rangka kerja dan persediaan yang berbeza daripada saya. Memahami alatan ujian dan struktur projek mereka mengambil sedikit masa.
  • Hasil: Permintaan tarik saya berjaya melepasi aliran kerja CI mereka. Pengalaman ini mengajar saya kepentingan menulis ujian yang selaras dengan struktur dan garis panduan sedia ada projek.

Refleksi Integrasi Berterusan

Menyediakan CI merupakan pengubah permainan untuk aliran kerja pembangunan saya. Berikut ialah beberapa perkara penting:

  • Pencegahan Pepijat Proaktif: CI memastikan pepijat ditangkap lebih awal, mengurangkan risiko memecahkan cawangan lalai.
  • Kemudahan Kerjasama: Ujian automatik memberi keyakinan apabila menggabungkan kod daripada berbilang pembangun.
  • Penyahpepijatan Diperbaiki: Log CI menyediakan cerapan terperinci tentang kegagalan ujian, menjadikan penyahpepijatan lebih pantas dan lebih cekap.

Berkolaborasi pada repo rakan kongsi merupakan pengalaman yang memperkaya, kerana ia memberi saya pendedahan kepada pangkalan kod, persekitaran ujian dan aliran kerja yang berbeza.


Cabaran Pilihan

Walaupun saya tidak melaksanakan sepenuhnya cabaran pilihan, saya meneroka:

  1. Menambah Linter: Mengautomasikan linting sebagai sebahagian daripada CI membantu menangkap isu gaya dan sintaks lebih awal.
  2. Bekas Pembangunan: Saya bereksperimen dengan menyediakan persekitaran pembangunan yang boleh dihasilkan semula menggunakan Docker dan Codespaces.

Langkah-langkah ini boleh meningkatkan lagi kualiti projek dan kemudahan sedia untuk penyumbang baharu.


Kesimpulan

Makmal 8 mengajar saya kepentingan menyepadukan aliran kerja CI ke dalam projek pembangunan. CI memastikan kawalan kualiti yang konsisten dan memupuk kerjasama, menjadikannya alat yang tidak ternilai dalam pembangunan perisian moden.

Anda boleh melihat kejayaan CI projek saya dan permintaan tarik untuk projek rakan kongsi saya di bawah:

  • Larian Aliran Kerja CI: Tindakan GitHub
  • PR Repo Rakan Kongsi: Permintaan Tarik #11

Makmal ini benar-benar meningkatkan pemahaman saya tentang automasi, ujian dan kerjasama dalam pembangunan sumber terbuka.

Atas ialah kandungan terperinci Penyepaduan Berterusan dengan Tindakan GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn