一、相关概念

1.1 Jenkins概念:

Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

1.2 Jenkins目的:

1、持续、自动地构建/测试软件项目。
2、监控软件开放流程,快速问题定位及处理,提示开放效率。

1.3 特性:

开源的java语言开发持续集成工具,支持CI,CD。
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

1.4 产品发布流程:

产品设计成型 —> 开发人员开发代码 —> 测试人员测试功能 —> 运维人员发布上线
持续集成 (Continuous integration,简称CI)
持续交付(Continuous delivery)
持续部署(continuous deployment)

前置条件

  1. 安装jdk1.7或以上版本
  2. 安装Git
  3. 安装Maven

安装

添加 Jenkins 库到yum库,Jenkins将从这里下载安装。

1. 添加 Jenkins 源

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

yum clean all

yum makecache

2. yum下载 Jenkins

yum install -y jenkins

3. 设置访问 Jenkins 的端口

vim /etc/sysconfig/jenkins  (56行)

4. 添加防火墙,允许9000端口访问

CentOS7.X下 firewall 防火墙的配置

firewall-cmd --state   # 查看防火墙状态,启动状态才能添加规则,centos7中默认防火墙就是firewalld,一般不需要额外设置。

firewall-cmd --add-service=jenkins --permanent       # 添加 Jenkins 服务到 firewalld 防火墙中。

firewall-cmd --reload     # 让配置的防火墙策略立即生效

firewall-cmd --list-services       # 列举区域中启用的服务

CentOS6.X下 iptables 防火墙的配置

iptables -I INPUT –p tcp –dport 9000 –j ACCEPT

service iptables save

service iptables restart

5. 修改用户权限 (可选)
Jenkins安装的时候,默认添加了一个jenkins用户,这个在后续持续集成过程中,会出现权限问题。因此需要进行修改。

进入 /etc/sysconfig/jenkins

修改jenkins用户为root  (29行)

#JENKINS_USER="jenkins"

JENKINS_USER="root"

修改对应目录权限

sudo chown -R root /var/log/jenkins

sudo chgrp -R root /var/log/jenkins

sudo chown -R root /var/lib/jenkins

sudo chgrp -R root /var/lib/jenkins

6. 启动Jenkins

systemctl start jenkins  (如果启动报错,一般是java路径配置问题)

备注:如果启动的时候出现下图,CentOS 6.5应该会出现这个错误提示:Starting Jenkins -bash: /usr/bin/java: No such file or directory

对 Jenkins 配置文件进行修改

添加自己的 jdk 路径

查询 jdk 路径:

which java

进入 Jenkins 配置文件:vim /etc/init.d/jenkins

把 jdk 安装路径添加进去,格式如下图,保存退出,再次重启 Jenkins 就好啦!

如果重启时出现下图:

就运行以下命令后,再次重启

systemctl daemon-reload

安装成功后Jenkins将作为一个守护进程随系统启动,系统会创建一个 "jenkins" 用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者

启动的时候将从 /etc/sysconfig/jenkins 获取配置参数,默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端口进行服务配置

Jenkins的RPM仓库配置被加到 /etc/yum.repos.d/jenkins.repo 文件里

7. 通过IP地址加端口,就可以成功访问到 Jenkins 了

http://your ip address:9000

8. 密码默认在 /var/lib/jenkins/secrets/下的 initialAdminPassword 文件中

vim /var/lib/jenkins/secrets/initialAdminPassword

把这行密码复制,粘贴到上面的 Jenkins 输入框就可以正常使用了

选择 "Install suggested plugins" 安装默认的插件,下面 Jenkins 就会自己去下载相关的插件进行安装。

创建超级管理员账号

配置

1、Java配置

在服务器上执行 echo $JAVA_HOME 便可看到 JAVA_HOME 的路径

在系统管理 —> 全局工具配置(Global Tool Configuration)下配置JDK,Name可以自定义,取消自动安装

JAVA_HOME:填写 JDK 的具体安装路径

2、Git安装

源码安装

检测当前 Git 版本是否是2.7.4以上

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf –y

mkdir /tmp/git && cd /tmp/git

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

tar xf git-2.9.5.tar.gz

cd git-2.9.5

make configure

./configure --prefix=/usr/local/git

make profix=/usr/local/git

make install

echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh

source /etc/profile.d/git.sh

查看git安装到什么地方

which git

可以看到 Git 安装在如下目录

Git配置

在系统管理 —> 全局工具配置(Global Tool Configuration)下配置Git,Name可以自定义,取消自动安装

Path to Git executable:填写 Git 的具体安装路径

3、Maven安装

cd /usr/local/ && wget -c http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

tar -zxf apache-maven-3.3.9-bin.tar.gz

echo "export PATH=$PATH:/usr/local/apache-maven-3.3.9/bin" > /etc/profile.d/maven.sh

source /etc/profile.d/maven.sh

mvn -v    # 查看Maven版本

在系统管理 —> 全局工具配置(Global Tool Configuration)下配置Maven,Name可以自定义,取消自动安装

MAVEN_HOME:填写 Maven 的具体安装路径

4、Email配置

配置邮箱,在构建失败的时候会向指定邮箱发送告知邮件

系统管理 —> 系统设置下配置邮件功能

 5、配置GitHub,和Jenkins连接

sercret text

注:此处需要一个对项目有写权限的账户

进入GitHub —> Settings —> Developer settings —> Personal access tokens —> Generate new token

注意:自己先复制保存下这个token,下面会用到,如果丢失,之后再也无法找到这个token,只能再新建一个。

进到Jenkins页面,选择,系统管理 —> 系统设置 —> GitHub

GitHub的连接信息

配置Jenkins在Hook URL中监听Github的Post请求,然后进行自动构建,所以接下来配置Hook URL,点击 "添加GitHub服务器" 处的 Advanced按钮,启用Hook URL,并将Hook URL复制出来,并保存刚才的设置

配置Github项目仓库

还需要配置GitHub项目仓库,因为GitHub经常有代码处理动作,需要配置Github项目仓库在处理这些动作的同时会发送信号至Jenkins,才使用Jenkins自动构建。

在GitHub上新建一个项目,点击Settings

在"Webhooks"选项卡中,点击"Add webhook"

将在Jenkins生成的Hook URL填入至Payload URL中,另外,选择自主事件

以Push为例,并保存,即当GitHub收到了客户端有Push动作时,会触发一个Hook

保存webhook之后

使用 Jenkins 构建部署Web项目 

新建一个名为xiong-cxxt的项目,这里选择自由风格

源码管理

Repository URL 填写具体GitHub上的仓库的url,如果为私有,需要继续添加Credentials,如果为公有直接填写url即可,Credentials为none

构建触发器

Poll SCM:可以配置定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。

构建环境

构建

构建方式选择调用顶层 Maven 目标

Goals是 Maven 命令,Setting file 是 Maven 的配置路径

clean install 的意思是删除以前编译过的target,然后重新编译生成war

构建后操作

这里需要Jenkins安装 "Deploy to container" 和 "Publish Over SSH" 两个插件,

系统管理 —> 管理插件 —> Available(可选插件),找到它并安装

安装好两个插件后,点击 “系统管理” –> “系统设置”

在key内填写Jenkins服务器的私钥,如果没有需要先在 Jenkins 服务器生成私钥与公钥。ssh-keygen -t rsa 回车后会在登录用户的家目录下生成一个.ssh 的目录,此目录下存在 id_rsa 私钥与 id_rsa.pub 公钥。用下面的命令将公钥发布至代码发布的目标服务器上

ssh-copy-id -i /root/.ssh/id_rsa.pub root@目标服务器IP地址

SSH配置
Name:需要将Web程序发布到目标服务器的名称,可自定义
Hostname:填写目录服务器的IP地址
Username:使用那个用户进行发布,此处为进行密钥互信的用户
Remote Directory:此处为发布到目标服务器的相对根路径,建议填写/,防止后续填写路径异常。

注:如果为多台目标服务器,可以继续添加,如果目标服务器存在代理,也可设置proxy

构建后操作

1、选择 Send build artifacts over SSH

Name:目标服务器的名称
Source files:从GitHub上拉去下来的原始文件
Remote directory:发布到目标服务器的制定目录
Exec command:制定后续的操作

2、配置邮件服务 (每次构建完后会往指定的邮箱发一份邮件)

3、Tomcat配置

vim /usr/local/apache-tomcat-7.0.91/conf/tomcat-users.xml

在 /tomcat-users.xml 配置文件<tomcat-users>......</tomcat-users>中添加tomcat的manager访问用户,用于发布war包。

<role rolename="manager-script"/>
<user username="test" password="123456" roles="manager-script"/>

webapps下只保留manager,删除其他文件夹。 
cd /usr/local/apache-tomcat-7.0.91/conf/Catalina/localhost

新建manager.xml文件,配置如下。

<Context privileged="true" antiResourceLocking="false" 
docBase="${catalina.home}/webapps/manager"> 
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> 
</Context>

保存退出

发布到Tomcat
选择 Deploy war/ear to a container
配置 tomcat 服务

tomcat的连接信息,用户名和密码(来自tomcat-users.xml)。

到这里就可以进行构建了,左边菜单有个立刻构建按钮,点击便可以构建,还可以点击 console output 查看日志 。

第一次构建会有点慢,Maven会去下很多插件和jar包。

在构建的时候,构建成功同时会把构建的war包部署到对应tomcat下,同时可以指定多个tomcat,集群化部署的时候很方便。

中间部分省略

此时到目标服务器上查看程序是否已经部署,也可以查看邮件是否收到。

CentOS6.X、7.X下Jenkins的安装及使用的更多相关文章

  1. Window下Jenkins的安装

    之前没接触过持续集成工具,之前只是了解了下自动化部署,最近一直在看自动化集成这块,发现要学的东西好多好多,可能在小公司用的不多,但如果在大公司,如果每个项目都要手动build.deploy的话那也太耗 ...

  2. Docker下Jenkins的安装部署、更新

    一.下载Jenkins镜像 docker pull jenkins/jenkins 二.创建挂载文件 mkdir /srv/jenkins chown -R : /srv/jenkins 三.启动Do ...

  3. Jenkins入门教程(一):Windos下Jenkins的安装教程

    Jenkins的安装教程 Jenkins安装前的准备 1.安装jenkins前首先确保你的电脑已经安装了JDK,由于jenkins是基于java开发的 JDK下载地址 2.下载jenkins的安装包 ...

  4. linux下jenkins的安装

    构建伟大,无所不能 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. 参考博客:https://www.cnblogs.com ...

  5. Linux下 jenkins的安装

    自动代码部署的 jenkins 安装, 第一步,从网上下载jenkins的war包 http://mirrors.jenkins.io/war/2.46/ 第二步:复制到tomcat的编译目录下去编译 ...

  6. 1 、在Linux(centos6.8)系统下的JDK安装与配置

    一.解压jdk安装包: 附上jdk1.8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...

  7. windows下jenkins的安装与配置

    项目自动化部署: https://www.cnblogs.com/wuxunyan/p/9592953.html https://blog.csdn.net/qq_37372007/article/d ...

  8. 安装Window下Jenkins

    之前没接触过持续集成工具,之前只是了解了下自动化部署,最近一直在看自动化集成这块,发现要学的东西好多好多,可能在小公司用的不多,但如果在大公司,如果每个项目都要手动build.deploy的话那也太耗 ...

  9. [Jenkins]CentOS7下Jenkins搭建

    最近在倒腾Kubernetes的一些东西,这次需要用到Jenkins来实现自动化构建.来讲一讲搭建的整个过程. Jenkins是什么 Jenkins提供了软件开发的持续集成服务.它运行在Servlet ...

随机推荐

  1. Tensorflow timeline trace

    根据 https://github.com/tensorflow/tensorflow/issues/1824 简单进行了测试 修改运行的脚本增加如下关键代码 例如mnist_softmax.py f ...

  2. 基于Redis实现分布式锁实战

    背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等.大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端 ...

  3. Wisdom RESTClient支持自动化测试并可以生成API文档

    Wisdom REST Client V1.2 支持自动化测试RESTful API并生成精美的测试报告,同时基于历史数据自动生成精美的RESTful API文档. 工具地址:https://gith ...

  4. tomcat 启动时遇到org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs

    当发生这样的错误的时候 org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet ...

  5. 阿里云端口失效导致tomcat无法对外提供服务

    下午,我们一个环境启动成功,但是却无法访问,经查看启动日志,如下: Mar 23, 2017 2:15:09 PM org.apache.coyote.http11.AbstractHttp11Pro ...

  6. Mac下Homebrew的安装与使用

    Homebrew简介,安装与使用 简介 Homebrew 官方网站 Homebrew是一个包管理器,用于安装Apple没有预装但你需要的UNIX工具.(比如著名的wget). Homebrew会将软件 ...

  7. Java利用JNI调用C/C++写成的DLL

    前言 由于学期作业的要求,笔者需要开发一个语音识别系统.出于对Java的热爱,笔者非常想用Java来写上层程序(前台+数据库的三层),又要用到Microsoft Speech SDK,所以在这些条件下 ...

  8. golang Format string by key.

    example: $ go get github.com/hoisie/mustache package main import ( "github.com/hoisie/mustache& ...

  9. 【python010-数组】

    1.创建列表 *创建普通列表 >>> member = ['尘封','破冰','python']>>> member['尘封', '破冰', 'python'] * ...

  10. 2018年11月20日 远交近攻 list1

    list 列表用法 li=[1,2,3,"abc"] #列表中的元素,可以为数字或者字符串或者布尔值或者就是列表等,所有都能放进去 #列表中也能嵌套列表 pi=[1,2,3,[2, ...