Rumah > pembangunan bahagian belakang > Tutorial Python > Melaksanakan CI/CD untuk ReadmeGenie

Melaksanakan CI/CD untuk ReadmeGenie

Susan Sarandon
Lepaskan: 2024-11-22 05:28:12
asal
885 orang telah melayarinya

Implementing CI/CD for ReadmeGenie

Mengapa CI/CD?

Sebelum kita menyelami persediaan, mari kita kupas secara ringkas sebab CI/CD sangat kritikal:

  1. Ujian Automatik: Menjalankan ujian secara automatik memastikan kod stabil dengan setiap perubahan.
  2. Ketekalan: CI/CD menguatkuasakan piawaian (linting, pemformatan) merentas pangkalan kod.
  3. Kebolehpercayaan: Pemeriksaan dan ujian automatik meminimumkan ralat manusia dan meningkatkan kebolehpercayaan kod.
  4. Maklum Balas Pantas: Pembangun menerima maklum balas serta-merta tentang kualiti kod, membolehkan isu dikesan lebih awal.

Dalam ReadmeGenie, kami memanfaatkan Tindakan GitHub sebagai alat CI/CD kami. Ia disepadukan dengan lancar dengan repositori GitHub dan menawarkan fleksibiliti dan automasi melalui fail konfigurasi YAML.

Talian Paip CI/CD untuk ReadmeGenie

Saluran paip CI/CD kami termasuk langkah automatik berikut:

  1. Semakan Linting dan Pemformatan: Kami menjalankan Ruff dan Hitam untuk memastikan gaya dan konsistensi kod.
  2. Ujian Unit: Kami menggunakan unittest untuk mengesahkan bahawa perubahan kod tidak memecahkan kefungsian sedia ada.
  3. Analisis Liputan: Kami menggunakan Liputan.py untuk memastikan kod tersebut memenuhi ambang perlindungan kami sebelum komit dibenarkan.
  4. Cangkuk Pra-Komit: Kami menambah cangkuk untuk menguatkuasakan semakan kualiti tempatan sebelum menolak perubahan.

Gambaran Keseluruhan Aliran Kerja Tindakan GitHub

Aliran kerja CI ditakrifkan dalam .github/workflows/python-app.yml. Berikut ialah pecahan perkara yang dilakukan oleh setiap bahagian aliran kerja:

1. Mencetuskan Aliran Kerja

Aliran kerja berjalan pada setiap permintaan tolak dan tarik ke cawangan utama. Ini memastikan semua perubahan kod menjalani pengesahan sebelum digabungkan ke dalam pengeluaran.

name: Python application

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]
Salin selepas log masuk
Salin selepas log masuk

2. Menyediakan Persekitaran Python

Kami mengkonfigurasi Tindakan GitHub untuk menggunakan Python 3.12.x, memastikan konsistensi dengan persekitaran pembangunan tempatan kami. Langkah ini memasang versi Python khusus dan menyediakan persekitaran untuk pemasangan kebergantungan.

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python 3.12.x
        uses: actions/setup-python@v3
        with:
          python-version: "3.12.x"
Salin selepas log masuk
Salin selepas log masuk

3. Memasang Ketergantungan

Langkah seterusnya ialah memasang kebergantungan projek. Di sini, kami menaik taraf pip dan memasang fail requirements.txt, ia akan memasang kebergantungan tambahan yang dinyatakan di sana.

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install flake8 pytest
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
Salin selepas log masuk
Salin selepas log masuk

4. Menjalankan Pemeriksaan Kualiti Linting dan Kod

Linting adalah bahagian penting dalam aliran kerja kami, memastikan kod mematuhi piawaian kualiti yang ditetapkan. Kami menjalankan flake8 dengan pilihan untuk membenderakan ralat sintaks, nama tidak ditentukan dan isu kerumitan.

name: Python application

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]
Salin selepas log masuk
Salin selepas log masuk

5. Menjalankan Ujian dengan Analisis Liputan

Untuk ujian unit, kami menggunakan pytest untuk menjalankan semua kes ujian. Selain itu, kami menggunakan liputan untuk menjejak baris kod yang diuji, memastikan suite ujian kami memenuhi ambang liputan yang ditetapkan sebanyak 75%.

Arahan berikut menjalankan ujian dan menjana laporan liputan, menyerlahkan sebarang jurang dalam liputan ujian. Ini penting untuk jaminan kualiti, kerana kod yang belum diuji adalah sumber potensi pepijat masa hadapan.

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python 3.12.x
        uses: actions/setup-python@v3
        with:
          python-version: "3.12.x"
Salin selepas log masuk
Salin selepas log masuk

Semakan liputan ini memastikan standard kualiti kod yang tinggi dengan menguatkuasakan bahawa sekurang-kurangnya 75% pangkalan kod dilindungi oleh ujian. Jika perlindungan jatuh di bawah ambang ini, komitmen tidak akan dibenarkan.

Mengintegrasikan Cangkuk Pra-Komit

Selain CI/CD, kami menyediakan cangkuk prakomit untuk menguatkuasakan kualiti kod secara setempat sebelum sebarang perubahan ditolak ke repositori. Cangkuk ini:

  • Jalankan Ruff untuk linting dan Hitam untuk pemformatan.
  • Kuatkuasakan ambang perlindungan minimum dengan menjalankan ujian dengan liputan secara setempat.

Begini cara kami menambah semakan liputan sebagai cangkuk prakomit dalam .pre-commit-config.yaml:

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install flake8 pytest
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
Salin selepas log masuk
Salin selepas log masuk

Cabaran dan Pengajaran

Menyediakan CI/CD memerlukan pemahaman yang mendalam tentang cara alat yang berbeza (flake8, pytest, liputan) berinteraksi dalam Tindakan GitHub. Berikut ialah beberapa cabaran yang kami hadapi dan penyelesaian yang kami laksanakan:

Mengendalikan Konfigurasi Tempatan dan Jauh Berbeza

Kami menghadapi isu dengan konflik pembolehubah persekitaran, terutamanya dalam menguji penyepaduan API dan pengendalian konfigurasi. Menggunakan @patch.dict dan teknik mengejek lain dalam unittest membolehkan kami mensimulasikan persekitaran dengan berkesan.

Menguji Liputan dan Ambang

Cabaran terbesar ialah memastikan liputan ujian yang mencukupi. Menggunakan coverage.py dengan --fail-under=75 dalam kedua-dua Tindakan GitHub dan cangkuk prakomit membantu menguatkuasakan standard ini.

Penambahbaikan Masa Depan

Untuk menjadikan saluran paip CI/CD lebih mantap, kami merancang untuk:

  1. Tambah Peringkat Penerapan: Automatikkan penempatan pada persekitaran pementasan atau pengeluaran selepas ujian lulus.
  2. Automasikan Lencana Kualiti Kod: Tambahkan lencana dinamik untuk memaparkan liputan, status linting dan keputusan ujian dalam README.
  3. Perluas Keperluan Liputan: Tingkatkan ambang liputan sambil kami menambah baik ujian dan meliputi lebih banyak kes tepi.

Bawa pulang

Melalui projek ini, saya menyedari kepentingan mewujudkan ujian yang teguh dan amalan CI/CD sejak awal lagi. Jika saya mula semula, saya akan menumpukan pada menulis ujian komprehensif dari awal dan secara berperingkat mengembangkan dan menambah baiknya semasa projek berjalan. Pendekatan ini akan menghalang kehilangan cawangan atau kawasan yang belum diuji dan memastikan semua kod baharu disepadukan dengan lancar ke dalam pangkalan kod yang dilindungi dengan baik.

Atas ialah kandungan terperinci Melaksanakan CI/CD untuk ReadmeGenie. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan