阅读 938

手把手教你撸自动部署 --- Travis CI

前段时间研究了一下自动部署的方案,先是用node写了一个简单粗暴的脚本,但发现这样并不够优雅,于是看了下Jenkins,发现搭建成本略高(实际Jenkins很香),由于我是基于自己的项目来考虑方案,最后决定使用Travis作为方案。

Travis

想要使用Travis,首先你得有一个GitHub账号,然后登录Travis官网。选择GitHub账号登录,如图:

image.png

之后导入你的仓库,让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等。

这里给个模板:

# 规定语言 这里我们前端自然是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官网进行配置,如图

image.png

完整的生命周期:

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 里对应的提交记录会有对应的状态如图:

image.png

你也可以在Travis官网查询到,如图:

image.png

注意事项

笔者在建立好Travis和git仓库的关联并且配置好yml文件后,发现push没生效但是隔了一天又可以了(延迟?),这里暂时还不知道什么原因,有大佬知道还请不吝赐教。

文章分类
前端
文章标签