


Ujian Penyepaduan Lancar untuk Aplikasi Go Anda pada Tindakan GitHub dengan 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
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
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
Barisan ini mengambil versi terbaharu repositori, memberikan akses kepada semua fail sumber.
- Langkah kedua ialah setup golang dalam runner.
- uses: actions/checkout@v4
- 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"
- 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
- 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
- Tindakan kedua terakhir adalah untuk menyemai pangkalan data dengan data ujian.
- name: Make Migrations run: make migrations URL=${{ env.DB_URL }}
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
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
- Ujian Automatik - jalankan ujian secara konsisten pada setiap perubahan kod.
- Mempunyai Penyepaduan Pangkalan Data - menyediakan persekitaran postgres sebenar untuk ujian, mensimulasikan keadaan pengeluaran
- Persekitaran Boleh Dihasilkan - Tindakan Github menggunakan perkhidmatan kontena dan langkah yang dipratentukan untuk memastikan hasil yang konsisten merentas semua larian.
- Gelung Maklum Balas Pantas - Mereka membolehkan pembangun menerima maklum balas pantas jika sesuatu rosak, membolehkan penyelesaian isu yang lebih pantas.
- 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!

Golangisidealforperformance-CriticalApplicationsandCurrentProgramming, pemprosesDataSincience.2) forhigh-thoRencurrencyFiSurs.2 fordata -dataSdataS.2

Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran: 1.Goroutine adalah benang ringan, bermula dengan kata kunci Go; 2. Channel digunakan untuk komunikasi yang selamat antara goroutin untuk mengelakkan keadaan kaum; 3. Contoh penggunaan menunjukkan penggunaan asas dan lanjutan; 4. Kesilapan umum termasuk kebuntuan dan persaingan data, yang dapat dikesan oleh Gorun-Race; 5. Pengoptimuman prestasi mencadangkan mengurangkan penggunaan saluran, dengan munasabah menetapkan bilangan goroutine, dan menggunakan sync.pool untuk menguruskan memori.

Golang lebih sesuai untuk pengaturcaraan sistem dan aplikasi konvensional yang tinggi, manakala Python lebih sesuai untuk sains data dan perkembangan pesat. 1) Golang dibangunkan oleh Google, menaip secara statik, menekankan kesederhanaan dan kecekapan, dan sesuai untuk senario konvensional yang tinggi. 2) Python dicipta oleh Guidovan Rossum, sintaks yang dinamik, sintaks ringkas, aplikasi yang luas, sesuai untuk pemula dan pemprosesan data.

Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

GO Language mempunyai kelebihan yang unik dalam pengaturcaraan serentak, prestasi, lengkung pembelajaran, dan lain -lain: 1 Pengaturcaraan serentak direalisasikan melalui goroutine dan saluran, yang ringan dan cekap. 2. Kelajuan penyusunan adalah pantas dan prestasi operasi hampir dengan bahasa C. 3. Tatabahasa adalah ringkas, lengkung pembelajaran lancar, dan ekosistemnya kaya.

Perbezaan utama antara Golang dan Python adalah model konvensional, sistem jenis, prestasi dan kelajuan pelaksanaan. 1. Golang menggunakan model CSP, yang sesuai untuk tugas serentak yang tinggi; Python bergantung pada multi-threading dan gil, yang sesuai untuk tugas I/O-intensif. 2. Golang adalah jenis statik, dan Python adalah jenis dinamik. 3. Golang mengumpulkan kelajuan pelaksanaan bahasa adalah cepat, dan pembangunan bahasa yang ditafsirkan Python adalah pantas.

Golang biasanya lebih perlahan daripada C, tetapi Golang mempunyai lebih banyak kelebihan dalam pengaturcaraan serentak dan kecekapan pembangunan: 1) Koleksi sampah Golang dan model konkurensi menjadikannya berfungsi dengan baik dalam senario konvensyen yang tinggi; 2) C memperoleh prestasi yang lebih tinggi melalui pengurusan memori manual dan pengoptimuman perkakasan, tetapi mempunyai kerumitan pembangunan yang lebih tinggi.

Golang digunakan secara meluas dalam pengkomputeran awan dan devOps, dan kelebihannya terletak pada kesederhanaan, kecekapan dan keupayaan pengaturcaraan serentak. 1) Dalam pengkomputeran awan, Golang dengan cekap mengendalikan permintaan serentak melalui mekanisme goroutine dan saluran. 2) Di DevOps, kompilasi cepat Golang dan ciri-ciri silang platform menjadikannya pilihan pertama untuk alat automasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver Mac版
Alat pembangunan web visual

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa