travis ci推送文件到自己的服务器

有的时候需要在travis上推送文件到我们自己的服务器,但是这需要我们服务器的密码或者秘钥,但是放在库中可能不安全。所以要用到travis client来加密。

1.安装travis client

  • 1.yum install ruby
  • 2.ruby -v
  • 3.gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
  • 4.curl -sSL https://get.rvm.io | bash -s stable
  • 5.rvm -v
  • 6.rvm install 2.6
  • 7.gem install travis --no-document

2.使用travis client

2.1登录

travis login --com,也可以是–org,看自己的账号在哪个平台。

2.2加密文件

travis encrypt-file ~/.ssh/id_rsa --add,这个就是把本机的~/.ssh/id_rsa文件加密,这样我们就不会暴露我们原本的文件。
注意,这里加密完成之后会新建一个id_ras.enc文件,只需要把这个文件加到库中,id_ras不能加到库中。
这个命令还会自动修改我们的travis.yml会加上一行openssl aes-256-cbc -K $encrypted_f217180e22ee_key -iv $encrypted_f217180e22ee_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d类似的,这个命令就是在build期间,把加密的文件复原。

3.修改脚本

还需要稍微修改我们的脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
language: node_js
node_js:
  - "node"

before_install:
  - openssl aes-256-cbc -K $encrypted_f217180e22ee_key -iv $encrypted_f217180e22ee_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
  - chmod +x travis.sh

# 为了跳过known_hosts
addons:
  ssh_known_hosts:
  - 11.22.33.44

script:
  - chmod 600 ~/.ssh/id_rsa
  - ./travis.sh
1
2
3
4
5
6
7
8
#!/bin/bash

hugo
# 调试ssh连接
# ssh -v root@11.22.33.44
# 注意:scp会传输,但是不会显示在日志里面
scp -r public/* root@11.22.33.44:/root/Workspace/nginx/html/hugo
echo "传输完成"

参考资料