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 ...
随机推荐
- @Configuration与@Bean作用
Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @ ...
- table表格超出部分显示省略号
做table表格时,某一列字数比较多,希望超出宽度的部分以省略号显示 设置table的布局 默认automatic 以表格内容显示相应宽度 改成fixed 以表格列宽显示内容 table{ ta ...
- react复习总结(2)--react生命周期和组件通信
这是react项目复习总结第二讲, 第一讲:https://www.cnblogs.com/wuhairui/p/10367620.html 首先我们来学习下react的生命周期(钩子)函数. 什么是 ...
- javascript 与 PHP 通信加密,使用AES 128 CBC no padding,以及ios,java,c#文章例子
运行环境 php7.0 不适用于 php7.0以上版本,因为mcrypt_encrypt()函数已删除 为何要采用 no padding 这种形式: AES加密如果原输入数据不够16字节的整数位,就要 ...
- Golang对文件读写操作
package main import ( "bufio" "fmt" "io" "os" ) //写 func Wri ...
- fjwc2019
机房搬迁.......再加上文化课.......咕了十几天才有空补上....... day0听一个教授讲理论......在学长的带领下咕掉了..... D1 T1:#178. 「2019冬令营提高组」 ...
- 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. ...
- ThirdAPI
//public class ThirdAPI //{ // [DllImport("ThirdAPI.dll")] // public static extern int Ini ...
- intel FPGA使用
https://www.altera.com/documentation/swn1503506366945.html https://files.cnblogs.com/files/shaohef/o ...
- ORA-16038 ORA-19809 ORA-00312
问题表现: 连接数据库启动报错,ORA-03113, 查看详细的alert日志发现更多报错,如下 ORA-19809: 超出了恢复文件数的限制ORA-19804: 无法回收 209715200 字节磁 ...