前言
本文講解如何使用 GitHub Actions 配合 docker 進行開發部署過程中的持續整合工作流。
學習本文之前需要有些許 Dockerfile 基礎,可通過我前面的文章進行學習:Docker 快速部署 Node express 專案
至於為什麼使用 GitHub Actions,這裡引用官方:
在 GitHub Actions 的倉庫中自動化、自定義和執行軟體開發工作流程。 您可以發現、建立和共享操作以執行您喜歡的任何作業(包括 CI/CD),並將操作合併到完全自定義的工作流程中。
建立Actions檔案
當然,GitHub Actions 基於 git 倉庫。
在自己專案的 git 倉庫中,選擇 Actions 選單點選 set up a workflow yourself ->
自動建立 yml 檔案。
也可以在IDE中 專案根目錄下 手動建立 .github/workflows
目錄,新建 name.yml 檔案(name隨意名字,可以工作流功能取名)。
選擇工作流模板
我們目前的工作是 更新程式碼+構建映象+提交映象 + 伺服器pull映象+啟動容器
。
GitHub Actions 並不推薦操作伺服器內容,所以我們只需要讓actions自動完成前面幾步即可。
與 Docker 有關,在 git marketplace 中 查詢 docker actions,找到了一項非常符合我們的工作流模板 Build and push Docker images
進入模板詳情複製程式碼到 name.yml 檔案中,並加以修改。
# 工作流程的名稱
name: Docker Image CI
# 觸發條件:當branch觸發push(push,merge Pull Request),且 tag 為 image.xxx 時觸發工作流。
on:
push:
tags: image.*
# 工作流程,可包含多個作業
jobs:
# 作業1名稱
build:
# 指定的執行器環境
runs-on: ubuntu-latest
# 作業包含一系列任務,稱為 steps
steps:
# 檢出當前程式碼(觸發工作流時的commits)
- name: Checkout
uses: actions/checkout@v2
# setup-qemu 如果您想使用 QEMU 新增模擬支援以便能夠針對更多平臺進行構建,則 action 會很有用
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
# setup-buildxaction 將預設使用docker-container 構建器驅動程式建立和引導構建器。非必需
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# 登入到阿里雲容器映象服務
- name: Login to Ali Docker
uses: docker/login-action@v1
# 配置登入資訊,secrets 變數在 github settings -> secrets 中設定
with:
registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}
username: ${{ secrets.ALI_DOCKER_HUB_USN }}
password: ${{ secrets.ALI_DOCKER_HUB_PWD }}
# 構建映象並上傳到阿里雲容器映象倉庫 (自行百度建立自己的映象倉庫)
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: registry.cn-shenzhen.aliyuncs.com/xxxx/image-name:v1
複製程式碼
檢視工作流日誌
工作流觸發後,可在 GitHub Actions 中檢視日誌。
綠色√標記已完成並且成功。
部署到伺服器
進入伺服器終端,啟動 Docker 容器
# 停止並移除正在執行的容器
docker stop docker-name
docker rm docker-name
# 拉取最新的映象
docker pull registry.cn-shenzhen.aliyuncs.com/xxxx/image-name:v1
# 啟動容器
docker run -d -p 3000:3000 --name=docker-name registry.cn-shenzhen.aliyuncs.com/xxxx/image-name:v1
複製程式碼
致謝
GitHub Actions 文件:docs.github.com/cn/actions/…
Benny技術部落格乾貨滿滿:www.benny.wiki
轉載宣告: 請註明作者,註明原文連結,有疑問致郵 kingwyh1993@163.com