


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!

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

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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.

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 ...

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, ...

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? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

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

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. � ...

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
