2021/05/03 (更新內容)
2021/05/04 (上傳投影片)
開發的工作從強調持續性整合(Continuous Integration,CI),後來更進一步強調持續性交付(Continuous Delivery, CD)或持續性部署(Continuous Deployment, CD),再進一步希望把開發與維運進行整合 (DevOps)。一般而言,是使用Git或其他的組態工具來進行持續性整合,如果是敏捷開發,就會有比較頻繁的部署,所以,接下來就是逐步將部署的動作也自動化。然而,這兩個概念只是技術上的概念,更重要的是開發到營運的整合,不管是否採用敏解釋開發,開發到營運的整合都相當重要。
DevOps 重視的是開發到維運的整合,包括如何從開發到維運(Dev to Ops)(如:持續性交付的管理流程)以及維運回饋給開發(Ops to Dev),除了利用工具之外,如何促成各方的合作(如:Dev & Ops)才是主要的重點(詳參: DevOps)。Davis & Daniels (2016) 強調DevOps不只是Dev及Ops兩方的合作,一般人誤以為只是Dev及Ops兩方的合作,所以,才會有DevSecOps及DevQAOps的說法,事實上,應該是從開發一直到維運的相關活動及人員(如:資安及QA)都屬於DevOps,所以,該書認為應該稱為devops。
在「鳳凰專案:看IT部門如何讓公司從谷底翻身的傳奇故事」這本書中,作者以三步工作法 (The Three Ways) 來描述如何達成上述的三件事(Dev to Ops、Ops to Dev、Dev & Ops)。書中特別強調要去找出計畫外的工作,並且控管計畫外的工作,還引用了TOC(約束理論,Theory of Constraints)去找到維運部門的瓶頸,把TOC從工廠的營運帶到資訊維運部門 (關鍵鍊把TOC應用在系統開發) ,也把Kanban從工廠的營運帶到資訊維運部門,談到風險管理,也強調要從企業的角度去看資訊系統的開發,是一本整合多種觀點的好書。
三步工作法 (參考: 鳳凰專案 The Phoenix Project & 鳳凰專案:看IT部門如何讓公司從谷底翻身的傳奇故事 & The Three Ways: The Principles Underpinning DevOps by Gene Kim)
第一步工作法 (The First Way):建立快速的工作流程
第二步工作法 (The Second Way): 縮短及增強回饋循環
第三步工作法 (The Third Way): 創造、形成公司文化,鼓勵探索進行改善活動,從錯誤中學習。
Davis & Daniels (2016)提出DevOps的四大主軸,從四大主軸可以看到工具只是其中一個主軸而已:
協作 (Collaboration)
親和力 (Affinity)
工具 (Tool)
擴展 (Scaling)
進行CICD設定
看一下pipeline及jobs
Gitlab提供gitlab pages讓我們可以部署靜態網頁,所以,我們可以利用gitlab + gitlab pages部署html專案,來讓大家看一下一個非常陽春的CICD。
首先,我們在專案裡新增一個設定檔.gitlab-ci.yml:
pages:
stage: deploy
script:
- mkdir .public
- cp -r * .public
- mv .public public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
可以看到在master上的內容: https://benwu.gitlab.io/pmtest/
可以試試看新增自己的branch,再切換到master,merge你們的branch,push新的master內容。可以看到pipline跟jobs.
Davis & Daniels (2016), Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale, O'Reilly (陳正瑋 譯 碁峯出版)
詳參 DevOps (敏捷式軟體開發課程網站)