[Drone] 將單一 Job 分配到多台機器,降低部署執行時間

drone multiple machine

在傳統 CI/CD 流程,都是會在同一台機器上進行,所以當有一個 Job 吃了很大的資源時,其他工作都必須等待該 Job 執行完畢,釋放出資源後,才可以繼續進行。現在 Drone 推出一個新功能,叫做 Multiple Machine 機制,現在開發者可以將同一個 Job 內,拆成很多步驟,將不同的步驟丟到不同機器上面去執行,降低部署執行時間,假設現在有兩台機器 A 及 B,你可以將前端的測試丟到 A 機器,後端的測試,丟到 B 機器,來達到平行處理,並且享受兩台機器的資源,在沒有這機制之前,只能在單一機器上面跑平行處理,沒有享受到多台機器的好處。

Continue reading “[Drone] 將單一 Job 分配到多台機器,降低部署執行時間”

透過 Drone CLI 手動觸發 CI/CD 流程

drone promotion

相信大家對於 Drone 並不陌生,這次來介紹 Drone 1.0 的新功能 (更多的 1.0 功能會陸續介紹,也可以參考之前的文章),叫做 promotion,為什麼作者會推出這功能呢?大家在團隊工作時,有些步驟真的無法導入 CI/CD 自動化流程,而是需要人工介入後,再做後續處理?相信一定會遇到此狀況,PM 或老闆看過沒問題後,才需要手動觸發流程,在此功能以前,都會麻煩工程師幫忙做後續自動化流程,但是有了 promotion,現在連 PM 都可以透過 Drone CLI 來自己做部署啦,這邊就是介紹給大家,如何透過 Drone CLI 指令來觸發已存在的工作項目。

Continue reading “透過 Drone CLI 手動觸發 CI/CD 流程”

架設 Go Proxy 服務加速 go module 下載速度

golang logo

Go 語言在 1.11 推出 go module 來統一市面上不同管理 Go 套件的工具,像是 dep 或 govendor 等,還不知道如何使用 go module,可以參考之前寫的一篇文章『Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具』,在團隊內如果每個人在開發專案時,都透過網路去下載專案使用到的套件,這樣 10 個人就會浪費 10 個人的下載時間,並且佔用公司網路頻寬,所以我建議在公司內部架設一台 Go Proxy 服務,減少團隊在初始化專案所需要的時間,也可以減少在跑 CI/CD 流程時,所需要花費的時間,測試過公司 CI/CD 流程,有架設 Go Proxy,一般來說可以省下 1 ~ 2 分鐘時間,根據專案使用到的相依性套件用量來決定花費時間。本篇來介紹如何架設 ATHENS 這套開源 Go Proxy 專案。

Continue reading “架設 Go Proxy 服務加速 go module 下載速度”

用 Ansible 安裝 Drone CI/CD 開源專案

drone and ansible

相信大家對於 Drone 開源專案並不陌生,如果對於 Drone 不了解的朋友們,可以直接看之前寫的系列文章,本篇要教大家如何使用 Ansible 來安裝 Drone CI/CD 開源專案。目前 Drone 可以支援兩種安裝方式: 1. 使用 Docker 2. 使用 binary,如果您是進階開發者,可以使用 binary 方式來安裝,像是在 Debug 就可以透過 build binary 方式來測試。一般來說都是使用 Docker 方式來安裝,在使用 ansible 之前,請先準備一台 Ubuntu 或 Debian 作業系統的 VM 來測試。

Continue reading “用 Ansible 安裝 Drone CI/CD 開源專案”

CI/CD 大亂鬥: Drone 1.0 功能介紹

drone ci/cd

很高興受到 Devops Taiwan 邀請到台北講『Drone CI/CD 1.0 新功能』,現場太多 CI/CD 工具一起 PK,有興趣可以看活動網頁。其實我在其他場合講過很多次 Drone 的基礎,所以這次上台北最主要探討 Drone 在今年 2019 Release 1.0 的一些重大功能,我相信大家在用舊的版本已經很順了,其實如果不升級到新的版本也是沒差。底下我會一一介紹 1.0 的新功能。有共筆紀錄,大家可以先參考看看。

Continue reading “CI/CD 大亂鬥: Drone 1.0 功能介紹”

10 分鐘內用 Traefik 架設 Drone 搭配 GitHub 服務

這標題也許有點誇張,但是如果實際操作一次,肯定可以在 10 分鐘內操作完成。本篇來教大家如何用 Traefik 當作前端 Proxy,後端搭配 Drone 服務接 GitHub,為什麼會用 Traefik,原因很簡單,你可以把 Traefik 角色想成是 Nginx,但是又比 Nginx 更簡單設定,另外一點就是,Traefik 自動整合了 Let’s Encrypt 服務,您就不用擔心憑證會過期的問題。假如機器只會有一個 Drone 當 Host 的話,其實也可以不使用 Traefik,因為 Drone 其實也是內建自動更新憑證的功能。如果您對 Traefik 有興趣,可以直接參考底下兩篇文章

Continue reading “10 分鐘內用 Traefik 架設 Drone 搭配 GitHub 服務”

開源專案 Gitea 支援 OAuth Provider

Gitea

很高興看到 Gitea 正式支援 OAuth Provider 了,此功能經歷了四個月終於正式合併進 master 分支,預計會在 1.8 版本釋出,由於此功能已經進 master,這樣我們就可以把原本 Drone 透過帳號密碼登入,改成使用 OAtuh 方式了,增加安全性。但是在使用之前,Drone 需要合併 drone/go-login@3drone/drone@2622。如果您會使用 Go 語言,不妨現在就可以來試試看了,透過 go build 來編譯原始碼。

Continue reading “開源專案 Gitea 支援 OAuth Provider”

在 docker-in-docker 環境中使用 cache-from 提升編譯速度

提升 docker build 時間

在現代 CI/CD 的環境流程中,使用 Docker In Docker 來編譯容器已經相當流行了,像是 GitLab CIDrone 都是全走 Docker 環境,然而有很多人建議盡量不要在 CI 環境使用 Docker In Docker,原因在於 CI 環境無法使用 Host Image 資料,導致每次要上傳 Image 到 Docker Hub 時都需要重新下載所有的 Docker Layer,造成每次跑一次流程都會重複花費不少時間,而這個問題在 v1.13 時被解決,現在只要在編譯過程指定一個或者是多個 Image 列表,先把 Layer 下載到 Docker 內,接著對照 Dockerfile 內只要有被 Cache 到就不會重新再執行,講得有點模糊,底下直接拿實際例子來看看。

Continue reading “在 docker-in-docker 環境中使用 cache-from 提升編譯速度”