構建流程
- 構建服務器: 拉取指定分支代碼
- 構建服務器: 安裝依賴
- 構建服務器: 執行構建
- 構建服務器: 如果上線流程,則在 git 上創建 tag,供回滾使用
- 構建服務器:打包 node 服務代碼,和靜態資源代碼
測試環境上線
- 構建服務器:執行構建
- jenkins:拉取打包好的靜態資源和 node 服務代碼
- jenkins: 靜態資源部署到測試服務器
- jenkins: node 服務代碼上傳到測試服務器
- 測試服務器:啟動服務(需要 root 權限來設置
host
)
沙箱環境上線
同測試環境上線流程
線上環境上線
- 構建服務器: 執行構建
- jenkins:拉取打包好的靜態資源和 node 服務代碼
- jenkins:靜態資源代碼上傳到線上
- jenkins:CDN 刷新
- jenkins:node 服務代碼上傳到線上
- 線上機器:啟動服務
項目約定與構建參數
發布流程的使用方式
傳入代碼分支與目標機器,服務即可部署到指定機器
項目約定
為了自動化程序能夠順利對項目進行構建,需要項目提供以下接口,接口命令可以為空,但是入口必須存在。
npm install
安裝項目依賴,安裝后的目錄在項目根目錄下的 node_modules
目錄中,如果有其他依賴需要安裝,需要在 postinstall
或 preinstall
中寫明。安裝階段構建工具只調用 npm install
一條命令。
npm run build
對項目進行構建,如需對靜態資源進行構建,一並在 build 命令中執行,如果存在靜態資源,靜態資源構建后的位置必須在項目文件夾內。
npm start
啟動 node 服務,用於在目標機器上執行,請注意 npm start
命令中應當包含關閉正在運行的本服務和重新服務兩步。
host 文件
如果需要對線上機器設置 host,測試環境和沙箱環境分別在 config/hosttest、config/hostsandbox 中寫明,格式即為 host 格式。
重要
不要依賴線上全局命令
除了 pm2 以外,線上不提供其他全局命令,如果需要此類命令,請在項目中自行依賴
規范 Pm2 的使用
建議使用 pm2 啟動服務,服務必須有應用名,在停止服務時,禁止使用 pm2 kill
,因為這個命令同時會關掉同機器上的其他服務
測試環境與沙箱環境的 host 設置
在某些 node 服務中,需要對環境的 host 進行設置,構建工具會讀取項目中的 config/hosts.yaml 自動對 host 進行修改
Host
只配置在測試機上需要的 host, 如代理后端服務的 ip,不要配置如 cdn 地址等瀏覽器端的 host
build 和 start 命令
build 和 start 命令必須是可以正常退出的命令,watch 等模式,會阻塞構建發布流程的執行
構建參數
此處的參數用於在 jenkins 處填寫 scm_project
填寫項目在 gitlab.58corp.com 下的分組及名稱,格式 “group/project” deploy_type
選擇部署類型static_name
靜態資源目錄,支持子目錄 online_machine
node 服務的線上資源地址,靜態資源自動發布到對應目錄下, 無需手動設置