Jenkins安装部署
Jenkins用于软件开发持续集成工具,我们可以用它来自动将软件从远程仓库下载下来,放到web服务器上显示。
开源软件安装三个步骤:安装,配置,部署
1.安装
jenkins官网:https://jenkins.io
官网下载rpm包进行安装,官网速度慢时可以去清华镜像下载
https://mirrors.tuna.tsinghua.edu.cn/jenkins/
网盘:
jenkins需要jdk支持
使用提前下载好的rpm包安装jdk:rpm -ivh jdk-8u121-linux-x64.rpm
或者使用yum安装jdk:yum -y install java-devel
测试:java -version
安装jenkins
rpm -ivh jenkins-2.99-1.1.noarch.rpm
启动服务
jenkins 默认监听8080端口
centos7下
启动服务:systemctl start jenkins
设置为开机启动服务:systemctl enable jenkins
同理:
status 为查看状态
stop 为终止服务
检测是否开启成功:netsta -ntpl
查看8080端口是否被监听
初始化配置
我的ip为10.0.0.12,即打开浏览器输入10.0.0.12::8080即可进入jenkins配置页面
根据提示,我们区该目录下找到管理员密码
[root@node2 jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
7b06db73ddb749829d44f6723be5784a
当我们进入安装插件页面时,点击x取消自动安装。因为插件要从官方下载,速度很慢,我们采取手动安装方法
进入界面
我们可以进入系统管理-》管理用户-》修改管理员密码
安装插件
安装插件有三种方法
我们进入系统管理-》管理插件
方法一:直接安装
点击可选插件,即可选择相应插件
如果插件下载过慢,可以设置代理:高级-》代理设置
方法二:从清华镜像下载hpi包安装
清华镜像下载插件https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
高级-》上传插件 即可
方法三:将hpi包放入plugins目录下
jenkins下所有配置都以文件方式保存
jenkins包放入插件目录,重启软件,自动安装插件
插件目录:/var/lib/jenkins/plugins/
tar xf plugins.tar.gz
cd plugins/
mv ./* /var/lib/jenkins/plugins/
systemctl restart jenkins
推荐插件:网盘地址
2.新建构建
安装和配置jenkins和插件后就可以使用了
新建一个自由风格的软件项目
点击新建Item,输入任务名称,选择构建一个自由风格的软件项目即可
进入主配页面
项目文件存放在/var/lib/jenkins/jobs 下
项目工作目录 /var/lib/jenkins/workspace 运行结果放到该文件下
项目名:项目名一旦确最好不要修改,因为jobs下原文件不会在修改后删除
丢弃旧的构建
构建
我们可以在构建.
选项卡中,构建一条shell脚本
注意
在shell脚本中,如果执行系统命令是没有权限的。
jenkins默认以jenkins用户启动,如果要执行系统命名,解决办法有两种:
1.手动授权,给jenkins权限
2.以root用户启动
进入配置文件
vim /etc/sysconfig/jenkins
修改文件,修改这一条 JENKINS_USER="root"
重启服务systemctl restart jenkins
测试
之后选取立即构建即可,然后我们在左下角查看构建记录
查看控制台输出
执行的工作目录
/var/lib/jenkins/workspace/jobs名称
builds:存放最后一次构建、最后一次成功构建
config.xml 记录了构建的配置信息
3.源码管理:获取git源代码
配置构建
进入构建-》配置 配置源码管理
选择git
我们可以将git地址复制进去
从github或者是gitlab选择项目,复制源码
进行 ssh认证
执行命令ssh-keygen -t rsa
,执行后一直敲回车结束就会生成密钥
获取密钥cat ~/.ssh/id_rsa.pub
将密钥拷贝到github或gitlab的设置-》SSH keys中即可
注意:一个用户可以加入多个密钥,每个密钥只能对应一个用户
报错1:Error performing command
原因是没有安装git命名
解决办法:安装git命令
yum -y install git
报错2:Host key verification failed
原因是没有进行ssh认证,不能clone信息到本地
如果jenkins不是root用户运行,而是jenkins用户运行,则我们需要手动添加密钥
添加认证
方法一:使用SSH私钥对接公钥
linux下获取ssh私钥:cat ~/.ssh/id_rsa
拷贝全部内容
window下生产的ssh认证/c/Users/Administrator/.ssh/
目录下
ID和描述可以自己设置,自定义
方法二:使用token
选择gitlab api token
gitlab:获取token认证
进入gitlab个人设置中
名字可以随意设置,过期日期不设置则用户过期
点击生成,复制生成的token填入即可
github:获取token
进入github个人设置界面
选择Develoger settings
即可创建github token
方法三:用户名密码
选择第一条username with password
输入相应网站的用户名和密码即可
测试
保存后,点击立即构建,查看工作空间是否有从git仓库下载的源码
4.构建:自动部署代码到web服务器上
通过上一步,从git仓库拉取代码到本地,我们可以写脚本将代码发送到web服务器上将其部署
具体操作如下
mkdir /server/script -p
cd /server/scripts/
vim deploy.sh
脚本内容
#!/bin/bash
name=web-$(date +%F)-$(($RANDOM+10000))
host=$1
job_name=$2
cd /var/lib/jenkins/workspace/${job_name} && tar czf /opt/${name}.tar.gz ./*
ssh ${host} "cd /var/www && mkdir ${name}"
scp /opt/${name}.tar.gz ${host}:/var/www/${name}
ssh ${host} "cd /var/www/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"
ssh ${host} "cd /var/www/ && rm -rf html && ln -s /var/www/${name} /var/www/html"
该脚本先从命令行获取ip和构建名
然后将本地job打包发送给web服务器,在web服务器(apache)上解包
然后配置jenkins的构建部分添加以下内容
sh /server/scripts/deploy2.sh 10.0.0.11 ${JOB_NAME}
${JOB_NAME}为jenkins环境变量,表示当前执行的构建名
保存执行即可
5.触发器:git仓库代码发生变化时,jenkins自动拉取代码
配置构建,选择构建触发器
可以选择远程触发;在执行完其他构建触发;定时任务;定时检查git或svn有没有更新,有更新执行构建;如果push到gitlab就执行构建。。。
选择高级
因为我们在源码管理里面只引入了master分支,所以在这里只要设置master分支更新了,就触发这个构建即可
其次,Secret token配置,点击generate创建token。将token和Service URL填入gitlab中(settings->integrations)即可
测试
只要我们push源码gitlab中,就可以通过gitlab通知jenkins触发构建,实现jenkins自动从gitlab上下载这个项目的master分支,并执行脚本,将其部署到Apache上
6.配置git仓库获取jenkins构建状态
配置jenkins
进入系统管理-》系统配置->找到gitlab一栏
添加tokens认证
我们这时候去gitlab上获取token即可
settings-》access tokens
ID和描述可以自定义
配置构建
进入jenkins项目构建的配置页面,选择构建后操作
保存,然后选择立即构建
测试
立即构建后,我们可以通过gitlab查看到jenkins对这个项目的构建情况
构建通过
也可查到具体情况
总结
安装jenkins后,并配置好构建这一系列操作完成后,我们可以在本地上传代码到gitlab远程仓库中,gitlab就会提醒jenkins触发构建,获取gitlab上的代码,并执行我们编写的脚本,将获取的代码发送给web服务器,web服务器就可以显示我们的代码,执行结束后返回执行结果给gitlab