一、相关概念

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. @Configuration与@Bean作用

    Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @ ...

  2. table表格超出部分显示省略号

    做table表格时,某一列字数比较多,希望超出宽度的部分以省略号显示 设置table的布局 默认automatic 以表格内容显示相应宽度 改成fixed 以表格列宽显示内容 table{    ta ...

  3. react复习总结(2)--react生命周期和组件通信

    这是react项目复习总结第二讲, 第一讲:https://www.cnblogs.com/wuhairui/p/10367620.html 首先我们来学习下react的生命周期(钩子)函数. 什么是 ...

  4. javascript 与 PHP 通信加密,使用AES 128 CBC no padding,以及ios,java,c#文章例子

    运行环境 php7.0 不适用于 php7.0以上版本,因为mcrypt_encrypt()函数已删除 为何要采用 no padding 这种形式: AES加密如果原输入数据不够16字节的整数位,就要 ...

  5. Golang对文件读写操作

    package main import ( "bufio" "fmt" "io" "os" ) //写 func Wri ...

  6. fjwc2019

    机房搬迁.......再加上文化课.......咕了十几天才有空补上....... day0听一个教授讲理论......在学长的带领下咕掉了..... D1 T1:#178. 「2019冬令营提高组」 ...

  7. com.mchange.v2.c3p0.impl.NewPooledConnection@be1839d closed by a client的正确解答

    关于c3p0在debug模式下控制台抛出的如下异常: java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE at com.mchange. ...

  8. ThirdAPI

    //public class ThirdAPI //{ // [DllImport("ThirdAPI.dll")] // public static extern int Ini ...

  9. intel FPGA使用

    https://www.altera.com/documentation/swn1503506366945.html https://files.cnblogs.com/files/shaohef/o ...

  10. ORA-16038 ORA-19809 ORA-00312

    问题表现: 连接数据库启动报错,ORA-03113, 查看详细的alert日志发现更多报错,如下 ORA-19809: 超出了恢复文件数的限制ORA-19804: 无法回收 209715200 字节磁 ...