本文原文连接html
最近因为本身的我的应用增长,每次都须要在服务器手动发布,以为特别麻烦,因此想经过代码控制自动发布,直接选择了GitHub Action。node
GitHub Action持续集成服务,目前已经免费开放使用,因为大部分人的我的项目都是放在github上,那么使用它来发布、测试、部署,是很是方便的。git
下面的内容默认你已经会建立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
Step是Job执行的一组任务。Job中的每一个步骤都在同一运行程序中执行,从而容许该Job中的操做使用文件系统共享信息,Step能够运行命令或action。bash
Job由Step构成。你能够定义工做流文件中Job的运行方式的依赖关系规则。Job能够同时并行运行,也能够依赖于先前Job的状态依次运行。服务器
Workflow由一个或多个Job组成,能够经过事件微信
下面就是我发布到阿里云ECS的 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自动构建镜像并推送到阿里云容器镜像服务
Core concepts for GitHub Actions
ps: 微信公众号:Yopai,有兴趣的能够关注,每周不按期更新。不断分享,不断进步