首頁 > 後端開發 > Golang > GitHub Actions 上的 Go 應用程式與 PostgreSQL 的無縫整合測試

GitHub Actions 上的 Go 應用程式與 PostgreSQL 的無縫整合測試

Linda Hamilton
發布: 2024-11-28 21:55:19
原創
601 人瀏覽過

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

介紹

整合測試對於確保您的 Go 應用程式與資料庫等外部相依性完美配合至關重要。在本部落格中,我們將探討如何使用 GitHub Actions 設定和執行 Go 應用程式的整合測試。我們將在 CI 管道中設定 PostgreSQL 資料庫,簡化測試流程,並確保您的程式碼庫在每次推送時都是可靠且可投入生產的。讓我們開始吧! .

我們在上一篇文章中建立了單元測試和整合! 。在本文中,我們希望對 github 儲存庫的所有提交運行這些測試。

Github 操作

它們是一個持續整合和持續交付 (CI/CD) 平台,可讓您自動化建置、測試和部署管道。
Github Actions 允許您在儲存庫中發生其他事件時運行工作流程

Github 工作流程

工作流程是一個可設定的自動化流程,將執行一個或多個作業。工作流程由簽入儲存庫的 YAML 檔案定義,並在儲存庫中的事件觸發時執行。工作流程在 .github/workfows 中定義。

  • 事件 是儲存庫中觸發工作流程運作的特定活動。在我們的例子中,這將推動我們的分支。
  • 作業 是在同一運算元上執行的工作流程中的一組步驟。
  • Runners 是一個在觸發工作流程時運行工作流程的伺服器。每個運行程序一次只能執行一項作業。

工作流程 YAML

  • 第一步是建立 .github/workflows 資料夾,我們的 yaml 檔案將位於其中。
  • 下一步是建立 yaml 文件,在本例中我們將其命名為 ci-test.yml。

yaml 描述

  • 第一部分是命名操作,在本例中為 ci-test

工作流程觸發器

  • 第二部分描述觸發器。觸發操作的事件。在此文件中,我們有兩個事件將觸發此作業的運行,針對主分支的推送拉取請求。這確保了用於生產的每個程式碼變更在合併之前都經過測試,從而保持了專案的完整性。

環境變數

Github 工作流程支援全域和特定於作業的環境變數。這些變數描述了我們稍後將在 yaml 檔案中使用的 postgres 憑證。

工作

在這裡,我們為將執行核心任務的作業分配了一個名稱,這些任務正在建構和測試我們的程式碼。
Runner - 描述工作流程將在 Ubuntu 虛擬機器上運作的位置。

服務

Github Actions 工作流程可讓您定義服務。在這種情況下,我們需要一個 postgres 資料庫來執行我們的測試。

  • PostgreSQL 容器是使用官方 PostgreSQL Docker 映像建立的。
  • 容器配置了我們先前宣告的環境變數

工作流程步驟

  • 第一步是檢查儲存庫程式碼

此行取得儲存庫的最新版本,提供對所有來源檔案的存取。

  • 第二步是在執行器中設定 golang。
  • 第三步是在我們的運行器上安裝 dbmate。 Dbmate 是一個管理應用程式遷移的遷移工具。
  • 第四步是構造db url
  • 第五是運行資料庫遷移來設定我們的關係,該關係將與日期一起播種
  • 倒數第二個操作是使用測試資料為資料庫播種。

seed.go 檔案以測試資料為資料集播種。設定真實的測試環境。若要進一步檢查此文件,請造訪此處

最後階段是使用 make 檔案執行我們的 go 測試

現在,每次我們發出拉取請求或將程式碼推送到主分支時,此工作流程都會執行

採用 Github Action 的一些優點。

如我們所見,github 操作可讓您執行以下操作

  1. 自動化測試 - 在每次程式碼變更時一致地執行測試。
  2. 擁有資料庫整合 - 提供真實的 postgres 環境用於測試、模擬生產條件
  3. 可重現的環境 - Github 操作使用容器化服務和預先定義步驟來確保所有運行的結果一致。
  4. 快速回饋循環 - 它們使開發人員能夠在出現問題時收到快速回饋,從而更快地解決問題。
  5. 簡化協作 - 他們確保所有貢獻者的更改在出現之前都得到驗證,從而保持程式碼品質和專案穩定性

結論

透過利用 GitHub Actions,此工作流程簡化了測試和資料庫設置,確保了穩健可靠的軟體開發。
存取 github 儲存庫以查看正在使用上述操作進行測試的程式碼。

以上是GitHub Actions 上的 Go 應用程式與 PostgreSQL 的無縫整合測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板