在沒有自動化部署的情況話,前端需要部署程式碼的流程可能是這樣的:
1.yarn build:xxx build指定環境包
2.將打包檔案給運維或者後臺(前端有許可權可省略這一步)
3.將打包檔案放到伺服器指定目錄
亦或者是做了自動化指令碼,但是每次需要後臺人員手動執行指令碼
可見每次都需要進行一定的溝通以及手動操作,解決這個問題,我們可以利用Github Actions實現自動化打包部署
很多時候,我們希望在提交程式碼,合併分支等操作的時候,需要做一些其他的操作,比如抓取程式碼、執行測試、執行打包、登入遠端伺服器、將檔案上傳到伺服器等,而且這些操作很多時候都是類似的。基於使用者的這個需求,Github推出了actions功能。
actions允許開發者將每個操作寫成獨立的指令碼,存放到程式碼倉庫,開發者可以將這些指令碼釋出,釋出後的指令碼可以被其他開發者引用。
有了actions,開發者不用自己寫指令碼,直接引用其他人的aciton即可(如果可以滿足你的需求),然後整個持續整合的過程,就變成了多個actions的組合。
當你需要查詢actions的時候,可以去Github Action市場搜尋,點選需要的action,會進入該action的頁面
點選右上角的Use latest version或者點選下拉選擇版本,會彈出使用方法,點選複製使用即可
想要使用github action執行我們的指令碼,需要在專案的根目錄建立.github資料夾,在.github資料夾下建立workflow資料夾,在workflow資料夾下寫我們的配置檔案,配置檔案為YAML格式,檔案字尾名為.yml,workflow資料夾下可以有多個.yml檔案,github會自動執行所有.yml檔案。workflow檔案的配置可以檢視官方文件,下邊貼上我的配置
name: 指令碼名稱
# 觸發指令碼的條件,develop分支push程式碼的時候
on:
push:
branches:
- develop
# 要執行的任務
jobs:
# 任務名稱
build:
# runs-on 指定job任務執行所需要的虛擬機器環境(必填)
runs-on: ubuntu-latest
# 任務步驟
steps:
# 獲取原始碼
- name: 遷出程式碼
# 使用action庫 actions/checkout獲取原始碼
uses: actions/checkout@master
# 安裝node
- name: 安裝node.js
# 使用action庫 actions/setup-node 安裝node
uses: actions/setup-node@v1
with:
node-version: 10.16.3
# 安裝依賴
- name: 安裝依賴
run: npm install
# 打包
- name: 打包
run: npm run build:xxx
# 上傳打包檔案到遠端伺服器
- name: 上傳檔案到遠端伺服器
uses: zhenyuWang/Upload-File-Action@v1.0.1
with:
username: "登入遠端伺服器的使用者名稱"
server: "遠端伺服器ip"
port: "22"
ssh_private_key: ${{ secrets.私鑰}}
# 要上傳檔案所在目錄
local_path: "./dist/*"
# 遠端伺服器目標路徑
target_path: "/usr/local/nginx/html/xxx"
複製程式碼
上述指令碼只需要cv到自己的檔案裡就好,需要注意的是私鑰配置,過程如下
1.生成SSH key
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f test -N ""
複製程式碼
會得到以下兩個檔案
test.pub (public key)
test (private key)
複製程式碼
2.配置私鑰
開啟github倉庫,點選settings
然後點選左側Secrets
然後點選右上角New repository secret
需要注意的是這裡的私鑰名稱就是配置檔案裡的私鑰名稱
3.配置公鑰
登入遠端伺服器,找到.ssh/authorized_keys檔案,把公鑰檔案裡的內容複製到該檔案中
至此,我們的自動化打包部署就完成了,快去試下吧!