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