最近尝试通过Jenkins来自动化部署项目,没想到还踩了很多坑。Jenkins部署的基本原理:
通过Jenkins服务器拉取gitlab上的代码进行打包,推送到目标服务器上,并运行启动脚本。
那么Jenkins就要解决三个问题。
1.连接上目标服务器
2.进行打包,并推送到目标服务器对应的目录。
3.运行启动脚本。
一、首先来解决第一个问题,连接上远程服务器。
1、Jenkins服务器要能ping的通目标服务器。
2、Jenkins服务器要能telnet 目标服务器的22端口。
3.在Jenkins生成密钥,它是一个公钥和私钥对,执行命令:
ssh-keygen -t rsa
/.ssh/id_rsa.pub
将公钥复制到目标服务器 /root/.ssh 目录下的 authorized_keys 文件 和
id_rsa.pub 文件。如果 /root/.ssh 不存在这两个文件,就手动创建。
这里的坑一: authorized_keys内容不允许有换行,如果有换行,就需要手动删除换行。
坑二:authorized_keys的权限必须是600 , id_rsa.pub 为700 ,同时这个目录权限必须是 700。
你随便给多权限是连接不了的 比如你给个 755 或者 777.都是不行的。
可以直接使用命令:
chmod 700 /root/.ssh
cd /root/.ssh
chmod 600 authorized_keys
chmod 700 id_rsa.pub
这就配合好Jenkins服务器到目标服务器连接的秘钥。
接下来需要在Jenkins管理配置上配置上连接目标服务器的操作。
进入Jenkins,点击“Manager Jenkins”
点击“Configure System”
在”SSH Servers”中新增服务器,配置如下图
这个就是jenkins服务器成的私钥。
配置好后,点击测试配置
如果是sucess说明 jenkins服务器已经可以连接上目标服务器。
二、 通过Jenkins来打包代码并推送到远程服务器。
1、新建一个item
然后在配置项里配置项目的打包推送信息
General是构建任务的一些基本配置。名称,描述之类的。
项目名称: 是刚才创建构建任务步骤设置的,当然在这里也可以更改。
描述: 对构建任务的描述。
源码管理是配置代码存放的位置。
Respository URL: 填写项目的Git地址
Credentials: 凭证,相当于用户,可以使用HTTP方式的用户名密码,也可以是RSA文件。建议直接选择root。
Branches to build:构建的分支。*/master表示master分支,也可以设置为其他分支。
源码浏览器:你所使用的代码仓库管理工具,如github, gitlab。可以选择“自动”。
上面是描述打包推送到目标服务器的配置
三、运行启动的脚本配置
这个是描述在目标服务器运行的启动脚本。