在多人協作的軟體開發流程中,運用 Git 及 Branch 已經是一件再平常不過的事情了,想必大家多少都有經歷過多人開發的工作情境,在這樣的情境中,多位開發工程師會各自在不同的 Branch 開發功能,最後透過 Merge Request(MR)將程式碼進行合併。
在這樣的情境中,MR 肩負了重要的任務,它會是一個重要的資訊彙整、進度同步、討論、稽核⋯⋯的關鍵點。
既然 MR 如此重要,同時它又是團隊協作及軟體開發流程中經常發生的一件事,可以的話,我們應該要依據團隊實務上的需要,讓使用者可以更方便的在 MR 頁面彙整並瀏覽各種必要的資訊。
GitLab 原廠當然有注意到 MR 的重要性,因此在 GitLab 免費版中,MR 頁面已經有整合了多項必要的基本資訊。(當然付費版比起免費版擁有更多的整合。)
首先在 GitLab 的 MR 頁面,可以看到 Overview、Commits、Pipelines 與 Changes 四個分頁。後三者比較單純,分別用來讓使用者快速一覽當前的 MR 包含了哪些 Commits、觸發了哪些 Pipelines、以及實際上有哪些檔案被異動了。
在 Overview 的分頁中,則是資訊大彙整,包含了這項 MR 的基本資訊、最新一條 CI Pipeline 的執行狀態、MR 是否有通過 Code Reviewer 的 Approval、以及團隊夥伴是否有對此 MR 留下各種 Comments。
如上圖所示,在 MR 的 Overview 頁面上,有整合了最新一條 CI Pipeline 的執行狀態,但你只能知道 Pipeline 最終是成功還是失敗,如果你想要知道 CI Pipeline 內產生的更多資訊(例如:CI Job 產出的 Reports 內容),一般來說你只有兩個選擇:
付錢升級,啟用付費功能(如果有你需要的功能) 點擊連結,前往 CI Pipeline 查看對應的 CI Job Log 及直接瀏覽 Job Artifacts 的檔案 如果上面兩種方法你都不滿意,那也許你可以考慮一下本文將要介紹的第三種方法!即是運用 GitLab API,讓 CI Pipeline 自動將 CI Job 執行結果發佈到 MR 的 Comments 中,藉此實現在同一個 MR 頁面即可看到更多 CI Job 產生的重要資訊。...
前言 在上一篇文章,我介紹了在 GitLab CI Pipeline 執行 Unit test,本文繼續延續上篇文章的內容,這次我們要進一步的善用 GitLab CI 的 artifacts:reports:junit 功能。
如同我在上一篇文章說明的,GitLab CI 能夠解讀 JUnit XML 格式的 Report,將內容直接整合在 CI Pipeline 的 UI 上。既然如此,是不是我可以不限於 Unit test 的 report,而是將任何存成 JUnit XML 格式的內容都丟給 GitLab CI 呢?就讓我們來實驗看看吧!
操作步驟 實驗一:GitLab CI 是否接受,非 Unit test tool 產出的 JUnit XML 第一個實驗,讓我們找一個不是 Unit test,卻又能產出 JUnit XML 格式的工具來實驗,看看 GitLab CI 是否接受該工具產出的 XML。
這裡我挑中的是 Python 圈的一個新工具 ruff。
自從 Rust 這個程式語言開始大紅大紫之後,大家似乎都看上 Rust 在 Performance 所帶來的優異表現,於是各種工具都紛紛開始出現有人用 Rust 重新撰寫,而 ruff 就是其中一個例子,它就是用 Rust 所開發給 Python 使用的 Linter。...
文章更新紀錄:
2023.11.11 發佈 2023.11.12 更新內容 前言 在介紹 CI 持續整合的觀念時,我經常會分享一句話「沒有自動化測試,不要說你是在做 CI」。在 CI Pipeline 中,我們會設置各種自動化測試的 CI Job,讓 CI Pipeline 不只是實踐自動化,而是能成為一位守護「最低限度品質」的守門員。
既然自動化測試是 CI Pipeline 的重要關鍵,理所當然 CI 工具與測試工具兩者就會有各種互相合作與整合的狀況出現啦!
在這篇文章,我們就從大家最常聽見的測試 Unit test 為主題,介紹如何在 GitLab CI Pipeline 中執行自動化單元測試。
操作步驟 1. 準備你要測試的程式碼與 Unit test 想要執行 Unit test,首先當然你需要一份程式碼,然後為你的程式碼撰寫對應的 Unit test 啦!
但本文重點不是程式開發與怎麼寫測試,所以這部分就請容我跳過,就讓我直接在 GitHub 上隨意搜尋,挑選兩種不同程式語言的 Unit test example 作為範例。
首先是 Python,可以找到這個範例 ptracesecurity/pytest-example
接著是 PHP,可以找到這個範例 php-actions/example-phpunit
2. 規劃你的 CI Job 與執行環境 因為本文我們只針對 Unit test 這件事,因此就先省略不談整條 CI Pipeline 的規劃,直接切入單一 CI Job 的規劃。...
前言 前幾天在 GitLab 社群中看見有人針對在 Windows WSL 上架設 GitLab 提出了一些疑問,覺得這是一個可以動手嘗試的題目,因此也抽了一個空檔快速的實驗了一次,下面就紀錄我這次實驗的過程與操作步驟。
操作步驟 1. 安裝 WSL WSL 目前可以直接在 Microsoft Store 中安裝,如下圖那個看起來有點喜感的企鵝,就是我們要安裝的 WSL。 2. 確認 WSL 版本 WSL 安裝完畢後,接著我們要進入 PowerShell,在 PowerShell 中輸入 wsl -l -v 來確認一下 WSL 的版本,以及目前是否已經有安裝了 Linux 環境。
如果要進入 PowerShell,可以在 Windows 的搜尋列中輸入 PowerShell 來啟動 PowerShell。
啟動 PowerShell 後,畫面上會出現一個類似下圖的「命令提示字元」視窗,但不同的地方是在 Command Line 的最前面會有 PS。
如上圖,輸入 wsl -l -v 即可查看 WSL 的版本與目前是否已經安裝了 Linux 環境;如圖片所示,在我的 WSL 中尚未安裝任何 Linux 環境。
3. 在 WSL 中安裝 Ubuntu 首先,我們要確認 WSL 可以安裝哪些 Linux 環境,在 PowerShell 中輸入指令 wsl --list --online。...
前言 延續 DevOps,DevSecOps 一詞在 IT 圈內也已經不是一個新詞,市面上有非常多的廠商都在銷售號稱與 DevSecOps 有關的產品,亦有不少來自資安圈的講師分享過 DevSecOps 的主題。就如 DevOps 一樣,DevSecOps 同樣也具備著「十個講師會有十一種 DevSecOps 的內容」的現象,但無論如何 DevSecOps 絕對是 DevOps 的其中一位後繼者,是當前企業多少會開始了解與碰觸的一項熱門議題。
在今年 2023 的 iThome Cloud Summit,我邀請了 GitLab 原廠的 Staff Solutions Architect - Toshitaka Ito,以及另一位 GitLab Hero - Mouson (墨嗓) ,一起針對 DevSecOps 這個主題,規劃了一場「輕輕鬆鬆體驗 DevSecOps」的 Hands-on Lab。
議程簡介 這次投稿的是 Hands-on Lab,以下是本次提供給主辦單位的議程簡介資訊:
延續 DevOps 風潮,其實 DevSecOps 一詞自 2012 年被人提出後,至今也超過 10 年了。DevSecOps 作為一個根源自 DevOps 而來的新詞,我們會發現它跟 DevOps 一樣有著「似乎沒有標準定義」、「不同企業的實踐方式皆不相同」的現象。
課程目標 • 認識 DevSecOps • 體驗來自 GitLab 的 DevSecOps 流程 • 實際體驗如何修復程式碼中含有的漏洞...
2023 年,ChatGPT 與 OpenAI 議題大熱門,全球都在探討可以將它們運用在哪些工作領域中,當然軟體開發工程師也不例外,舉凡寫程式、程式碼重構、產生 Commit messages、code review、pair programming、寫測試⋯⋯,幾乎每一個動作都有人在嘗試結合這波「AI」熱潮,希望讓這些任務能做得又快又好。
最近剛好看見台灣知名的講師與開源專案貢獻者 AppleBoy 也投身在此議題,開發了名為 CodeGPT 的工具,不僅能用它來自動生成 Commit 總結,甚至能做出 Code review 提供一些程式碼的改善建議。
按著 AppleBoy 的 CodeGPT 工具說明,我第一時間的想法即是,這樣的一個工具是不是適合放進 CI Pipeline 中呢?如果能讓隨著 Merge request (或 Pull request) 而執行的 CI Pipeline 能自動產生一份由 GPT 提供的 Code review 程式碼改善建議,這樣我們就可以自動額外獲得一份來自「非真人觀點」的 Code review 建議;即便這些「非真人的觀點」不一定正確或準確(因為 GPT 已被證實有時會一本正經的說瞎話),但它的建議依然有機會幫助真人跳脫自己固有的觀點,以不同的角度思考同一個問題。
以下我們就搶先試驗,試著將 CodeGPT 放進 GitLab Merge request CI Pipeline 吧!
(本文初版撰寫於 2023.04.02,於 2023.04.04 更新。本文使用的 CodeGPT 版本為 v0.1.5,當你閱讀本文時,很可能 CodeGPT 已經改版與本文下述的操作步驟不同,還請自行關注各工具的最新異動資訊。)
操作步驟 下面我們就用一個最輕鬆的方式,來做出一個 Merge request 之 CI Pipeline,來實驗 CodeGPT。既然是最輕鬆的方式,所以我就直接在 gitlab....
這是一篇留在草稿區很久的文章草稿,本來應該在 2022 年 7 月把它寫出來,但一拖稿,就無限延後了,趁著春節休假期間,終於有時間將它整理為一篇「堪用」的文章。
前言 感謝 iThome 的邀請,2022 年能有機會再次擔任 iThome Cloud Summit 的講師,負責一場分享一場 Hands-on Lab。
由於 2021 ~ 2022 年,個人並沒有玩太多新鮮的雲端新工具,因此最後還是決定以 GitOps 為題來準備這場 Hands-on Lab。但畢竟我在 2020 年就已經分享過一次 GitOps,總不能直接拿老東西出來分享,因此這次特別針對內容做了調整,試著將 Kubernetes(K8s)放進 Lab 的內容中。
在 2020 年時分享的 Hands-on Lab 是以 GitOps with GitLab 為題,主要是以 GitLab 的 CI/CD Pipeline,搭配 GitLab 當時仍在 beta 階段的 Terraform 相關功能,讓學員運用 GitLab Runner 透過 CI/CD Pipeline 可以彼此 Tirgger 的方式來實現 GitOps 的概念;當時還跟 AWS 合作索取了一些試用額度,讓 Lab 學員可以用 GitOps 的方式,在 AWS 建立 Ec2 並部署 Application。...