使用github actions 完成一些自动化工作
github actions 是什么?
github actions是github的持续集成及自动化工作流服务,使用起来都比较方便。大部分github actions都可以在https://github.com/marketplace?type=actions中找到。
怎么使用github actions
怎么使用
在github项目目录下,根目录下新建一个文件.github/workflow/xxx.yml,在xxx.yml写你需要自动化工作流的服务。
有问题多查查以下两个文档:
基本语法
name: github action的名字
on:
push:
branches:
- 触发部署的分支
paths:
- 下列文件的变更触发部署
paths-ignore:
- 下列文件的变更不触发部署
jobs: 工作流程运行包括一项或多项作业。 作业默认是并行运行。
deploy:
runs-on: 使用的系统镜像
steps: 自动化步骤
- name: 步骤名字
uses: 使用封装好的步骤镜像
env: 环境变量
环境变量的 map 可用于工作流程中的所有作业和步骤
with:
有些操作要求必须通过 with 关键词设置输入。 请查阅操作的自述文件,确定所需的输入。
run: |
要运行的脚本
几个使用的例子
-
1、部署到阿里云
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
-
2、部署轮子到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 }}