真香!GitHub Action一鍵部署

HerryLo發表於2019-12-17

本文原文連結

最近由於自己的個人應用增加,每次都需要在伺服器手動釋出,覺得特別麻煩,所以想通過程式碼控制自動釋出,直接選擇了GitHub Action

GitHub Action持續整合服務,目前已經免費開放使用,由於大部分人的個人專案都是放在github上,那麼使用它來發布、測試、部署,是非常方便的。

個人應用:個人部落格網站Copy Google 效能優化進行中,歡迎交流??

#Github Action配置

下面的內容預設你已經會建立Github Action,官方提供了很多Github Action 配置模版,可以根據自己的需求隨意選擇,不是太瞭解的可以先參考阮一峰 GitHub Actions入門教程,瞭解一下Github Action。

我們來看看Github Action配置檔案的基本構成,配置檔案格式是.yml,示例如下:

# main.yml
# 一個 workflow,名字為Github Action Example
name: Github Action Example

# 觸發 workflow 的事件
on:
  push:
    # 分支隨意
    branches:
      - master

# 一個workflow由執行的一項或多項job
jobs:
    # 一個job任務,任務名為build
    build:
        # runs-on 指定job任務執行所需要的虛擬機器環境(必填欄位)
        runs-on: ubuntu-latest
        # steps是每個Job的執行步驟,可以包含一個或多個步驟
        steps:
            # action命令,切換分支獲取原始碼
            - name: Checkout
                # 使用action庫  actions/checkout獲取原始碼
                uses: actions/checkout@master
            # action命令,安裝Node10
            - name: use Node.js 10
                # 使用action庫  actions/setup-node安裝node
                uses: actions/setup-node@v1
                with:
                    node-version: 10
            # action命令,install && test
            - name: npm install and test
                # 執行的命令或者 action
                run: |
                    npm install
                    npm run test
                # 環境變數
                env:
                    CI: true
複製程式碼
  • Action是工作流中最小的可移植構建塊。你可以建立自己的動作,使用從GitHub社群共享的action庫,以及自定義公共action庫。

  • Step是Job執行的一組任務。Job中的每個步驟都在同一執行程式中執行,從而允許該Job中的操作使用檔案系統共享資訊,Step可以執行命令或action。

  • Job由Step構成。你可以定義工作流檔案中Job的執行方式的依賴關係規則。Job可以同時並行執行,也可以依賴於先前Job的狀態依次執行。

  • Workflow由一個或多個Job組成,可以通過事件進行計劃或啟用。你可以在儲存庫中設定一個可配置的自動化過程,以在GitHub上構建,測試,打包,釋出或部署任何專案。

Github: Github Action外掛查詢庫,可以查詢你需要的action庫,這些都是共享的,如果滿足不了需求也可以自己定義。

#Github Action釋出阿里雲ECS

下面就是我釋出到阿里雲ECS的 Github Action配置檔案

我的Github Action服務配置

# main.yml
name: deploy to aliyun
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 切換分支
      - name: Checkout
        uses: actions/checkout@master
      # 下載 git submodule
      - uses: srt32/git-actions@v0.0.3
        with:
          args: git submodule update --init --recursive
      # 使用 node:10
      - name: use Node.js 10
        uses: actions/setup-node@v1
        with:
          node-version: 10
      # npm install
      - name: npm install and build
        run: |
          npm install
          npm run build
        env:
          CI: true
      # Deploy
      - name: Deploy
        uses: easingthemes/ssh-deploy@v2.0.7
        env:
          SSH_PRIVATE_KEY: ${{ secrets.ACCESS_TOKEN }}
          ARGS: "-avz --delete"
          SOURCE: "[Current File Dir]"
          REMOTE_HOST: "[Domain]"
          REMOTE_USER: "[UserName]"
          TARGET: "[Server Dir]"
複製程式碼

以上是我的配置檔案,action外掛請根據自己的需求合理選擇。我是要部落格網站,釋出到阿里雲服務上,所以採用以上配置,而最後的action Deploy中action外掛的選擇,也是根據需求,在Github: action外掛庫中選擇的。

補充注意⚠️:如果你是要釋出到阿里雲伺服器,同時也使用以上配置action檔案,請記住:ACCESS_TOKEN 是伺服器ssh金鑰對的私鑰部分應將伺服器公鑰部分新增到接收部署的伺服器上的authorized_keys檔案中正常情況下,ACCESS_TOKEN 是 伺服器 ~/.ssh目錄下的id_rsa 檔案中 的內容。仔細看一下https://github.com/marketplac... 文件中的欄位配置描述?

#更多

使用GitHub Actions釋出Hexo網站到GitHub Pages

GitHub Actions釋出部落格到阿里雲OSS

GitHub Actions自動構建映象並推送到阿里雲容器映象服務

#參考

Core concepts for GitHub Actions

阮一峰: GitHub Actions 入門教程

ps: 微信公眾號:Yopai,有興趣的可以關注,每週不定期更新。不斷分享,不斷進步

真香!GitHub Action一鍵部署


相關文章