搜尋
首頁後端開發GolangGitHub Actions 上的 Go 應用程式與 PostgreSQL 的無縫整合測試

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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用'字符串”軟件包逐步操縱字符串如何使用'字符串”軟件包逐步操縱字符串May 13, 2025 am 12:12 AM

Go的strings包提供了多種字符串操作功能。 1)使用strings.Contains檢查子字符串。 2)用strings.Split將字符串分割成子字符串切片。 3)通過strings.Join合併字符串。 4)用strings.TrimSpace或strings.Trim去除字符串首尾的空白或指定字符。 5)用strings.ReplaceAll替換所有指定子字符串。 6)使用strings.HasPrefix或strings.HasSuffix檢查字符串的前綴或後綴。

Go Strings軟件包:如何改進我的代碼?Go Strings軟件包:如何改進我的代碼?May 13, 2025 am 12:10 AM

使用Go語言的strings包可以提升代碼質量。 1)使用strings.Join()優雅地連接字符串數組,避免性能開銷。 2)結合strings.Split()和strings.Contains()處理文本,注意大小寫敏感問題。 3)避免濫用strings.Replace(),考慮使用正則表達式進行大量替換。 4)使用strings.Builder提高頻繁拼接字符串的性能。

GO BYTES軟件包中最有用的功能是什麼?GO BYTES軟件包中最有用的功能是什麼?May 13, 2025 am 12:09 AM

Go的bytes包提供了多種實用的函數來處理字節切片。 1.bytes.Contains用於檢查字節切片是否包含特定序列。 2.bytes.Split用於將字節切片分割成smallerpieces。 3.bytes.Join用於將多個字節切片連接成一個。 4.bytes.TrimSpace用於去除字節切片的前後空白。 5.bytes.Equal用於比較兩個字節切片是否相等。 6.bytes.Index用於查找子切片在largerslice中的起始索引。

使用GO的'編碼/二進制”軟件包掌握二進制數據處理:綜合指南使用GO的'編碼/二進制”軟件包掌握二進制數據處理:綜合指南May 13, 2025 am 12:07 AM

theEncoding/binarypackageingoisesenebecapeitProvidesAstandArdArdArdArdArdArdArdArdAndWriteBinaryData,確保Cross-cross-platformCompatibilitiational and handhandlingdifferentendenness.itoffersfunctionslikeread,寫下,寫,dearte,readuvarint,andwriteuvarint,andWriteuvarIntforPreciseControloverBinary

轉到'字節”軟件包快速參考轉到'字節”軟件包快速參考May 13, 2025 am 12:03 AM

回顧bytespackageingoiscialforhandlingbytesliceSandBuffers,offeringToolsforeffitedMemoryManagement和datamanipulation.1)itprovidesfunctionalitiesLikeCreatingBuffers,比較,搜索/更換/reportacingwithinslices.2)forlargedatAsetSets.n

掌握GO弦:深入研究'字符串”包裝掌握GO弦:深入研究'字符串”包裝May 12, 2025 am 12:05 AM

你應該關心Go語言中的"strings"包,因為它提供了處理文本數據的工具,從基本的字符串拼接到高級的正則表達式匹配。 1)"strings"包提供了高效的字符串操作,如Join函數用於拼接字符串,避免性能問題。 2)它包含高級功能,如ContainsAny函數,用於檢查字符串是否包含特定字符集。 3)Replace函數用於替換字符串中的子串,需注意替換順序和大小寫敏感性。 4)Split函數可以根據分隔符拆分字符串,常用於正則表達式處理。 5)使用時需考慮性能,如

GO中的'編碼/二進制”軟件包:您的二進制操作首選GO中的'編碼/二進制”軟件包:您的二進制操作首選May 12, 2025 am 12:03 AM

“編碼/二進制”軟件包interingoisentialForHandlingBinaryData,oferingToolSforreDingingAndWritingBinaryDataEfficely.1)Itsupportsbothlittle-endianandBig-endianBig-endianbyteorders,CompialforOss-System-System-System-compatibility.2)

Go Byte Slice操縱教程:掌握'字節”軟件包Go Byte Slice操縱教程:掌握'字節”軟件包May 12, 2025 am 12:02 AM

掌握Go語言中的bytes包有助於提高代碼的效率和優雅性。 1)bytes包對於解析二進制數據、處理網絡協議和內存管理至關重要。 2)使用bytes.Buffer可以逐步構建字節切片。 3)bytes包提供了搜索、替換和分割字節切片的功能。 4)bytes.Reader類型適用於從字節切片讀取數據,特別是在I/O操作中。 5)bytes包與Go的垃圾回收器協同工作,提高了大數據處理的效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用