ubuntu 下搭建 Jenkins 并配置部署环境

环境说明

两台主机

  • 本地服务器 192.168.1.17 jenkins服务器及dev环境
  • 阿里云 :112.74.184.170 代码仓库及上线环境

思路:
我想实现用本地的jenkins服务器控制dev环境和线上release环境
由于手头服务器有限,所以jenkins服务器和dev环境在同一台服务器上
release环境和代码仓库在同一台服务器上

ubuntu 安装 JDK

ubuntu的安装我们采取最简单的方式安装 直接用apt-get的方式

//添加java的ppa
sudo add-apt-repository ppa:webupd8team/java
//更新软件源
sudo apt-get update
//安装java8
sudo apt-get install oracle-java8-installer

安装器会提示你同意 oracle 的服务条款,选择 ok
然后选择yes 即可

ubuntu 安装tomcat8

通过apt安装 tomcat8

sudo apt-get install tomcat8 tomcat8-docs tomcat8-examples tomcat8-admin -y

安装完成后的配置文件放置在/var/lib/

#启动
service tomcat8 start
#状态
service tomcat8 status
#停止
service tomcat8 stop

配置管理员的权限

sudo vim /var/lib/tomcat8/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="root" password="123456" roles="manager-gui,admin-gui"/>

重启服务测试

service tomcat8 restart

安装Jenkins

参考官网 https://pkg.jenkins.io/debian-stable/

这里我们使用Jenkins的官方提供的软件仓库,要使用官方的软件仓库之前必须将软件仓库的秘钥添加到本地

#添加官方软件仓库的秘钥到本地的apt秘钥中
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

将官方提供的软件仓库地址加入到本地的apt软件源中,本地用于存放软件源的文件在/etc/apt/sources.list

#将地址添加进本地的软件源列表
$ deb https://pkg.jenkins.io/debian-stable binary/

更新我们本地的软件源缓存,然后直接安装jenkins

$ sudo apt-get update
$ sudo apt-get install jenkins

启动jenkis

sudo /etc/init.d/jenkins [start|restart|stop]

安装jenkins

打开我们的浏览器输入jenkins的服务器地址,在这里我的是192.168.1.17
http://192.168.1.17:8080
但是呢有时候这个端口就会被万恶的tomcat占用我们不得不修改jenkins的端口(此时如果你打开的是jenkins此步骤可以省略)
修改jenkins端口

$ sudo vim /etc/default/jenkins

#修改如下内容
HTTP_PORT=8085

#重启jenkins服务
$ sudo /etc/init.d/jenkins restart

首次进入jenkins如要输入密码,密码位置:/var/lib/jenkins/secrets/initialAdminPassword

插件安装

点击“Install suggested plugins”,即安装推荐的插件:

开始安装插件,安装插件比较慢,要多等一会儿

额...科学上网会快很多哦!!!

创建管理员账户

创建任务


由于我不需要什么后台的编译只需要编译node,所以我直接选择了利用shell脚本去构建,所以我甚至都不需要配置git,全部shell就可以了

填入我们需要执行的shell脚本(本人小白一个shell写的太烂,大家不要介意,原谅我吧!)

保存之后,点击立即构建,你会发现死活都编译不过去,各种失败!接下来我们逐个击破它!

没有权限的问题

在Ubuntu下,当执行apt-get install方式安装Jenkins的时候,会自动创建jenkins用户,这是一个没有用户目录的账号。
可想而知jenkins用户肯定是没有什么权限的,所以我们要想办法让jenkins用shuoer账户运行

将shuoer用户添加到jenkins用户组中,让shuoer用户拥有管理jenkins的权限

$ sudo gpasswd -a shuoer jenkins


现在root可以管理jenkins了,我们需要配置jenkins的配置文件让jenkins用shuoer身份运行,配置文件在/etc/default/jenkins

JENKINS_USER=shuoer
JENKINS_GROUP=shuoer

ok,重启jenkins

$ sudo /etc/init.d/jenkins restart


由于jenkins的工作目录在/var/lib/jenkins我们查看下它的所属用户和所属组

这里显然是不对的,由于我们把jenkins的默认运行用户改成了shuoer,接着改

$ sudo chown -R shuoer:shuoer /var/lib/jenkins


再重启jenkins

$ sudo /etc/init.d/jenkins restart

ok,没毛病了,开始构建

构建远程服务器

以上都是构建本地,也可以认为是dev环境,假如需要构建test环境怎么办?(假设test服务器在阿里云)
可以借助ssh的强大功能,ssh不仅能登陆远程主机,还可以在不登陆远程主机的情况下让远程主机执行命令,借助这个特性我们可以做很多的事情!比如自动化!等等!
ssh 远程主机用户名@主机地址 "需要执行的命令"(前提是必须要做到免密登陆哦)
举个例子:

#这样就可以在不登陆的情况下把远程主机的磁盘使用情况给我们输出出来
ssh shuoer@19.168.1.17 "df -h" 

执行多行命令呢?

ssh shuoer@192.168.1.17 "pwd; df -h; /home/shuoer/shell.sh"

让远程主机执行本地的shell脚本呢?

#前提是你本地得有这个shell.sh脚本
ssh shuoer@192.168.1.17 < shell.sh 

ok,我们新建一个构建远程服务器的任务