内容简介:最近在研究GitHub上开源的区块链项目TrueChain,借助这个项目,完整的了解并参与基于区块链从技术原理到工程代码实现整个项目过程,抱着学习的态度去做一些新的尝试。环境准备自动化部署流程
最近在研究GitHub上开源的区块链项目TrueChain,借助这个项目,完整的了解并参与基于区块链从技术原理到工程代码实现整个项目过程,抱着学习的态度去做一些新的尝试。
环境准备
自动化部署流程
-
本地修改代码,提交到指定分支
-
Travis监听仓库改变
-
Travis执行install和script任务(这里可以做一些安装测试构建任务的依赖和测试构建命令)
-
任务执行成功后,在Travis的 after_success 钩子里面用 ssh免密登陆 服务器
-
自动在服务器上执行配置的脚本
-
完成自动部署
Travis项目配置
持续集成的目的是, 当我们进行需要进新项目发布的时候,想master分支进行push的时候,让Travis自动部署。
创建GitHub仓库,并完成项目的初始化,如果是已经有项目就可以直接开始部署,因之前有创建一个onela-dome项目,就以这个项目作为实例。
激活仓库
用Github账户登陆 Travis-CI 。Travis-CI会同步你的Github上面的所有仓库信息。
登陆之后会列出你的所有仓库:
SSH连接服务器
#新建用户,这里新建了一个www的账户useradd www#修改密码(应该不是必要,但是万一以后需要用密码登陆呢),按照提示设置密码。passwd www#为用户添加添加权限vim /etc/sudoers
找到#Allow root to run any commands anywhere这一段注释,在下面新增一行:
www ALL=(ALL) ALL# 使用root账户修改/etc/sudoers如果出现了 E45: 'readonly' option is set (add ! to override)错误:wq! # 强制保存退出
[root@trend ~]# su www[www@trend root]$ cd ~[www@trend ~]$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/www/.ssh/id_rsa): Created directory '/home/www/.ssh'.Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/www/.ssh/id_rsa.Your public key has been saved in /home/www/.ssh/id_rsa.pub.The key fingerprint is:f1:ed:a6:ce:c0:88:13:f2:b9:a8:07:0b:f2:68:06:a1 www@trendThe key's randomart image is:+--[ RSA 2048]----+| || || . ||. o . ||... . S . . ||E o + o . ||+= = . o o ||ooo. o o o ||+o. . .+ |+-----------------+[www@trend ~]$
可以看到生成密钥对在用户家目录的.ssh文件夹( /home/www/.ssh )下面。
由于 Linux 权限的控制规则,文件的权限不是越大越好,所有需要设置合适的权限。这里需要把 .ssh目录设置为700权限,给.sshm=目录下面的文件设置为600权限
[www@trend ~]$ chmod 700 ~/.ssh/[www@trend ~]$ chmod 600 ~/.ssh/*[www@trend ~]$ ls -altotal 24drwx------ 3 www www 4096 Sep 7 13:55 .drwxr-xr-x. 5 root root 4096 Sep 7 11:45 ..-rw-r--r-- 1 www www 18 Dec 7 2016 .bash_logout-rw-r--r-- 1 www www 193 Dec 7 2016 .bash_profile-rw-r--r-- 1 www www 231 Dec 7 2016 .bashrcdrwx------ 2 www www 4096 Sep 7 13:55 .ssh[www@trend ~]$ ls ~/.ssh/ -altotal 16drwx------ 2 www www 4096 Sep 7 13:55 .drwx------ 3 www www 4096 Sep 7 13:55 ..-rw------- 1 www www 1675 Sep 7 13:55 id_rsa-rw------- 1 www www 394 Sep 7 13:55 id_rsa.pub[www@trend ~]$
将生成的公钥添加为受信列表(重点)
[www@trend ~]$ cd .ssh/[www@trend .ssh]$ lsid_rsa id_rsa.pub# 公钥内容输出到authorized_keys[www@trend .ssh]$ cat id_rsa.pub >> authorized_keys[www@trend .ssh]$ cat authorized_keysssh-rsa AAAAB3NzaC1yc**************************************************************** www@trend
新增config文件
Host test HostName 99.99.99.99(你的服务器ip) #登陆的用户名 User www IdentitiesOnly yes #登陆使用的密钥 IdentityFile ~/.ssh/id_rsa
测试SSH登陆
# 测试ssh test [www@trend .ssh]$ ssh test Last login: Sun Sep 9 18:51:57 2018 Welcome to Alibaba Cloud Elastic Compute Service !
如果出现错误Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
请参考如下做法
# 修改sshd_config配置文件 vim /etc/ssh/sshd_config # 修改如下内容 RSAAuthentication yes PubkeyAuthentication yes # 这两项为打开公钥模式 AuthorizedKeysFile .ssh/authorized_keys # 配置公钥记录文件 PasswordAuthentication yes # 打开密码验证模式 # 保存文件,然后重启ssh /bin/systemctl restart sshd.service
在Linux服务器安装Travis客户端工具
安装Travis可以手动安装,依赖包是个麻烦事,所以这里使用使用了gem来装。gem是 ruby 的管理工具,所以服务器必须安装ruby,安装ruby的方式使用版本管理工具rvm,入门自动收集服务器的依赖功能很好用,缺少的依赖会自动安装。
1.先安装rvm 2.利用rvm安装ruby 3.使用gem工具安装Travis
RVM安装
RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。
这里所有的命令都是再用户权限下操作的,任何命令最好都不要用 sudo.
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3$ curl -sSL https://get.rvm.io | bash -s stable$ source ~/.bashrc$ source ~/.bash_profile# 安装完成之后检查是否安装成功$ rvm versionrvm 1.29.4 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
安装ruby
#使用rvm安装ruby,安装等待时间较长,下载速度不是很快 $ rvm install ruby # 查看ruby $ ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
【可选】修改gem镜像源,如果服务器能翻墙下载直接使用官方源(忽略这一步)
# 查询gem 镜像源地址 $ gem sources -l *** CURRENT SOURCES *** https://rubygems.org/ # 查看gem版本 $ gem -v 2.7.7 # 更换gem镜像源 $ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
安装travis命令行工具
# 安装travis$ gem install travis# 执行travistravis# 提示 Shell completion not installed. Would you like to install it now? |y|# 输入y,安装外壳
添加加密的私钥至代码仓库
获取到了github代码之后,在项目文件目录登录travis,然后创建travis加密证书,id_rsa.enc这个证书是经过travis加密了的,因为是私钥暴露到github公网之上,就必须经过加密处理才能保证安全。
# 首先用GitHub账户登陆travis travis login We need your GitHub login to identify you. This information will not be sent to Travis CI, only to api.github.com. The password will not be displayed. Try running with --github-token or --auto if you don't want to enter your password anyway. Username: Password for *********@qq.com:*********** Successfully logged in as zouwei! # 登录成功,解密私钥,--add参数会把加密的私钥解密命令插入到.travis.yml,Travis解密时要用到的 $ travis encrypt-file ~/.ssh/id_rsa --add encrypting /home/www/.ssh/id_rsa for zouwei/onela-demo storing result as id_rsa.enc # 由于我之前生成过,所有这里提示是否覆盖 DANGER ZONE: Override existing id_rsa.enc? |no| yes storing secure env variables for decryption Make sure to add id_rsa.enc to the git repository. Make sure not to add /home/www/.ssh/id_rsa to the git repository. Commit all changes to your .travis.yml. # 可以看到已经生成了加密后的私钥id_rsa.enc $ ls -al # 报文中出现出现私钥文件 …… -rw-rw-r-- 1 www www 1680 Sep 9 17:11 id_rsa.enc …… -rw-rw-r-- 1 www www 201 Sep 9 17:11 .travis.yml #.travis.yml中也自动添加了解密命令 $cat .travis.yml # 需要在travis.yml添加before_install之后的配置 language: node_js node_js: - '8' branchs: only: - master before_install: # 下面的encrypted_****,执行创建命令之后再服务器会自动成文件名,生成好的配置需要更新到项目里面去 openssl aes-256-cbc -K $encrypted_****_key -iv $encrypted_****_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
-in 参数指定待解密的文件,位于仓库的根目录(Travis执行任务时会先把代码拉到Travis自己的服务器上,并进入仓库更目录)
配置after_success钩子
前面的所有工作实都是准备工作,在.travis.yml中添加一些配置,主要是after_success钩子配置。修改之后的配置如下:
# .travis.yml language: node_js # 项目语言,travis能适配大部分语言 node_js: - 8.11.3 # 版本 branchs: only: - master script: - npm run test # 执行脚本,TrueChain项目使用的是 make getrue addons: ssh_known_hosts: - 114.55.249.*** #服务器IP地址,我这里做了隐藏处理,替换成你自己服务器的IP before_install: - openssl aes-256-cbc -K $encrypted_0690d495720c_key -iv $encrypted_0690d495720c_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d after_success: - chmod 600 ~/.ssh/id_rsa #Linux文件权限问题 - ssh www@114.55.249.*** -o StrictHostKeyChecking=no '~/update.sh sso' #使用ssh连接服务器
注意:使用 ssh 命令连接一定要设置StrictHostKeyChecking=no,否则第一次连接时依然会要求你确认。后面引号的内容就是登陆你的Linux服务器之后,在你的服务器执行的命令,你也可以写成一个脚本。只要登陆上服务器之后,就随你操作了。
-
可能有坑
# /home/www,www这个账户的权限必须控制,就算设置了StrictHostKeyChecking=no# 仍然需要密码登录,是由于权限配置问题造成的,[www@trend ~]$ chmod 700 ~/.ssh/[www@trend ~]$ chmod 600 ~/.ssh/*# 然后重启ssh[www@trend ~]$ /bin/systemctl restart sshd.service# 在www执行ssh重启必须输入root密码才能重启
写在最后
将加密的密钥文件和修改后的.travis.yml文件提交到master分支,访问 Travis 查看自动构建过程。过程任何一个小细节可能都会导致采坑,确实需要linux基本功的,这是个学习的过程,希望我与你一起,相互学习,一起成长。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用Fastlane对iOS项目持续集成(自动打包)
- Android美团多渠道打包Walle集成
- 【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)
- iOS 持续集成方案,傻瓜式一键全自动化打包、上传!告别 fastlane 、Jenkins
- 【前端打包部署】谈一谈我在SPA项目打包=>部署的处理
- Maven多模块项目打包前的一些注意事项(打包失败)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
RGB CMYK 转换工具
RGB CMYK 互转工具