Jenkins 工作笔记

由于公司需要,这边记录一下自己在学习Jenkins的一些过程,以及遇到的一些坑。

安装

安装Jenkins

Jenkins的安装还是比较简单的,我用的是CentOs 6,安装步骤如下:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

参考网址:https://pkg.jenkins.io/redhat-stable/

安装JDK

安装完后不要着急启动,Jenkins需要JAVA环境,我这里用的是:jdk-8u161-linux-x64.tar.gz

tar -zxvf jdk-8u161-linux-x64.tar.gz
mv /upload/jdk1.8.0_161/ /usr/local/java/jdk1.8/

解压完成后添加一下环境变量vi /etc/profile,在文件的最前面添加:

export JAVA_HOME=/usr/local/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

然后刷新一下文件,让修改生效source /etc/profile,检查一下:

[root@localhost upload]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

修改Jenkins启动文件

JAVA环境安装好了,但这里Jenkins还是启动不了的,这也是一个坑,尝试启动:

[root@localhost upload]# service jenkins start
Starting Jenkins bash: /usr/bin/java: No such file or directory
                                                           [FAILED]

根据提示,知道jenkins没有找到java这个文件,我们需要帮他找,修改jenkins的启动文件vi /etc/init.d/jenkins,里面有这么一段代码:

candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"

加上我们刚刚安装JDK的位置/usr/local/java/jdk1.8/bin/java,注意这里需要的事java这个可执行文件的路径,修改后是这样:

candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/usr/local/java/jdk1.8/bin/java
"

再次重启,成功了,我们可以查看启动日志tail -f /var/log/jenkins/jenkins.log
日志中会打印出第一次解锁Jenkins的密码
或者在这里查看cat /var/lib/jenkins/secrets/initialAdminPassword

开放端口

如果防火墙是永久关闭的,跳过这一步。
Jenkins默认用8080端口启动,可以在vi /etc/sysconfig/jenkins里面搜索JENKINS_PORT="8080"看到,然后在vi /etc/sysconfig/iptables里面添加一行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

保存退出后,重启iptables:service iptables restart

初始化Jenkins

访问Jenkins服务器的8080端口,需要填写前面提到的解锁密码,然后安装推荐的插件,等待安装完成。
推荐插件安装完成后,需要增加一个账户,根据需要自己填写。
下一步的实例配置用默认的即可。
全部配置完成后,进入Jenkins主界面。

搭建Git + Maven + SSH Server 的CI(持续集成)环境

Jenkins相关插件安装

安装推荐插件后,Git Plugins已经有了,还需要安装Maven IntegrationPublish Over SSH,我们通过 系统管理 -> 插件管理 -> 可选插件,搜索前面提到的俩个插件,全部勾选后点击直接安装,等待安装完成后重启Jenkins:service jenkins restart

Maven 安装

下载maven:http://maven.apache.org/download.cgi ,我这里用的是当前的最新版apache-maven-3.6.0-bin.tar.gz
上传到Jenkins服务器上,解压:tar -zxvf apache-maven-3.6.0-bin.tar.gz
解压后移动到:mv apache-maven-3.6.0 /usr/local/maven
增加环境变量vi /etc/profile

export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin

刷新配置文件后测试是否成功:

[root@localhost maven]# source /etc/profile
[root@localhost maven]# mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T11:41:47-07:00)
Maven home: /usr/local/maven
Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-754.2.1.el6.x86_64", arch: "amd64", family: "unix"

Maven安装结束

Git 安装

直接使用:yum -y install git,等待安装完成即可。
测试是否安装成功:

[root@localhost maven]# git --version
git version 1.7.1

Jenkins全局工具配置

系统管理 -> 全局工具配置 ,对JDK、git、Maven做相关配置:
在这里插入图片描述
在这里插入图片描述
保存即可。

目标服务器免密配置

Jenkins有时需要对其他服务器发送文件或者是命令,这时就需要免密配置了。
由于Jenkins是使用jenkins用户执行操作的,所以我们先切换到jenkins用户:su jenkins
默认情况下可能是切换不了的,我们需要修改vi /etc/passwd,找到jenkins相关的那条:

jenkins:x:496:493:Jenkins Automation Server:/var/lib/jenkins:/bin/false

修改为:

jenkins:x:496:493:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

修改后再次执行:su jenkins,成功切换至jenkins用户。
生成密钥:ssh-keygen -t rsa,全部回车通过,使用默认值。
成功后会在 /var/lib/jenkins/.ssh/ 目录下生成一对公私钥文件,查看公钥:cat /var/lib/jenkins/.ssh/id_rsa.pub,复制公钥的内容,在目标服务器的/root/.ssh目录下会有一个authorized_keys文件,没有就自己创建,然后将公钥的内容复制到文件中。

设置authorized_keys权限
$ chmod 600 authorized_keys
设置.ssh目录权限
$ chmod 700 -R .ssh

设置权限后重启一下sshd服务service sshd restart

重启成功后来到Jenkins服务器测试一下:ssh root@目标服务器IP,如果无需输入密码则配置成功。

增加SSH Server

系统管理 -> 系统配置 -> Publish over SSH
我们在Path to key 这一栏填上Jenkins服务器的私钥位置/var/lib/jenkins/.ssh/id_rsa,其他的配置像这样:
在这里插入图片描述
Remote Directory:是Jenkins链接目标服务器后的工作目录

创建项目

经过以上的准备,我们终于可以创建项目了,点击主界面下的新建任务,输入任务名称,选择Maven项目。

源码

进入项目的详细配置页面,首先设置项目源码的位置:
在这里插入图片描述
这里我使用的是码云,如果我们没有把Jenkins的公钥放在码云上,是不能连接到这个仓库的,就像图中一样,设置好公钥就不会有图上的提示了,这里注意一点,第一次设置完公钥需手动连接一次git仓库,比如手动git clone一次项目,因为在第一次连接会有一个连接提示,可能会导致Jenkins连接失败。

编译

在这里插入图片描述
Root POM:这里天pom.xml的位置,从项目的根路径开始。
Goals and options:这里填mvn后跟的命令及参数,这里是对我们的项目打了包。

部署

这是编译后的操作,首选我们选择:
在这里插入图片描述
也就是说在编译成功后才会执行下面的操作。
编译成功后我们只需将其复制到目标服务器并运行即可。
添加一个:
在这里插入图片描述
Name:这里选择的就是我们刚刚配置的SSH Server
Source files:要传输的文件在哪,相对于项目根路径
Remove prefix:忽略的前缀,作用是在传输过后不携带前缀的目录
Remote directory:传输的文件存放在那个目录下,这里是相对于SSH Server中配置的Remote directory目录的
Exec command:传输完成后执行的命令

到这里,一个简单的Maven + Git + SSH Server的CI环境就搭好了。

构建项目

进入项目详情,点击立即构建。
构建过程中可以进入控制台查看日志。
等待其构建完成即可。

发布了23 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_22606825/article/details/88733602