In 2020, Docker announced support for multi-architecture images, and later, Docker BuildKit officially supported multi-architecture images. This article introduces how to use Drone CI/CD with Docker BuildKit to compile multi-architecture images, and this feature is free and does not require a paid Docker Hub account. However, the Drone Docker Plugin provided by Drone CI/CD does not currently support multi-architecture images, so you need to write your own Drone Pipeline to achieve our goal. The official website has also proposed this proposal: ‘Support cross-arch Docker builds within Docker using QEMU’ to achieve this goal, using QEMU. The key point is to use Docker BuildKit to complete it under the environment where the Host supports Qemu.
[Read More]用 Drone CI/CD 搭配 Docker BuildKit 編譯多架構映像檔
在 2020 年就有 Docker 宣布支援多架構映像檔,後來才有正式的 Docker BuildKit 支援多架構映像檔,這篇文章來介紹如何使用 Drone CI/CD 搭配 Docker BuildKit 編譯多架構映像檔,而且這個功能是免費的,不需要付費的 Docker Hub 帳號。但是在 Drone CI/CD 官方提供的 Drone Docker Plugin 目前是不支援多架構映像檔,所以需要自己撰寫 Drone Pipeline,來達到我們的目的,官方也有人提出了這樣的 Proposal: 『Support cross-arch Docker builds within Docker using QEMU』,使用 QEMU 來達成目的,底下來介紹如何使用,關鍵點就是在 Host 支援 Qemu 的環境下,使用 Docker BuildKit 完成。
[Read More]用 GitHub Actions, Drone CI 或 GitLab CI 部署 AWS Lambda
最近剛好把 drone-lambda 新增了一些新的功能,也就是可以透過 CI/CD 的方式來更新 AWS Lambda 基本設定,像是 Memory Size, Handler, Timeout, Runtime 或 Role 等 …,趁這機會寫篇教學紀錄如何透過 GitHub Actions, Drone CI 或 GitLab CI 部署 AWS Lambda。這三套部署方式都是透過 drone-lambda 包好的 Image 來進行。底下的程式碼都可以在這邊找到。
[Read More]Go 1.15 新增 Module cache 環境變數
相信各位開發者在寫 Go 語言專案,現在肯定都是使用 Go module 了,而 Go Module 檔案預設寫在 /go/pkg/mod
目錄內,要串 CI/CD 流程時,由於不在專案路徑底下,所以每一個 Container 無法共用 /go/pkg/mod
路徑,造成重複下載第三方套件,其實跨容器的解決方式可以透過 Drone 的 Temporary Volumes 方式解決,但是最終希望跑完編譯流程時,可以將最後的 mod 目錄打包留到下次的 CI/CD 部署流程使用,這時候如果可以改變 /go/pkg/mod
路徑,就可以動態調整目錄結構了。底下是針對 Drone 這套部署工具進行解說。
用 GitHub Actions 上傳 Docker Image 到 AWS ECR
最近正打算使用 GitHub Actions 來串接 AWS 服務 (ECR + ECS),上網找了一堆 ECR 套件,發現就連 AWS 官方都只有實作 Login 進 ECR,後面編譯跟上傳動作就需要自己寫,可以看看底下是 AWS 官方套件的範例:
[Read More]Docker 推出官方 GitHub Actions 套件
去年 GitHub 推出 Actions,就有不少開發者相繼把 CI/CD 流程內會使用到的 Plugin 都丟到 Marktetplace,而在這 Docker 容器時代,肯定是需要用自動化上傳容器到 Docker Registry,而官方也在上週正式釋出第一版 GitHub Actions,雖然在 Marktet 尚有不少開發者已經有實現了此功能,但是官方既然推出了,就採用官方的套件會比較適合。底下我們來看看如何使用 Docker 推出的 GitHub Aciton 來自動化上傳 Docker Image。除了介紹如何使用 GitHub Action 上傳 Image 外,我也會拿 Drone 的 Docker Plugin 來進行比較。
[Read More]Go Modules 處理 Private GIT Repository 流程
Golang 在 1.14 正式說明可以將 Go Modules 用在正式環境上了,還沒換上 Go Modules 的團隊,現在可以開始轉換了,轉換方式也相當容易啦,只要在原本的專案底下執行底下指令,就可以無痛轉移
假設專案內有用到私有 Git Repository 該怎麼解決了?現在 go mod 會預設走 proxy.golang.org
去抓取最新的資料,但是要抓私有的,就需要透過其他方式:
|
|
上面代表告訴 go 指令,只要遇到 github.com/appleboy
就直接讀取,不需要走 Proxy 流程。拿 GitHub 當作範例,在本機端開發該如何使用?首先要先去申請 Personal Access Token,接著設定 Git
|
|
其中 Username 就是 GitHub 帳號,Access token 就是上面的 Personal Access Token。如果在本機端執行,本身有 SSH Key 的話,就不需要這個 Access Token,直接用 SSH Key 就可以了。
|
|
用五分鐘安裝好 Drone 搭配 GitHub 自動化環境
之前寫過一篇『用 10 分鐘安裝好 Drone 搭配 GitLab』。團隊內還沒導入自動化 CI/CD 測試部署環境的朋友們,可以來嘗試看看用 Go 語言打造的 Drone CI/CD 開源專案,不用五分鐘的時間就可以在您的電腦上安裝好 CI/CD 的流程,真的是簡單到不行,只要一個 docker-compose 檔案就可以完成架設了。
[Read More]用 Drone 部署靜態檔案到 GitHub Pages
新課程上架:『Docker 容器實用實戰』目前特價 $800 TWD,優惠代碼『20200222』,也可以直接匯款(價格再減 100),如果想搭配另外兩門課程合購可以透過 FB 聯絡我
GitHub 提供一個非常方便的功能,就是可以將靜態檔案部署在 GitHub 上,基本上開發者不用負擔任何 Host 費用,就可以使用靜態檔案來做 Demo 介紹,或者是文件系統。而本篇將教您如何用 Drone 來自動化部署靜態檔案到 GitHub 上。作者直接用 Vue.js 來介紹整個流程。
[Read More]Drone CI/CD 支援 Auto cancellation 機制
大家一定會問什麼是『Auto cancellation』呢?中文翻作自動取消,這機制會用在 CI/CD 的哪個流程或步驟呢?我們先來探討一個情境,不知道大家有無遇過在同一個 branch 陸續發了 3 個 commit,會發現在 CI/CD 會依序啟動 3 個 Job 來跑這 3 個 commit,假設您有設定同時間只能跑一個 Job,這樣最早的 commit 會先開始啟動,後面兩個 commit 則會處於 Penging
的狀態,等到第一個 Job 完成後,後面兩個才會繼續執行。