--- title: Lab Meeting Minutes 2023/06/02 tags: lab_meeting --- > Outline > [TOC] --- # PERAL Lab Meeting - 時間:112 年 06 月 02 日 9:00 - 地點:線上 - 線上會議連結 : [Online](https://meet.google.com/zfi-zmnc-qfw) - 出席者:吳坤熹老師、謝萬霖、吳騰然、劉怡君、田蕙瑜、莊才賢、紀見如、劉冠伶、林大智、繆亭霄 - 會議主題:[Jenkins CI/CD](https://docs.google.com/presentation/d/1OWmVF9oaNp3DlaVmu0nihP09Dw7ygIRKGGWG-tsU154/edit?usp=sharing) - 主講者: 吳騰然 - 主記: 繆亭霄 ## 會議內容 ### DevOps - 全名為 Software Development (Dev)、IT Operations (Ops) - 促進開發人員與 IT 維運人員之間的協同運作 - 提倡將傳統硬體設備轉移雲端 ### DevOps Chain - Plan -> Code -> Build -> Test -> Release -> Deploy -> Operate -> Monitor ![](https://hackmd.io/_uploads/HkOnWT8Ih.png) ![](https://hackmd.io/_uploads/BygTZ6LL2.png) ### How to implement DevOps - 如何去實現 DevOps 的理念 - CI/CD - 如何去管理每個階段的工具 - Jenkins ### CI / CD - CI (Continuous Integration, 持續整合) - 對應 DevOps 流程 : Plan、Code、Build、Test - 透過自動化工具測試、驗證程式碼問題 - ![](https://hackmd.io/_uploads/ByahGTU82.png) - CD (Continuous Deployment, 持續部署) - 對應 DevOps 流程 : Release、Deploy、Operate、Monitor - CI 的下一個步驟,經過 CI 測試後所構建的程式碼可以透過 CD 工具自動化部署至伺服器 ### Jenkis - 開源,自動化的 server - 用於自動化執行 Build、Test、Deploy… - 管理多台節點機 (Node) ### Jenkis Node - Jenkis 與主機間資訊透過 ssh 傳輸 ![](https://hackmd.io/_uploads/rJ_uQp88n.png) - 建置完成 ![](https://hackmd.io/_uploads/rJSampI82.png) ### Jenkis Project ![](https://hackmd.io/_uploads/HyFxEa8Lh.png) ![](https://hackmd.io/_uploads/HJ1-NTLIh.png) ![](https://hackmd.io/_uploads/HJh4EaLUn.png) ![](https://hackmd.io/_uploads/HyrHVpLUh.png) ![](https://hackmd.io/_uploads/HJCLNpLL2.png) ### Jenkis in CI ![](https://hackmd.io/_uploads/ByTOV6L8h.png) ### Jenkis in CD ![](https://hackmd.io/_uploads/HJa1rTLIn.png) ### Jenkins CI/CD Benefit - 提升程式碼品質 - 快速找到程式碼錯誤問題 - 可觀看測試完的版本與進展 - 易於維護與更新 - 提升服務上線時間 - 檢核服務時間縮短 - 降低成本 ### Jenkins CI/CD In Security - 在一般 IT 維運的 CI/CD 流程上只能保證程式碼的品質,那程式碼漏洞如何處理 ? - 一般開發人員需要與資訊安全人員申請,才可以弱點掃描,是否可以用在 CI/CD ? - CI: - 進行靜態應用程式安全測試 (Static Application Security Test, SAST) - 修補漏洞與修補期限 - 資訊安全人員審查與評估程式碼漏洞 - ![](https://hackmd.io/_uploads/HyIPUpULn.png) - CD: - 進行動態應用程式安全測試 (Dynamic Application Security Testing, DAST) - 修補應用程式上的漏洞與修補期限 - 資訊安全人員審查與評估 - 佈署正式環境上線 - ![](https://hackmd.io/_uploads/HJDdDT8Ih.png) - Using GitLab Application Security Capabilities with Jenkins (DevSecOps) (https://youtu.be/8VoxulxxM4Y) --- ### 建議&問題 1. 為什麼 CI 測試完一次 CD 還要再測試一次?[name=Lawrence] Ans: CI 是測試程式碼有無 buffer overloading 這種問題,CD是檢測像是目錄列舉、SQL injection[name=Toby] 2. 要如何讓不同 Node 整合在一起?[name=Jennifer] Ans: 這部分會由 Jenkins pipeline 實現[name=Toby] 3. Jenkins 有限制程式碼要使用什麼語言嗎?[name=August] Ans: 沒有,Jenkins 只是透過遠端執行[name=Toby] 4. 剛剛展示的程式是什麼格式?(https://www.jenkins.io/doc/book/pipeline/jenkinsfile/)[name=Ashley] Ans: 原本以為是 yaml 但好像不是,還要再做確認[name=Toby] 5. 為什麼 Jenkins 可以減少開發人員與維護人員的信件溝通? Ans: 可以透過 Jenkins email 傳送報表,自動化溝通,不需要申請掃描的額外郵件[name=Toby] 6. Does Windows provide a "container" environment to isolate your testing? [name=Jerry] Ans: Linux has container, but Windows does not. Edgar: Windows now provides its container. You can issue instructions in PowerShell, but it's fat (4GB), so not recommended.[name=Toby] 7. p.10 master 跟 agent 架構的用意?[name=Pheobe] Ans: 這個只是主機名稱,方便辨認,修改 project 是根據使用者的權限[name=Toby] 8. 測試報表是 Jenkins 自己產生的嗎?[name=Pheobe] Ans: 不是,報表部分必須由我們自己寫在 Shell 裡 9. Jenkins 解決了什麼根本的問題? Ans: 最大的優點應該是解決了程式碼的整合以及加速測試報表的取得 10. 介紹一下 Node、Agent、Pipeline Ans: Node 是主機上的測試環境,Agent 負責執行指令,Pipeline 是負責指定不同 Node 的動作 11. 透過 jenkins 自動化如果被惡意運用,可能會利用自動化流程植入弱點. 可注意 Securing Jenkins 相關文章[name=Solomon] ## 待追蹤事項 1. 資安電影清單 [name=Toby] ## 臨時動議 1. 路跑改至6/4(Sun) 07:00 [name=Ashley] 2. 期末大掃除 6/17 (Sat [name=Phoebe]) --- 散會結束時間: 10:50