前言 在上一篇文章,我介紹了在 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。...
(本文首次發佈於 2023-01-01,於 2023-10-24 更新。)
根據 iThome 的報導,Google 釋出了一個新的免費開源軟體漏洞掃描工具 OSV-Scanner,可以幫助開發者自動掃描找出專案內的相依套件是否存有漏洞。看見這樣的好工具,我們第一時間當然要問一句,這玩意能夠放進我們的 CI Pipeline 嗎?是否能有助於我們及早發現程式碼中潛藏的資安問題呢?
因此本文,就讓我們試著在 GitLab CI Pipeline 中運用 OSV-Scanner 吧!
操作步驟 尋找可用的 Docker Image 老樣子,想要在 GitLab CI Pipeline 中試用一個新工具的第一步,當然是先找找看有沒有現成的 Docker image 可以使用。
在 2023/10/24 於 Docker Hub 上搜尋「osv-scanner」,目前都只能找到非 Google 官方建立的 Docker Image。
(截圖時間:2023/01/01)
不知為何這些 Docker Image 看起來都沒什麼人 Download 使用,稍微深入瀏覽後,可以發現只有 anmalkov/osv-scanner 的說明較完整,有興趣者可以嘗試看看。
以 anmalkov/osv-scanner 為例,我用它來嘗試掃描了手邊的一個專案,得到如下圖的結果,它依據 package-lock.json 的資訊,幫我找出許多的 Vulnerabilities,並且每一個 Vulnerability 都會提供一個 OSV URL,讓我可以了解更多的詳細資訊。 OSV URL 的網頁內容如下,會有完整的漏洞說明。 如果你想要自己 Build 一個 Image,則可以參考 GitHub Repo - osv-scanner ,在 Repo 中有提供 Dockerfile ,可以用來 Build image。...