CentOS6.X、7.X下Jenkins的安装及使用
一、相关概念
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)
前置条件
- 安装jdk1.7或以上版本
- 安装Git
- 安装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的安装及使用的更多相关文章
- Window下Jenkins的安装
之前没接触过持续集成工具,之前只是了解了下自动化部署,最近一直在看自动化集成这块,发现要学的东西好多好多,可能在小公司用的不多,但如果在大公司,如果每个项目都要手动build.deploy的话那也太耗 ...
- Docker下Jenkins的安装部署、更新
一.下载Jenkins镜像 docker pull jenkins/jenkins 二.创建挂载文件 mkdir /srv/jenkins chown -R : /srv/jenkins 三.启动Do ...
- Jenkins入门教程(一):Windos下Jenkins的安装教程
Jenkins的安装教程 Jenkins安装前的准备 1.安装jenkins前首先确保你的电脑已经安装了JDK,由于jenkins是基于java开发的 JDK下载地址 2.下载jenkins的安装包 ...
- linux下jenkins的安装
构建伟大,无所不能 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. 参考博客:https://www.cnblogs.com ...
- Linux下 jenkins的安装
自动代码部署的 jenkins 安装, 第一步,从网上下载jenkins的war包 http://mirrors.jenkins.io/war/2.46/ 第二步:复制到tomcat的编译目录下去编译 ...
- 1 、在Linux(centos6.8)系统下的JDK安装与配置
一.解压jdk安装包: 附上jdk1.8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...
- windows下jenkins的安装与配置
项目自动化部署: https://www.cnblogs.com/wuxunyan/p/9592953.html https://blog.csdn.net/qq_37372007/article/d ...
- 安装Window下Jenkins
之前没接触过持续集成工具,之前只是了解了下自动化部署,最近一直在看自动化集成这块,发现要学的东西好多好多,可能在小公司用的不多,但如果在大公司,如果每个项目都要手动build.deploy的话那也太耗 ...
- [Jenkins]CentOS7下Jenkins搭建
最近在倒腾Kubernetes的一些东西,这次需要用到Jenkins来实现自动化构建.来讲一讲搭建的整个过程. Jenkins是什么 Jenkins提供了软件开发的持续集成服务.它运行在Servlet ...
随机推荐
- Java开发学习教程之对象的创建与使用
java面向对象中的对象创建与使用.类是对象的抽象,为对象定义了属性和行为,但类本身既不带任何数据,也不存在于内存空间中.而对象是类的一个具体存在,既拥有独立的内存空间,也存在独特的属性和行为,属性还 ...
- mysql配置主从复制和常见问题
克隆192.168.138.130(主库),修改后的ip为192.168.138.130(从库),修改131机器的/etc/udev/rules.d/70-persistent-net.rules,将 ...
- Springboot项目修改html后不需要重启---springboot项目的热部署
一.spring-boot-devtools 在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</gr ...
- Android - Resource 之 Layout 小结
Layout定义了一个Activity的UI框架,或者是一个UI的组件. 文法如下: ?xml version="1.0" encoding="utf-8"?& ...
- poj 1456 Supermarket - 并查集 - 贪心
题目传送门 传送点I 传送点II 题目大意 有$n$个商品可以销售.每个商品销售会获得一个利润,但也有一个时间限制.每个商品需要1天的时间销售,一天也只能销售一件商品.问最大获利. 考虑将出售每个物品 ...
- 从输入URL到页面显示发生了什么
阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回 ...
- Android系统更新防互刷功能实现与分析【转】
本文转载自:https://blog.csdn.net/huangyabin001/article/details/44465145 版权声明:本文为博主原创文章,未经博主允许不得转载. htt ...
- emmc和ssd的区别【转】
本文转载自:https://blog.csdn.net/hawk_lexiang/article/details/78228789 emmc和ssd eMMC和SSD主要是满足不同需求而发展出来的NA ...
- LOJ121 「离线可过」动态图连通性
思路 动态图连通性的板子,可惜我不会在线算法 离线可以使用线段树分治,每个边按照存在的时间插入线段树的对应节点中,最后再dfs一下求出解即可,注意并查集按秩合并可以支持撤销操作 由于大量使用STL跑的 ...
- 使用vue做表单验证
<template> <Form ref="formInline" :model="formInline" :rules="rule ...