ubuntu 下搭建 Jenkins 并配置部署环境
安装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 [email protected] "df -h"
执行多行命令呢?
ssh [email protected] "pwd; df -h; /home/shuoer/shell.sh"
让远程主机执行本地的shell脚本呢?
#前提是你本地得有这个shell.sh脚本
ssh [email protected] < shell.sh
ok,我们新建一个构建远程服务器的任务