Devops实现之jenkins (二)

1.jenkins安装

方式一:安装jenkins (快速使用)
JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tomcat下载:http://tomcat.apache.org/
Jenkins下载:https://jenkins.io/index.html

####本地yum 源192.168.19.200 mirrors.aliyun.com
[root@Jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

###清华源下载rpm包https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
[root@Jenkins tools]# rpm -ivh jenkins-2.73.1-1.1.noarch.rpm
警告:jenkins-2.73.1-1.1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID d50582e6: NOKEY
准备中… ################################# [100%]
正在升级/安装…
1:jenkins-2.73.1-1.1 ################################# [100%]
[root@Jenkins tools]# /etc/init.d/jenkins start
Starting jenkins (via systemctl): [ 确定 ]

[root@Jenkins tools]# netstat -lntup|grep java
tcp6 0 0 :::8080 ::: LISTEN 1565/jav
udp6 0 0 :::33848 ::: 1565/jav
udp6 0 0 :::5353 ::: 1565/jav

####web端输入密码文件

[root@Jenkins tools]# cat /var/lib/jenkins/secrets/initialAdminPassword
007fde48c680489f98c9ba14861b565d

####解压安装插件
[root@Jenkins tools]# tar xfP jenkins_plugins.tar.gz
[root@Jenkins tools]# ls
jenkins-2.73.1-1.1.noarch.rpm jenkins_plugins.tar.gz
[root@Jenkins tools]# ls /var/lib/jenkins/plugins/
ace-editor pam-auth
ace-editor.jpi pam-auth.jpi
ant pipeline-build-step

[root@Jenkins tools]# rpm -ql jenkins

/etc/init.d/jenkins        ###启动文件
/etc/logrotate.d/jenkins	##日志分割配置文件
/etc/sysconfig/jenkins	###Jenkins 主配置文件
/usr/lib/jenkins           
/usr/lib/jenkins/jenkins.war  ##war包存放目录
/usr/sbin/rcjenkins	##命令
/var/cache/jenkins         ##war包解压目录,jenkins网页代码目录
/var/lib/jenkins            ##jenkins工作目录
/var/log/jenkins

卸载jenkins

yum clean all
yum -y remove jenkins
rm -rf /var/cache/jenkins
rm -rf /var/lib/jenkins/

方式二:安装jenkins (推荐使用)

Jenkins升级方法
如果是通过Tomcat启动Jenkins则直接下载新war包替换即可

1、Jenkins介绍

  • Jenkins官网:jenkins
  • Jenkins是一个开源的软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作(代码合并),旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  • 主流的运维开发平台,兼容所有的主流开发环境
  • 插件市场与海量业内主流开发文章来源(Source):https://www.dqzboy.com工具实现集成
  • Job为配置单位与日志管理,使运维开发人员能协同工作
  • 权限管理划分不同的Job不同角色
  • 强大的负载均衡功能,保证我们项目的可靠性

2、安装部署

2.1、环境准备

2.1.1:主机名更改

[root@localhost ~]# hostnamectl set-hostname jenkins

2.1.2:防火墙配置

# 查看放开的端口
[root@jenkins ~]# firewall-cmd --zone=public --list-ports
 
# 放开端口
[root@jenkins ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
 
# 使其规则生效
[root@jenkins ~]# firewall-cmd --reload

2.1.3:关闭SELINUX

[root@jenkins ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@jenkins ~]# setenforce 0
 
[root@jenkins ~]# getenforce 
Permissive
[root@jenkins ~]# sestatus
SELinux status:                 disabled

2.1.4:设置epel源、安装基本操作命令

[root@gitlab ~]# yum -y install wget
 
[root@gitlab ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 
[root@gitlab ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump ntpdate

2.1.5:时间同步

[root@gitlab ~]# cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
 
[root@gitlab ~]# echo "*/5 * * * *  ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root
 
[root@gitlab ~]# systemctl  restart crond

2.2:下载软件

2.2.1:下载jdk

Get it!Download

2.2.2:下载jenkins

Get it!Download

在这里插入图片描述

  • 推荐使用war包方式安装,通过Tomcat启动

2.3:安装部署

2.3.1:安装JDK

  • YUM安装的是系统默认openjdk,我这里采用安装oracle jdk,不使用openjdk
  • jenkins不支持最新版本的jdk,推荐安装稳定版本的jdk8
[root@jenkins ~]# cd /opt/soft
[root@jenkins soft]# rpm -ivh jdk-8u231-linux-x64.rpm

2.3.2:jenkins安装

  • 采用tomcat运行jenkins,为了解决jenkins用户权限的问题
#创建普通用户
[root@jenkins ~]# useradd deploy
#下载安装Tomcat
[root@jenkins ~]# tar -xf apache-tomcat-9.0.27.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-tomcat-9.0.27 tomcat
 
#编辑systemd服务脚本
[root@jenkins ~]# vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat
After=network.target

[Service]
User=deploy
Group=deploy
Type=forking
 
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
#删除webapps下默认的文件,将jenkins的war包放入webapps目录下,更改Tomcat默认访问路径
[root@jenkins ~]# mv jenkins.war /usr/local/tomcat/webapps/
[root@jenkins ~]# vim /usr/local/tomcat/conf/server.xml
<Context path="" docBase="jenkins" debug="0" reloadable="true" />

在这里插入图片描述

#修改Jenkins的默认工作主目录(配置文件,job等都会存储在该路径下)
[root@jenkins ~]# cd /usr/local/tomcat/bin/
[root@jenkins bin]# vim catalina.sh
export JENKINS_HOME="/home/application/jenkins"

在这里插入图片描述

#更改tomcat目录的权限
[root@jenkins ~]# chown -R deploy:deploy /home/application/jenkins/tomcat
#创建Jenkins的工作目录
[root@jenkins ~]# mkdir /home/code/workspace
[root@jenkins ~]# chown -R deploy:deploy /home/application/jenkins
 
#启动tomcat
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl start tomcat
[root@jenkins ~]# systemctl enable tomcat
[root@jenkins ~]# lsof -i:8080

3.1:访问页面

  • jenkins默认端口8080

在这里插入图片描述

3.2:拷贝密码

[root@jenkins ~]# cat /home/application/jenkins/secrets/initialAdminPassword

方式三:docker安装jenkins搭建自动化部署 (容器练习)

1、下载docker

wget https://yum.dockerproject.org/repo/main/centos/6/Packages/docker-engine-1.7.1-1.el6.x86_64.rpm
2、安装
yum -y install docker-engine-1.7.1-1.el6.x86_64.rpm
3、启动docker
service docker start
2. 下载安装镜像
1、搜索可用镜像
docker search centos
2、安装镜像
docker pull centoS
3、查看安装的镜像
docker images
列出容器:docker ps -a
查看最近生成的容器:docker ps -l
查看正在运行的容器:docker ps
显示容器的标准输出:docker logs CONTAINERID(无需拷贝完整的id,一般写最开始的三至四个字符即可。)
4、启动容器

docker run -i -t -v /root/software/:/mnt/software/ 83ee /bin/bash
1
命令包含以下三个部分:
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
此时已经进入了容器命令行

  1. 安装软件

1、安装jdk

解压:tar -zxvf jdk-7u67-linux-i586.tar.gz
将jdk移动目录:mv * /usr/local/java
将JDK路径加入环境变量中:
export JAVA_HOME=/usr/local/java
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
刷新配置文件:source /etc/profile

2、安装maven

1、wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
2、tar zxvf apache-maven-3.5.0-bin.tar.gz

3、mv apache-maven-3.5.0 /usr/local/maven3
4、修改环境变量,在/etc/profile中添加以下几行
MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH= P A T H : {PATH}: PATH:{MAVEN_HOME}/bin
记得执行source /etc/profile使环境变量生效。
5、mvn -v

3、安装sshpass

wget https://pilotfiber.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
tar zxvf sshpass-1.06.tar.gz

安装:
./configure
make
make install
为了能在任意地方执行命令 cp sshpass /usr/bin/

4、tomcat
tar zxvf apache-tomcat-7.0.65.tar.gz
a、编写启动脚本
#touch /root/run.sh
# vi /root/run.sh
b、编辑脚本
#!/bin/bash
export JAVA_HOME=/usr/local/java
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
sh /home/server/tomcat-jenkins/bin/catalina.sh run
c、运行脚本添加执行权限
chmod u+x /root/run.sh

5、退出容器

exit
6、创建Tomcat镜像

a、docker ps -a 记住以上CONTAINER ID(容器 ID),随后将通过该容器,创建一个可运行 Tomcat 镜像
b、docker commit CONTAINER ID(容器 ID) jenkins-tomcat:1.0
4. 启动Tomcat容器

1、docker run -d -p 58080:8080 --name jenkis_server jenkins-tomcat:1.0 /root/run.sh -D

2、#进入运行的docker进程

docker exec -it 971134f421bc /bin/sh

3、下载jenkins

cd /home/server/tomcat-jenkins/webapps/
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.53/jenkins.war
4、重启tomcat镜像

docker ps -a
docker stop 971134f421bc
docker start 971134f421bc
3、访问http://192.168.2.112:58080/jenkins/
2、#进入运行的docker进程

docker exec -it 971134f421bc /bin/sh

3、查看tomcat日志获取授权码
4、根据页面 等待下载插件
5、设置账户 admin/admin

附录:停止容器 docker stop f235
移除容器 docker rm f235
移除镜像 docker rmi 65c8

docker之间导出导入镜像:

  1. 导出 export - 导入 import
    使用 docker ps -a 查看本机已有的容器
    格式:docker export CONTAINER(容器)

docker export furious_bell > /home/myubuntu-export-1204.tar

docker import - /home/myubuntu-export-1204.tar

2.保存save - 加载 load
使用 docker images 查看本机已有的镜像
格式:docker save IMAGE(镜像)

docker save 9610cfc68e8d > /home/myubuntu-save-1204.tar

docker load < /home/myubuntu-save-1204.tar

2.Jenkins 主备master-slave模式搭建

jenkins的版本是2.70,使用下来感觉是一个不错的版本,至于如何搭建jenkins,在此就不多说了,推荐的方法是先安装tomcat,然后再加jenkins.war放在tomcat的webapp路径下来启动jenkins会比较好,这样不存在权限的问题,否则会出现root和jenkins用户权限的相关问题。
由于我的其中一台机器是centos的,没有图形化Jenkins,所以将这台centos作为jenkins master,安装jenkins。
在我们需要不同平台来出不同类型的包时,比如,需要windows平台打exe文件,需要ios系统打ipa的文件,需要linux系统打so,jar等,这种master-slaver的模式就很适用了。
以下分别介绍了当slave是mac系统的时候,当slave时centos系统的时候,当slave是windows的系统的时候,如何设置
一、当slave是mac系统的时候
先说说jenkins-master的设置:
1.系统管理–>管理节点–>新建节点
在这里插入图片描述

2.配置新建节点
在这里插入图片描述

Name:可以随意命名,用来标记slave机器,我个人喜欢标记为slave机器的系统,比如server-ios
描述:随意,一般设置为slave机器的ip地址
of excutors:slave主机slave的并行数,即同时可以下发多少个job到slave上执行
远程工作目录:用来放工程的文件夹,jenkins master上设置的下载的代码会放到这个工作目录下。
标签:标签一般设置为slave 主机的IP
用法:选择“只允许运行绑定在这台机器的job”
启动方式:选择“Lanch agent via Java Web Start”
    默认是没有这个选项的,需要做设置。参考:http://blog.csdn.net/e295166319/article/details/54946966
    该版本的配置如下:
在这里插入图片描述

Avalibility:keep this agent online as much as possible
如果要设置slave机器上对应的环境变量,可以勾选如下项设置:
在这里插入图片描述

至此,slave的设置就算结束了。
3.下载节点服务
slave设置结束后,会看到如下图,点击这个"Launch"会下载一个slave-agent.jnlp的文件。
在这里插入图片描述

4.将这个slave-agent.jnlp文件上传到slave机器上刚才设置的‘远程工作目录’下,双击这个文件,会跳出如下:
在这里插入图片描述

然后点击‘运行’,会看到如下:
在这里插入图片描述

注意,这个图框不能关掉,缩小就可以了,如果关掉,slave就会掉线,同理,如果发现slave不是在线状态,再次双击slave-agent.jnlp打开这个进程即可。
表示slave机器已经连接上了,此时查看master jenkins上,就可以正常看到slave机器是在线的,如下:

在这里插入图片描述

如上,server-ios就是刚才设置的slave主机,对应的系统类型,存储大小都是有的。
5.在jenkins上设置job下发到slave机器上执行
(1)master jenkins上点击‘新建’,新建一个自由风格的任务
(2)勾选参数化构建过程,设置如下:
(2.1)选择Node,如下
在这里插入图片描述

(2.2)然后默认的任务下发节点为刚才设置的server-ios;其中Name可随意设置,一般比较直观的,会设置代码工程名。
在这里插入图片描述

6.源码下载
在这里插入图片描述

7.添加构建脚本
最后点击构建的时候,会在执行状态中看到,已经下发到slave上,如下
在这里插入图片描述

这个任务就是刚才新建的任务,同样登陆slave机器上的工作目录(即前面节点设置的‘远程工作目录’),可以看到这个工程,如下:
在这里插入图片描述

至此,jenkins master-slave就算结束了。
二、当slave是centos系统的时候
同样,先说说如何再jenkins-master上设置节点
1.创建节点步骤和“当slave是mac系统的时候”一样,节点界面也是类似,我的如下:
在这里插入图片描述

2.节点保存后显示如下:
在这里插入图片描述

由于centos是非图形化界面的,所以倾向于使用命令行方式"Run from agent command line"启动slave.
如上截图,首先下载slave.jar,并放到centos slave的工作目录下(工作目录根据自己的设置,即新建节点时设置的‘远程工作目录’),我的远程工作目录如上设置为/root/src/,在slave.jar放到slave上后,执行dos2unix slave.jar;chmod 777 slave.jar后,执行上面截图的命令:
java -jar slave.jar -jnlpUrl http://192.168.8.246:8080/jenkins/computer/centos-233/slave-agent.jnlp -secret 0576e4e935a2d096f994dc5b0009737566dc2cc728efc1c440f3615607e697 &
设置后台运行,如果显示出现connected 表示slave启动成功,如下:
在这里插入图片描述

这时在jenkins master上看状态,显示在线,如下:

在这里插入图片描述

各项都能看到,至此,slave 已经启动了,关于如何下发任务到slave上,参考第一部分"当slave是mac的时候"即可。
说明:使用上面的‘lanch agent with java web start ’方法在slave上执行命令来启动slave,这种方式对于centos来说,就我个人使用发现不太稳定,后面在网上搜到一种更好的方法,参考:http://blog.csdn.net/liuchunming033/article/details/52025541
我自己的设置如下:
其中我采用的是用户名密码的那种,使用的是从节点的登陆用户名密码,root/$password
在这里插入图片描述

但是在lanch的时候会报错,找不到java,此时需要在设置从节点的时候,添加对应的环境变量,如下:
在这里插入图片描述

备注:如果你是使用javaws 命令掉jnlp文件,你可能需要做如下操作
  yum -y install libX11
  yum -y install libXext
  yum -y install libXrender
  yum -y install libXtst

最后,其上上面两种介绍主要是从有界面可操作和无界面可操作时的slave搭建,如果再添加slave,有界面的系统采用mac的方式,无界面的系统采用centos的方式,都可以实现,到此为止,我们已经有三个节点可供使用了,如下:
在这里插入图片描述

我们可以根据任务对系统的而不同需求,下发任务到不同的节点,在配置任务时可以勾选“Restrict where this project can be run”,然后添加可用的节点lable,多个lable之间用 “||” 分隔,如下:
在这里插入图片描述

此外,如果slave是第一次下载代码,需要添加slave的key到gerrit上,并在slave上先下载一次代码看看时候ok,我遇到了询问时候要将gerrit 对应的host ip到known hosts中,需要收到输入’yes’,如下:
在这里插入图片描述

下次就不要了。
三、当slave是windows系统的时候
同样,先说说如何在jenkins-master上设置节点,如下:
在这里插入图片描述
在这里插入图片描述

节点设置后,查看节点如下:
在这里插入图片描述

然后点击“window_211”,显示如下页面,
在这里插入图片描述

点击‘launch’下载slave-agent.jnlp文件,复制该文件到windows slave主机上,放在节点设置时设置的“远程工作目录”下,双击该jnlp文件
在这里插入图片描述

然后显示如下:
在这里插入图片描述

然后显示如下connected表示连接成功,如下:
在这里插入图片描述

此时,查看jenkins master 主机上,显示已连接,如下:
在这里插入图片描述

至于节点的使用,参考“一、当slave是mac系统的时候”其中的任务设置即可。

备注:在配置当slave是centos和windows的时候,请先都一下“一、当salve是mac系统的时候”,centos和windows系统,除了节点的设置和连接不太一样,其他和mac slave的配置和使用是一样的,比如节点的使用,slave主机上是图框显示已经连接状态时,图框不能关掉,直接最小就好了。

3. jenkins的插件使用

使用Publish over SSH

依赖环境

  1. SSH,远程机开启SSH服务,允许Jenkins所在机器通过SSH服务登录到远程机执行脚本;可以设置SSH使用用户名/密码或通过key登录,SSH配置请查专门的资料这里不做说明
  2. JDK,本文部署的是JAVA应用,远程机上要用jdk环境,如非Java应用请忽略
  3. Tomcat或其他web容器,本文是以Tomcat为例,将应用部署到Tomcat中运行,远程机上安装Tomcat是必须的,如非Java应用请忽略,如用其他web容器请查找容器的安装资料
    插件安装
    打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“Publish over SSH”进行搜索,如果搜索不到可以在“已安装”里确认是否已经安装过。在搜索结果中选中“Publish over SSH”,点击页面的“直接安装”按钮,系统会自动安装,此插件安装后不需要重启Jenkins。如果插件安装成功在“系统管理>系统设置”会出现相关配置项。

在这里插入图片描述

插件配置
全局设置
插件安装成功后使用前需要在“系统管理>系统设置”中进行配置,处如图:

每一项都可以被SSH Server的设置所覆盖,这样的设计有一个好处,在服务器环境比较规范的情况下,可以省去每个SSH Server分别配置的繁琐步骤。
参数说明
• Passphrase:SSH的密码
使用用户名/密码登录时为用户名的密码,使用私钥登录时为私钥的密码。

• Path to key:SSH私钥的文件路径
私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径

• Key:私钥
私钥导出后的文本内容

如果“Key”和“Path to key”都设置,则“Key”的优先级较高,私钥的密码是“Passphrase”中设置的内容。

• Disable exec:禁止在目标机上执行命令
勾选后将会忽略在Job配置中“Exec command”选项中设置的命令。Jenkins的说明文档中的“The Disable exec in the advanced settings for individual configurations will be ignored.”没有完全理解,从实际效果来看,只要“Disable e

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值