在 GitLab CI 中使用 Google osv-scanner

(本文首次發佈於 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。...

January 1, 2023 · Cheng Wei Chen

《和艦長一起30天玩轉GitLab》第二版上市

辛苦了一整年(!?)終於在 2022 年底,將《和艦長一起30天玩轉GitLab》改版完成。這次也是走一個拖稿拖稿再拖稿的路線。好在出版社編輯沒有真的殺到我家樓下來堵我,畢竟都已經進行到排版二校時,我還一直試圖要塞入新的內容,實在是感謝他們的一再寬容。 除了感謝出版社,這次還要特別感謝三位朋友幫忙撰寫推薦序,以及家人們一再的包容與支持,二版新增的一小段致謝,就原汁原味的全文刊登如下。 2022 第二版致謝 隨著 GitLab 的迭代更新,我一直希望能有機會將本書改版更新,終於這份期望得以在 2022 年底實現。感謝在這段改版寫書過程中,提供我各種協助的各方好手——感謝願意推薦本書的社群前輩 William 及 Rick,你們豐富的知識與經驗一直是我努力學習的標竿;感謝同為 GitLab Hero 的墨嗓,你是我在專研 GitLab 之路上不可多得的好夥伴;感謝在 GitLab Taipei User Group 及 DevOps Taiwan Community 認識的多位社群朋友,彼此經驗交流、教學相長,讓社群能持續的成長茁壯。 最後,再次感謝我親愛的家人,感謝你們體諒並陪伴我每一次的寫稿生活,本書誕生的每一字一句都是你們的功勞。 其實在 2020 年《和艦長一起30天玩轉GitLab》初版上市時,我就已建立了 https://gitlab-book.tw 網站,在網站上提供最新的書籍內容勘誤,並一度想要將該網站轉化成為 GitLab 相關新知的分享平台,沒意外的話,明年會再次嘗試活化 gitlab-book.tw,看看可以如何讓網站能產生更多的價值。 2022/12/31 更新 由於 GitLab 實在是改版快速,因此我也會視狀況在 https://gitlab-book.tw 上更新一些書籍內容;像是 GitLab 15.7 推出後,在 gitlab.com 上就直接啟用新版的 Web IDE (VS Code),導致我在書中經常提到的 File Templates 功能目前是暫時無法使用的,為了因應這個狀況,我就有在 gitlab-book.tw 網站上提供對應的內容更新。 最後,還是厚臉皮的來一段工商服務,如果你問我自己最喜歡《和艦長一起30天玩轉GitLab》第二版的哪些內容?我會推薦第五章「實作 CI/CD Pipeline」。這個章節是我將自己過去的職場工作、CI/CD Pipeline 工作坊及對外開課所獲得的各種經驗,再次整理後重新撰寫的;希望能讓這本 GitLab 專書,不只有 GitLab 功能面的內容,也可以有更多跳脫單一工具、有助於大家實踐 CI/CD Pipeline 的經驗分享。如果你也正在擔任 CI/CD Pipeline 水管工人,推薦你一定要讀第五章,也歡迎與我交流分享你的經驗喔!...

December 30, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四)

本文為系列文章《跟著 GitLab Auto DevOps 學習 CI/CD Pipeline》的第四篇,藉由逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 在上一篇文章,我們學習到 workflow: 可以幫助我們控制在哪些條件之下才需要產生 CI/CD Pipeline。這次我們則是要進入第一個 Template - Jobs/Build.gitlab-ci.yml,看看 Auto DevOps 是如何實現同一個 CI Build 卻能適用於不同的程式語言。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) Jobs/Build.gitlab-ci.yml 首先讓我們直搗黃龍,直接查看 Jobs/Build.gitlab-ci.yml 的內容。 # 下面的版本來自 2022/02/04 的 https://gitlab....

February 20, 2022 · Cheng Wei Chen

透過 GitLab CI + K6 進行小規模 Load Testing

在先前的文章,已分享過使用 JMeter 和 drill 進行小規模 Load Testing,今天延續同樣的主題,這次要使用另一個新興熱門的 Load Testing 工具 K6,試一試「如何透過 GitLab CI + K6 進行小規模 Load Testing」。 操作步驟 首先,K6 在 2021 年已經被 Grafana Labs 買下來了,但目前(2022/02/03)看來,K6 官網依然還維持原貌,沒有太大的變化,只是多掛上了 Grafana Labs 的 Logo。K6 有提供 Open Source 與 K6 Cloud 兩種方案,而本文將採用的是 Open Source 方案。 準備 GitLab Runner 老樣子,第一步我們要先預備合適的 GitLab CI 環境,應該不用再多做解釋,請先準備好能夠操控 Container 的 GitLab Runner,如果你不知該如何準備 Runner,又想要快速試一下本文的內容,那最簡單的做法是註冊一個 gitlab.com 帳號,然後建立新 Project 並使用官方提供的 Shared Runners。 準備 Docker image - K6 第二步,預備一個能夠運行 K6 的 Docker image。 這次很幸運,已經有現成的 Image 可以使用 loadimpact/k6...

February 3, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三)

本文為系列文章《跟著 GitLab Auto DevOps 學習 CI/CD Pipeline》的第三篇,藉由逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 在上一篇文章,我們學習了善用 include: 並透過合適的層級規劃,讓我們可以建立出屬於自己的 CI/CD Pipeline Templates。接著在本篇文章,我們要來認識在規劃 GitLab CI Pipeline 時,一個重要的進階功能 workflow:。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) workflow 在本系列文的第一篇我們介紹 Auto-DevOps.gitlab-ci.yml 時,有稍微提到 workflow:,但當時只有快速帶過,說明關於它的一個基本認識,在文章中我是這樣解釋的: workflow: 類似程式語言中的 if / else,在 GitLab CI 我們可以利用 workflow: 設置不同的條件,藉此控制 GitLab CI 判斷哪些情境之下,才需要產生 CI/CD Pipeline。...

February 1, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二)

本文為系列文章《跟著 GitLab Auto DevOps 學習 CI/CD Pipeline》的第二篇,藉由逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 在上一篇文章,我們了解 Auto DevOps 可說是 GitLab CI 的火力展示,它以 Auto-DevOps.gitlab-ci.yml 為起點,利用 include: 引用了多個 Template,構成了可以自動產生 Pipeline 的 Auto DevOps 功能。本文我們將延續上一篇文章,從 Auto-DevOps.gitlab-ci.yml 繼續認識官方是怎麼規劃與管理 pipeline 與 templates。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) 結構 善用 include: 在上一篇文章,雖然我們只是快速的解釋 Auto-DevOps....

January 9, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一)

自從 GitLab 推出 Auto DevOps 功能之後,我在許多演講與社群的場合都曾分享過,其實 Auto DevOps 並不是真的那麼「Auto」,它的背後是仰賴 GitLab 官方事先預備好的眾多 GitLab CI Templates,這些 Templates 能夠根據 Project 內容,自動產生多種情境的 CI/CD Pipeline。因此如果你想要自學 GitLab CI 的各種進階用法與技巧,或想要參考別人如何規劃 CI/CD Pipeline,那麼這些建構出 Auto DevOps 的諸多 CI Templates 即是我們絕佳的學習與參考對象。 既然 GitLab 官方準備了這麼好的學習材料,當然要好好運用它,因此從本文開始,接下來我將以系列文的方式,逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) Auto DevOps CI Templates 首先讓我們快速查看 GitLab 官方準備的 Auto DevOps CI Templates,如下網址,我們可以在官方公開的 GitLab Project 中找到它們。...

December 27, 2021 · Cheng Wei Chen