CICD最簡實踐————github actions

優雅的王德奧發表於2020-10-15

你寫了一個部落格網站,在沒有配置CICD的時候。需要改動一些內容,你需要做下面幾件事

  1. npm run build等待編譯
  1. 開啟ftp客戶端,連線伺服器
  2. 找到打包檔案目錄,傳輸檔案

配置了CICD,你只需要做一件事情

  1. 提交程式碼

工作中常用的CICD工具有Gitlab CI,Travis CI等,場景也會更復雜。這裡使用github actions,不需要跑ci的伺服器。用最簡單的配置。實現github中提交程式碼,自動編譯,自動部署到自己的伺服器

一. 找到你要配置的github專案,建立工作流。

這時會在根目錄生成一個ci配置檔案.github/workflows/blank.yml

二.配置專案的secrets,供actions配置檔案使用

SSH_PRIVATE_KEY
1.登入到伺服器
2.cd ~/.ssh,如果有id_rsa和id_rsa.pub 檔案。代表以前配置過,跳過第三步
3.執行命令ssh-keygen -t rsa -C "your_email@example.com",這樣會生成id_rsa和id_rsa.pub
4.執行命令cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。將公鑰設定成authorized_keys的內容
5.最後將私鑰id_rsa的內容設定到secrets中

其他secrets

REMOTE_HOST	伺服器ip地址 199.199.222.22
REMOTE_USER	使用者名稱 root
TARGET 伺服器打包檔案位置,如nginx的 /home/master-ui/dist

三. 配置CI檔案
actions配置檔案:.github/workflows/blank.yml

部署是使用ssh-deploy

參考峰哥GitHub Actions 入門教程

name: CI demo
on: 
  push:
    branches:    
          - master
jobs:
  build:
    name: build 
    runs-on: ubuntu-latest
    steps:
      # 切換到master分支
      - name: checkout
        uses: actions/checkout@master
      # 使用 node:10
      - name: use Node.js 10
        uses: actions/setup-node@v1
        with:
          node-version: 10
      - name: npm install
        run: |
          npm install
      # 構建
      - name: npm build
        run: |
          npm run build
      # 部署
      - name: deploy
        uses: easingthemes/ssh-deploy@v2.0.7
        # 注入環境變數供ssh-deploy使用
        env:
          # secrets中配置的私鑰,用於免密連線伺服器
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          # 伺服器地址
          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
          # 使用者名稱
          REMOTE_USER: ${{ secrets.REMOTE_USER }}
          # 部署路徑
          TARGET: ${{ secrets.TARGET }}
          # 打包檔案來源
          SOURCE: "dist/"
          # 刪除伺服器上TARGET目錄裡所有檔案
          ARGS: "-avz --delete"

Done

相關文章