從零開始建立自動化發佈的流水線(持續搬移中)
將 2019 iT 邦幫忙鐵人賽 🔗 的文章搬遷到此,同時有些內部可能已經過時,在搬移的過程中,會重新針對內容加以整併與補充。
以一位 SOHO 族從無到有、一步一步建立自己的 CI/CD 的故事。伴隨著故事的發展,逐一建構一條從版控到發佈的自動化作業,會逐一帶出四個階段的主題。
- 程式碼版本控管
- CI/CD Server 的架設
- 自動發佈最新版本的軟體
- Container
故事背景
吉米獨立接案己經有三年的經驗,其中有個長期合作案,內容是與 C 公司協同開發一套影像識別軟體,並在每一季,針對新的功能需求,持續開發。
隨著 C 公司將軟體銷售到不同客戶單位,吉米也接到許多客制化功能的延伸案,也都順利完成結案。
但是最近 C 公司有一個很重要的需求,就是在一年多前釋出的特定版本進行客制化。就這一個簡單的需求,卻讓吉米傷透腦筋。
原因竟然是因為客戶要求的特定版本,吉米當時為了趕工,釋出後,忘了備份該版本原始碼。
最後,吉米找出距離特定版本,時間最接近的原始碼備份檔案,與 C 公司的協助下,好不容易的完成這個需求。
事後,吉米為了不要讓這樣的事件再次發生,決定跟之前在研討會上認識的 Eric 請教。
文章目次
版控篇
持續整合
-
使用 Travis CI/GitHub Action 進行持續整合 介紹使用 Travis CI 與 GitHub 內建的 GitHub Action 的設定方式。
-
使用 Jenkins/Azure Pipeline 進行持續整合 介紹使用 Azure DevOps 內的 Azure Pipeline,以及使用 Azure VM 去建立 Jenkins。在 Azure VM 的部份,會簡單介紹雲端運算的概念(Cloud Compute)。
訊息通知
- 訊息通知 - E-mail/Microsoft Teams
- 訊息通知 - Line
持續發佈
-
使用 Travis CI / Azure PipeLines 發佈 Artifact 到 Dropbox 在 Dropbox 開啟存取權限,並使用 Travis CI 與 Azure PipeLine 將軟體打包上傳到 Dropbox。
-
使用 Travis CI / Azure PipeLines 發佈 WebAPI 到 Azure App Service
Container
-
部署新境界 - 使用 Container 簡化流程 介紹 Container 與 VM 的差異,以及 Docker for Windows 的安裝方式。
-
Docker 操作簡介 - command / dockerfile / docker-compose 介紹 Docker 常用的指令,並簡單介紹 Dockerfile 與 Docker Compose 的用法。
-
使用 Container 建立 CI 所需要的建置環境 介紹 Travis CI、Azure DevOps、Jenkins 如何配合 docker 的概念,使用 container 進行 CI 動作。
-
使用 Azure Pipelines / Jenkins 來建立 Docker image 簡介使用 Azure Devops、Jenkins 去建立 Docker image 的作法。