前段时间研究了一下自动部署的方案,先是用node写了一个简单粗暴的脚本,但发现这样并不够优雅,于是看了下Jenkins,发现搭建成本略高(实际Jenkins很香),由于我是基于自己的项目来考虑方案,最后决定使用Travis作为方案。
Travis
想要使用Travis,首先你得有一个GitHub账号,然后登录Travis官网。选择GitHub账号登录,如图:
之后导入你的仓库,让Travis监听即可。
回到你的项目里新建.travis.yml文件,被Travis监听的仓库,每当push时(默认监听master分支),会执行yml里对应的脚本。
YAML (YAML Ain't a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C , Ruby, Python, Perl, C#, PHP等。
这里给个模板:
代码语言:javascript复制# 规定语言 这里我们前端自然是nodejs 其他语言填对应语言即可
language: node_js
# 指定node版本 Travis会使用nvm管理node版本
node_js:
- "14"
# 指定作用分支(一般默认master)
branchs:
only:
- master
# install 阶段:安装依赖 (这个阶段会按顺序执行脚本,只要有一步失败就会终止,如果有指定jobs这里可以不要,看个人)
install:
- npm install --registry=https://registry.npm.taobao.org
- echo "install successed"
# script 字段用来指定构建或测试脚本(这个阶段的脚本有一步失败了,后面也会继续,但整个构建阶段的状态是失败;如果有指定jobs这里可以不要,看个人)
script:
- npm run build
# 指定操作系统
os:
- linux
# 这里相当于自己定义工作顺序
stages:
- test
- name: deploy
# 指定工作
jobs:
# 包含哪些
include:
# 阶段名称
- stage: test
# 运行脚本
script:
- node --version
- npm --version
- echo "Testing Started ..."
- npm test
- echo "Testing Finished."
- stage: deploy
script:
- echo "NPM Deploying Started ..."
- git clone https://${GH_REF}
- cd vue-dark-photo
- git branch
- git checkout travis
- git rebase master
- npm version patch
- npm install --registry=https://registry.npm.taobao.org
- npm run build
- echo "NPM Building Finished."
# 这里是发布npm包(举例),指定你的邮箱(会通知你),api_key(你的npm token,这个一般在.npmrc会有,前提是你在本地登录过npm)
deploy:
provider: npm
email: "${EMIAL}"
api_key: "$NPM_TOKEN"
skip_cleanup: true
on:
all_branches: true
# script 阶段之后执行
after_script:
- git config user.name "travis"
- git config user.email "${EMIAL}"
- git add .
- git commit -m "Travis CI Auto Builder"
- git status
- git push "https://${GH_TOKEN}@${GH_REF}" travis:travis
有些地方使用了变量,可以在Travis官网进行配置,如图
完整的生命周期:
代码语言:javascript复制before_install
install
before_script
script
aftersuccess or afterfailure
[OPTIONAL] before_deploy
[OPTIONAL] deploy
[OPTIONAL] after_deploy
after_script
当配好脚本,在项目master分支中push,Travis会监听到对应变化,并查询.travis.yml文件执行脚本,成功或失败你的git commit 里对应的提交记录会有对应的状态如图:
你也可以在Travis官网查询到,如图:
注意事项
笔者在建立好Travis和git仓库的关联并且配置好yml文件后,发现push没生效但是隔了一天又可以了(延迟?),这里暂时还不知道什么原因,有大佬知道还请不吝赐教。