Rumah pembangunan bahagian belakang Golang Ujian Penyepaduan Lancar untuk Aplikasi Go Anda pada Tindakan GitHub dengan PostgreSQL

Ujian Penyepaduan Lancar untuk Aplikasi Go Anda pada Tindakan GitHub dengan PostgreSQL

Nov 28, 2024 pm 09:55 PM

Seamless Integration Testing for Your Go Application on GitHub Actions with PostgreSQL

pengenalan

Ujian integrasi adalah penting untuk memastikan aplikasi Go anda berfungsi dengan sempurna dengan kebergantungan luaran seperti pangkalan data. Dalam blog ini, kami akan meneroka cara menyediakan dan menjalankan ujian integrasi untuk aplikasi Go menggunakan Tindakan GitHub. Kami akan mengkonfigurasi pangkalan data PostgreSQL dalam saluran paip CI, menyelaraskan proses ujian dan memastikan pangkalan kod anda boleh dipercayai dan sedia pengeluaran dengan setiap dorongan. Jom selami!.

Kami mencipta ujian unit dan penyepaduan dalam artikel sebelumnya di sini!. Dalam artikel ini kami ingin menjalankan ujian ini pada semua komit pada repositori github kami.

Tindakan Github

Ia adalah platform penyepaduan berterusan dan penghantaran berterusan (CI/CD) yang membolehkan anda mengautomasikan saluran paip binaan, ujian dan penggunaan anda.
Tindakan Github membolehkan anda menjalankan aliran kerja apabila peristiwa lain berlaku dalam repositori anda

Aliran Kerja Github

Aliran kerja ialah proses automatik yang boleh dikonfigurasikan yang akan menjalankan satu atau lebih kerja. Aliran kerja ditakrifkan oleh fail YAML yang didaftar masuk ke repositori anda dan akan dijalankan apabila dicetuskan oleh peristiwa dalam repositori anda. Aliran kerja ditakrifkan dalam .github/workfows.

  • Acara ialah aktiviti khusus dalam repositori yang mencetuskan larian aliran kerja. Dalam kes kami, ini akan menjadi dorongan kepada cawangan kami.
  • Pekerjaan ialah satu set langkah dalam aliran kerja yang dilaksanakan pada pelari yang sama.
  • Runners ialah pelayan yang menjalankan aliran kerja anda apabila ia dicetuskan. Setiap pelari boleh berlari satu kerja pada satu masa.

Aliran Kerja Yaml

  • Langkah pertama ialah mencipta folder .github/workflows di mana fail yaml kami akan ditempatkan.
  • Seterusnya adalah untuk mencipta fail yaml dalam kes ini kami akan menamakannya ci-test.yml.
name: ci-test

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: Password123
  POSTGRES_DB: crud_db

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_DB: ${{ env.POSTGRES_DB }}
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: "1.22"

      - name: Install dbmate for golang migrations
        run: |
          sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
          sudo chmod +x /usr/local/bin/dbmate
          which dbmate

      - name: Construct DB URL
        id: construct_url
        run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

      - run: env

      - name: Make Migrations
        run: make migrations URL=${{ env.DB_URL }}

      - name: Seed test DB
        run: go run db/seed.go

      - name: Test
        run: make test

Salin selepas log masuk
Salin selepas log masuk

Penerangan Yaml

  • Bahagian pertama ialah menamakan tindakan dalam kes ini ialah ci-test.

Pencetus Aliran Kerja

  • Bahagian kedua menerangkan cetus. Peristiwa yang mencetuskan tindakan. Dalam fail ini, kami mempunyai dua peristiwa yang akan mencetuskan perjalanan kerja ini, tolak dan permintaan tarik menyasarkan cawangan utama. Ini memastikan bahawa setiap perubahan kod yang dimaksudkan untuk pengeluaran diuji sebelum digabungkan, mengekalkan integriti projek.

Pembolehubah Persekitaran

Aliran kerja Github menyokong pembolehubah persekitaran global dan khusus pekerjaan. Pembolehubah ini menerangkan kelayakan postgres yang akan kami gunakan kemudian dalam fail yaml kami.

Kerja

name: ci-test

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: Password123
  POSTGRES_DB: crud_db

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_DB: ${{ env.POSTGRES_DB }}
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: "1.22"

      - name: Install dbmate for golang migrations
        run: |
          sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
          sudo chmod +x /usr/local/bin/dbmate
          which dbmate

      - name: Construct DB URL
        id: construct_url
        run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

      - run: env

      - name: Make Migrations
        run: make migrations URL=${{ env.DB_URL }}

      - name: Seed test DB
        run: go run db/seed.go

      - name: Test
        run: make test

Salin selepas log masuk
Salin selepas log masuk

Di sini kami telah memberikan nama kepada kerja yang akan melaksanakan tugas teras, yang membina dan menguji kod kami.
Runner - menerangkan di mana aliran kerja akan dijalankan iaitu mesin maya Ubuntu.

Perkhidmatan

Aliran kerja Github Actions membolehkan anda menentukan perkhidmatan. Dalam kes ini, kami memerlukan pangkalan data postgres untuk menjalankan ujian kami.

  • Bekas PostgreSQL dibuat menggunakan imej PostgreSQL Docker rasmi.
  • Bekas dikonfigurasikan dengan pembolehubah persekitaran yang kami nyatakan sebelum ini

Langkah Aliran Kerja

  • Langkah pertama ialah menyemak kod repositori
jobs:
  build:
    name: tests
    runs-on: ubuntu-latest
Salin selepas log masuk

Barisan ini mengambil versi terbaharu repositori, memberikan akses kepada semua fail sumber.

  • Langkah kedua ialah setup golang dalam runner.
- uses: actions/checkout@v4
Salin selepas log masuk
  • Langkah ketiga ialah memasang dbmate pada runner kami. Dbmate ialah alat migrasi yang akan mengurus migrasi aplikasi.
- name: Set up Go
  uses: actions/setup-go@v4
  with:
    go-version: "1.22"
Salin selepas log masuk
  • Keempat ialah membina url db
- name: Install dbmate for golang migrations
  run: |
    sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
    sudo chmod +x /usr/local/bin/dbmate
    which dbmate

Salin selepas log masuk
  • Kelima ialah penghijrahan runnig db untuk menyediakan hubungan kita yang akan membenamkan tarikh
- name: Construct DB URL
  id: construct_url
  run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

Salin selepas log masuk
  • Tindakan kedua terakhir adalah untuk menyemai pangkalan data dengan data ujian.
- name: Make Migrations
  run: make migrations URL=${{ env.DB_URL }}
Salin selepas log masuk

Fail seed.go menyemai data ase dengan data ujian. Menyediakan persekitaran ujian yang realistik. Untuk memeriksa fail ini dengan lebih lanjut, lawati di sini

Peringkat terakhir ialah melaksanakan ujian go kami menggunakan fail make

- name: Seed test DB
  run: go run db/seed.go
Salin selepas log masuk

Aliran kerja ini kini akan dijalankan setiap kali kami membuat permintaan tarik atau tolak kod ke cawangan utama kami

Beberapa Kelebihan Mengguna pakai Tindakan Github.

Seperti yang telah kita lihat tindakan github membolehkan anda melakukan

  1. Ujian Automatik - jalankan ujian secara konsisten pada setiap perubahan kod.
  2. Mempunyai Penyepaduan Pangkalan Data - menyediakan persekitaran postgres sebenar untuk ujian, mensimulasikan keadaan pengeluaran
  3. Persekitaran Boleh Dihasilkan - Tindakan Github menggunakan perkhidmatan kontena dan langkah yang dipratentukan untuk memastikan hasil yang konsisten merentas semua larian.
  4. Gelung Maklum Balas Pantas - Mereka membolehkan pembangun menerima maklum balas pantas jika sesuatu rosak, membolehkan penyelesaian isu yang lebih pantas.
  5. Kolaborasi Ringkas - Mereka memastikan semua perubahan penyumbang disahkan sebelum muncul, mengekalkan kualiti kod dan kestabilan projek

Kesimpulan

Dengan memanfaatkan Tindakan GitHub, aliran kerja ini memperkemas ujian dan persediaan pangkalan data, memastikan pembangunan perisian yang mantap dan boleh dipercayai.
Lawati repositori github untuk melihat kod yang sedang diuji dengan tindakan yang diterangkan di atas.

Atas ialah kandungan terperinci Ujian Penyepaduan Lancar untuk Aplikasi Go Anda pada Tindakan GitHub dengan PostgreSQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah kelemahan debian openssl Apakah kelemahan debian openssl Apr 02, 2025 am 07:30 AM

OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Apr 02, 2025 pm 03:54 PM

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...

Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Apr 02, 2025 am 09:12 AM

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apr 02, 2025 pm 05:09 PM

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Apr 02, 2025 am 07:36 AM

Artikel ini memperkenalkan cara mengkonfigurasi MongoDB pada sistem Debian untuk mencapai pengembangan automatik. Langkah -langkah utama termasuk menubuhkan set replika MongoDB dan pemantauan ruang cakera. 1. Pemasangan MongoDB Pertama, pastikan MongoDB dipasang pada sistem Debian. Pasang menggunakan arahan berikut: SudoaptDateSudoaptInstall-ImongoDB-Org 2. Mengkonfigurasi set replika replika MongoDB MongoDB Set memastikan ketersediaan dan kelebihan data yang tinggi, yang merupakan asas untuk mencapai pengembangan kapasiti automatik. Mula MongoDB Service: sudosystemctlstartmongodsudosys

See all articles