初探Travis
初探cicd
什么是cicd?
- cicd是持续集成和持续交付的缩写,全称为continuous integration & continuous delivery
cicd怎么做
- 通过一些工具,来进行
这些工具做了哪些事
- 将我们平时手动去跑的测试、打包、部署,全部通过前期配置,然后在以后的开发中,自动去执行,解放双手
- 举个vue项目的例子:
1
2
3
4# 本地:对项目打包,(正规点还要跑一边测试)这些都没问题后,然后推送到远程仓库
npm run build -> git push
# 服务器:进入对应的目录,然后拉去仓库的代码
git pull - 如果做好cicd的流程后,只需要git push代码就好,剩下的都会在集成工具里去根据配置文件,去自动执行,这个过程哪一步出现问题都会有对应的log文件
目的
工作流程
ci:集成部分
- 用github登陆Travis,指定我们需要进行集成的仓库
- 在该仓库的项目中添加.travis.yml配置文件
- 在配置文件中,配置当我们git push后,需要travis去做的事
cd:部署部分
- 这里使用ssh密钥免密登陆服务器的原理,来让travis可以免密登陆指定服务器
- 关于ssh登陆的流程和原理:在要登录服务器的机器生成一对秘钥,一公一私,公钥保存到目标服务器,私钥只能自己本地知道;然后当ssh连接目标服务器时,服务器会返回一段用公钥加密的字符串;客户端收到后,用私钥解密;然后在使用私钥加密该字符串,在发送给服务器,服务器使用公钥解密后,确认是自己之前传递的内容,确认成功进行连接
- 关于ssh:安全外科协议,使用非对称加密来进行身份验证
本地操作
项目
- 创建项目,git初始化,添加.travis.yml文件
- git push到github
- 登陆travis,在设置页中,找到对应的仓库,并打开后面的按钮,如图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# .travis.yml
# 指定项目语言
language: node_js
# 指定版本
node_js:
- 10
# 指定分支:这样只有该分支发生变动后,才会进行操作
branches:
only:
- serverBackup
# 安装依赖:如果需要
# install:
# - npm install
# 运行脚本
script:
- echo "test"说明
- travis的配置文件是YAML语法
- travis的执行阶段(生命周期)分为:(括号的为可选阶段)
- before_install -> install ->before_script -> script -> aftersuccess or afterfailure ->(before_deploy->deploy->after_deploy)->after_script
- 安装依赖前->安装依赖->执行脚本之前->执行脚本->脚本执行成功后 或者 执行失败后->(部署前->部署->部署后)->脚本执行完成后
- travis每一阶段执行成功后才继续下一步,如果失败立即停止
服务端操作
Linux添加新用户/赋予root权限
- 这里不要换成root创建,用普通用户使用sudo命令添加新用户即可
1
2
3
4
5
6
7
8
9# 添加用户
sudo adduser 用户名
# 按提示操作
# 给该用户赋予root权限
# 编辑该文件
vim /etc/sudoers
# 在改行注释下添加
# User privilege specification
用户名 ALL=(ALL:ALL) ALL
生成SSH秘钥
1 |
|
设置该文件权限为700
1 |
|
配置连接
1 |
|
1 |
|
安装travis
travis是ruby写的,所以需要安装ruby环境
安装rvm:ruby的版本管理工具,类似npx
1 |
|
安装ruby和gem—ruby的包管理工具
1 |
|
安装travis命令行工具
1 |
|
添加目标服务器
- 这里就在配置文件中添加一下目标服务器ip,和登陆后要进行的操作即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17language: node_js
node_js:
- 10
branches:
only:
- serverBackup
script:
- echo "test"
before_install:
- openssl aes-256-cbc -K $encrypted_5ec1b68e2d5b_key -iv $encrypted_5ec1b68e2d5b_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
addons:
ssh_known_hosts:
- ip地址或者域名
after_success:
- chmod 600 ~/.ssh/id_rsa
- ssh publish@shuaxinjs.cn -o StrictHostKeyChecking=no 'cd /home/publish/data/shuaxindiary.github.io && git pull'
参考链接
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!