github或gitee等dev cloud使用actions通過yml配置實現自動化部署

a@serfend發表於2020-12-02

什麼是CI

**CI又稱為work flow,是一種自動化執行工具。**多數程式碼開發平臺,例如 gitee,github,gitlab,azure devcloud都有類似於actions的功能,用於滿足使用者自定義的條件時,自動化執行一些工作,比如 自動化部署,檢查語法,通知到微信等。
github為例,我們只需要在專案的actions介面下,新建或選擇一個yml方案,即可實現眾多功能。
在這裡插入圖片描述
在這裡插入圖片描述

如何配置CI

名稱示例樣例值含義
nameCI檔案的名稱
on何時觸發此CI
envNODE_VERSION: “10.x”CI檔案全域性變數
jobs觸發後執行的操作,後跟多個鍵,表示執行哪些工作。注意:這些工作是同時進行的

on: 例如 push: branches:[main]:表示main分支在進行push操作的時候觸發

jobs:例如 build2333: 此處build2333是自定義的一個工作
其中,單個job的引數包括:

名稱示例樣例值含義
namebuild本工作的名稱
runs-onubuntu-latest在什麼環境執行
steps本工作所有的步驟

steps:每個步驟都必須要有runuses鍵的其中一個,表示此步驟需要執行或呼叫什麼。
name,with,env 這些鍵是非必須的,可以根據情況新增。

要了解yml檔案的更多語法,可參看微軟文件

編寫完成後提交到倉庫,github將會自動開始執行全部步驟
在這裡插入圖片描述
在這裡插入圖片描述

樣例配置檔案

# CI name , it will display on github's action page menu
name: web deploy by ftp
# trigger on which this CI should be run
on:
	# push operation is operate
  push: 
    # here since my repository branch is named `main` , you should follow your own repository like `master`
    branches: [main] 
# CI enviroment settings
env:
  NODE_VERSION: "10.x" # custom arg of node.js's version
jobs:
  build:
    name: 構建,釋出
    runs-on: ubuntu-latest # use latest ubuntu to run the job
    steps:
      # here are some step followed , each step must have `uses` or `run` key , for CI to run
      # other key like `name`,`with`,`env` is optional
      - uses: actions/checkout@v2
        name: 初始化 checkout
      # Runs a single command using the runners shell
      - name: 測試ci單行
        run: echo Hello, world!

      # Runs a set of commands using the runners shell
      - name: 測試ci多行
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.
      - name: 使用 Node.js ${{ env.NODE_VERSION }} 構建包
        uses: actions/setup-node@v1
        with:
          node-version: ${{ env.NODE_VERSION }}
      - name: 構建執行
        run: |
          npm install
          npm run lint
          npm run build:stage
      # i use `SamKirkland/FTP-Deploy-Action@4.0.0` for ftp deploy
      # you can referer to github.com/SamKirkland/FTP-Deploy-Action for more infomation
      - name: 靜態釋出到ftp
        uses: SamKirkland/FTP-Deploy-Action@4.0.0
        with:
          # `${{arg}}` is a template from which you set in `secrets` menu
          # as `yml` file is follow .git upload to github ,`secrets` is to prevent your sensitive infomation from exposed to public
          server: ${{ secrets.FTP_HOST }}  
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          local-dir: ./dist/
          server-dir: /kitsune/

      - name: 完成
        run: echo deploy by ftp

相關文章