前言
把一个SpringBoot编译成jar部署到服务器分为几步?答:3步。
1、打成压缩包;
2、SCP 上传到服务器;
3、SSH 解压;
如果使用持续集成,则可以实现提交代码时自动上线,原理如下图:
DevOps自动上线原理
常见的持续集成有:商业化的 CircleCI、开源的 Jenkins
本文以小编公司使用的 Jenkins 云服务-Coding为例
coding持续集成说明地址
https://coding.net/products/ci” />进入正题-实战演示
注册CODING,创建一个 Git 仓库,提交代码;(5人以下免费,已经很不错了)
注册地址:https://coding.net
服务器创建SSH公私钥
命令如下:
ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com"
创建好后会在目录/root/.ssh生成两个文件(id_rsa是私钥|id_rsa.pub是公钥)
[root@VM_0_3_centos .ssh]# pwd/root/.ssh[root@VM_0_3_centos .ssh]# lltotal 16-rw------- 1 root root743 Apr 10 14:32 authorized_keys-rw------- 1 root root 3243 Apr 10 13:20 id_rsa-rw-r--r-- 1 root root742 Apr 10 13:20 id_rsa.pub
需要把公钥id_rsa.pub复制到authorized_keys文本中,另外需要把 id_rsa私钥配置到:项目设置——凭据管理(类型选择私钥)
这样就完成了SSH无密码连接
然后开始构建项目信息配置
进入coding构建与部署模块,【流程配置】用编译器编写SSH语法pipeline
jenkins官网语法介绍SSH Pipeline语法地址:
https://jenkins.io/doc/pipeline/steps/ssh-steps/
示例如下:
pipeline {agent anystages {stage('检出') {steps {checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])}}stage('部署') {steps {echo '部署中...'script {def remote = [:]remote.name = 'web-server'remote.allowAnyHosts = trueremote.host = '106.54.18.228'remote.user = 'root'// 需要先创建一对 SSH 密钥,把私钥放在 CODING 凭据管理,把公钥放在服务器的 `.ssh/authorized_keys`,实现免密码登录withCredentials([sshUserPrivateKey(credentialsId: "d770d752-6d95-4936-9936-77da68a00736", keyFileVariable: 'id_rsa')]) {remote.identityFile = id_rsa// SSH 上传文件到远端服务器sshCommand remote: remote, command: "sh /opt/test.sh"sshCommand remote: remote, command: "for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done"}}echo '部署完成'}}}}
最终构建成功打印结果(和jenkins控制台日志输出很像)
附jenkins控制台日志输出对比
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!