使用github actions 完成一些自動化工做

github actions 是什麼?

github actions是github的持續集成及自動化工做流服務,使用起來都比較方便。大部分github actions均可以在https://github.com/marketplace?type=actions中找到。node

怎麼使用github actions

怎麼使用

在github項目目錄下,根目錄下新建一個文件.github/workflow/xxx.yml,在xxx.yml寫你須要自動化工做流的服務。git

有問題多查查如下兩個文檔:github

基本語法

GitHub Actions 官方文檔ubuntu

name: github action的名字

on:
  push:
    branches:
      - 觸發部署的分支  
    paths:
    	- 下列文件的變動觸發部署
    paths-ignore:   
      - 下列文件的變動不觸發部署

jobs: 工做流程運行包括一項或多項做業。 做業默認是並行運行。
  deploy:

    runs-on: 使用的系統鏡像

    steps:  自動化步驟
    
    - name: 步驟名字
      uses: 使用封裝好的步驟鏡像
      env: 環境變量
        環境變量的 map 可用於工做流程中的全部做業和步驟
      with: 
      	有些操做要求必須經過 with 關鍵詞設置輸入。 請查閱操做的自述文件,肯定所需的輸入。
      run: |
      	要運行的腳本

幾個使用的例子

  • 一、部署到阿里雲api

    name: deploy to aliyun
    
    on:
      push:
        branches:
          - ali-ecs  # 只在ali-ecs上push觸發部署
        paths-ignore:   # 下列文件的變動不觸發部署,能夠自行添加
          - README.md
          - LICENSE
    
    jobs:
      deploy:
    
        runs-on: ubuntu-latest   # 使用ubuntu系統鏡像運行自動化腳本
    
        steps:  # 自動化步驟
        - uses: actions/checkout@v2   # 第一步,下載代碼倉庫
    
        - name: Deploy to Server  # 第二步,rsync推文件
          uses: AEnterprise/rsync-deploy@v1.0  # 使用別人包裝好的步驟鏡像
          env:
            DEPLOY_KEY: ${{ secrets.ACCESS_TOKEN }}   # 引用配置,SSH私鑰
            ARGS: -avz --delete   # rsync參數
            SERVER_PORT: '22'  # SSH端口
            FOLDER: ./  # 要推送的文件夾,路徑相對於代碼倉庫的根目錄
            SERVER_IP: ${{ secrets.REMOTE_HOST }}  # 引用配置,服務器的host名(IP或者域名domain.com)
            USERNAME: ${{ secrets.SSH_USERNAME }}  # 引用配置,服務器登陸名
            SERVER_DESTINATION: /home/zhihu-api  # 部署到目標文件夾
        - name: Restart server   # 第三步,重啓服務
          uses: appleboy/ssh-action@master
          with:
            host: ${{ secrets.REMOTE_HOST }}  # 下面三個配置與上一步相似
            username: ${{ secrets.SSH_USERNAME }}
            key: ${{ secrets.ACCESS_TOKEN }}
            # 重啓的腳本,根據自身狀況作相應改動,通常要作的是migrate數據庫以及重啓服務器
            script: |
              cd /home/zhihu-api
              npm install 
              npm run start
  • 二、部署輪子到npm服務器

    name: publish
    
    on:
      push:
        branches: master
        paths:
            - 'lib/*'
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - uses: actions/setup-node@v1
          with:
            node-version: '12'
            registry-url: 'https://registry.npmjs.org'
        - name: Release
          run: |
            git config --local user.email "action@github.com"
            git config --local user.name "GitHub Action"
            npx version-from-git --allow-same-version --template 'master.short'
        - name: Publish to npmjs
          run: | 
            npm publish --access public
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
相關文章
相關標籤/搜索