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 }}