真香!GitHub Action一鍵部署

本文原文連接html

最近因爲本身的我的應用增長,每次都須要在服務器手動發佈,以爲特別麻煩,因此想經過代碼控制自動發佈,直接選擇了GitHub Actionnode

GitHub Action持續集成服務,目前已經免費開放使用,因爲大部分人的我的項目都是放在github上,那麼使用它來發布、測試、部署,是很是方便的。git

#Github Action配置

下面的內容默認你已經會建立Github Action,官方提供了不少Github Action 配置模版,能夠根據本身的需求隨意選擇,不是太瞭解的能夠先參考阮一峯 GitHub Actions入門教程,瞭解一下Github Action。github

咱們來看看Github Action配置文件的基本構成,配置文件格式是.yml,示例以下:npm

# 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庫ubuntu

    ,以及自定義公共action庫。

  • Step是Job執行的一組任務。Job中的每一個步驟都在同一運行程序中執行,從而容許該Job中的操做使用文件系統共享信息,Step能夠運行命令或action。bash

  • Job由Step構成。你能夠定義工做流文件中Job的運行方式的依賴關係規則。Job能夠同時並行運行,也能夠依賴於先前Job的狀態依次運行。服務器

  • Workflow由一個或多個Job組成,能夠經過事件微信

    進行計劃或激活。你能夠在存儲庫中設置一個可配置的自動化過程,以在GitHub上構建,測試,打包,發佈或部署任何項目。

Github: Github Action插件查詢庫ssh

,能夠查詢你須要的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插件庫

中選擇的。

#更多

使用GitHub Actions發佈Hexo網站到GitHub Pages

GitHub Actions發佈博客到阿里雲OSS

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

#參考

Core concepts for GitHub Actions

阮一峯: GitHub Actions 入門教程

ps: 微信公衆號:Yopai,有興趣的能夠關注,每週不按期更新。不斷分享,不斷進步

相關文章
相關標籤/搜索