Github配置:
settings => Developer settings => Personal access tokens
=> 新增 tokens
配置钩子:
Jenkins安装
Jenkins基于Java, 所以需要先安装java。
jdk官方下载: 地址
选择符合你自己系统版本JDK,下载安装,配置,不懂可以百度,很简单,相信都会.
Linux下安装java只要配置java环境变量即可。
首先,解压java到相应目录,我一般习惯把安装的软件放到目录/usr/local下。
tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib编辑环境变量,在/etc/profile文件中添加环境变量,Linux的所有用户都可以使用。
vim /etc/profile
在文件最后添加内容如下(shift + g):
export JAVA_HOME=/usr/lib/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jart
安装Jenkins
CentOS 安装:
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
ubuntu简单来说需要下面四步:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
查看是否有安装好的程序进程 ps -aux |grep java
启动关闭
sudo service jenkins start/stop/restart
启动报如下错误
Starting Jenkins bash: /usr/bin/java: No such file or directory
修改Jenkins启动配置文件,指定java安装路径。
vim /etc/init.d/jenkins
在candidates中第一行添加java路径,如下:
candidates="
/opt/soft/jdk1.8.0_60/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/bin/java
"
修改防火墙允许8080端口访问
firewall的修改方法:
添加
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
iptables的修改方法:
vim /etc/sysconfig/iptables
加入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
重启防火墙生效
sudo service iptables restart
第一种:更换源的问题
jenkins->系统管理->管理插件->高级
把:http://updates.jenkins-ci.org/update-center.json
换成:http://mirror.esuni.jp/jenkins/updates/update-center.json
镜像地址查询:
http://mirrors.jenkins-ci.org/status.html
在浏览器中访问
首次进入会要求输入初始密码如下图,
初始密码在:/var/lib/jenkins/secrets/initialAdminPassword
一、进入Jenkins
在浏览器输入网址:http://localhost:8080/jenkins/,进入Jenkins;
二、新建项目
首页左侧点击”新建“,输入项目名称和指定构建什么类型的项目;
其中,
构建一个自由风格的软件项目:Jenkins主要功能,结合任何SCM和任何构建系统构建项目,甚至可以构建软件以外的系统
构建一个maven项目:Jenkins利用指定POM.xml文件,大大减轻构建配置
构建一个多配置项目:如多环境测试、平台指定构建等
监控一个外部的任务:允许记录执行在外部Jenkins的任务,任务甚至运行在远程机器上
复制已存在的job:
这里,选择构建一个自由风格的软件项目;
三、项目配置
点击进入新建的项目,进行配置;
0 基本配置
丢弃旧的构建:可以只保留几天内的构建历史或只保留几个构建历史
参数化构建过程:可以配置参数,每次执行构建时需要给参数赋值
关闭构建:重新开启构建前不允许进行新的构建
在必要时并发构建:
Restrict where this project can be run:当配置slave节点后,通过该选择执行构建的节点,可以是master主机或slave节点
源码管理
构建触发器 构建环境 Bindings
构建
构建后操作
系统管理 配置
1 高级配置
安静期:一个任务计划中的构建在开始前需要读取开始前的配置信息;不选中则使用系统默认值
重复次数:若从版本库签除代码失败,则Jenkins会按指定次数重试后再放弃
该项目的上游项目正在构建时阻止该项目构建:当项目有依赖关系时,需要勾选
该项目的下游项目正在构建时阻止该项目构建:
使用自定义的工作空间:每个Jenkins任务都会有唯一一个工作空间目录,下载源代码,构建的整个过程都是在这个工作空间中
显示名称:仅供Jenkins Web页面显示
2 源码管理
Jenkins支持多种源码管理服务器;
这里选择Git,因为本文主旨就是搭建Jenkins+Github环境;
其中,
Repository URL是你的Github上代码更新会触发Jenkins的repo的ssh key;
Credentials是权限认证,需要添加,即输入访问该repo的用户名和密码;
源码库浏览器是该repo的URL,是可选的;
3 构建触发器
根据项目需要,选择触发Jenkins的方式;
其中,
Trigger builds remotely (触发远程构建,如使用远程脚本触发自动构建):可通过电子邮件触发项目构建,或通过脚本提交一个构建请求
Build after other projects are built (在其他项目构建完成后执行该构建):可设置多个依赖的jobs,当任意一个依赖的job成功构建后启动此构建,多个依赖的jobs之间用","隔开
Build periodically (定期构建):不管源码是否有更新,周期构建,在”日程表“中定义触发时间
Build when a change is pushed to Github (当源码更新推送到Github后执行该构建):
Poll SCM (定期检查源码是否更新):定时检查源码更新,有更新则执行构建,没有更新就不执行;在”日程表“中定义触发时间
其中,日程表用空格或Tab键分隔5个字段,分别代表"MINUTE(分钟,0~59)", "HOUR(小时,0~23)", "DOM(日,1~31)", "MONTH(月,1~12)", "DOW(星期,0~7)";
这里,选择Poll SCM,参数值为"H/2 * * * *",即设置每2分钟检查Github的指定repo有无源码更新;
(PS:对于Build when a change is pushed to Github,目前还没成功过);
4 构建环境
根据需要进行选择;
Delete workspace before build starts:构建执行前删除工作区
Abort the build if it's stuck:如果构建卡住,中止该构建
Add timestamps to the Console Output:在控制台添加时间戳
Use secret text(s) or file(s):使用密文
这里,选择添加时间戳;
5 构建
Execute Windows batch command:执行Windows命令行,默认当前路径是当前job的workspace
Execute shell:运行shell、Python、perl、ruby等脚本
Invoke Ant:调用Ant构建
Ant Version:指定使用的Ant版本,下拉列表中显示系统配置中配置的所有Ant版本,不要选择Defualt
Targets:指定需要执行的Target,不填写时默认执行build脚本中的Default target
Build File:指定需要执行的build脚本文件,可使用绝对路径或相对路径,默认相对路径根目录是当前任务的workspace
Properties:指定Ant变量
Java Options:若需要添加用户自定义的ANT_OPTS,在这里添加,如-Xmx512m
Invoke top-level Maven targets:调用Maven构建
Maven Version:指定所使用的Maven版本
Goals:执行的Maven命令行,不需要加mvn
POM:指定pom.xml文件
这里,构建执行一个python程序;
6 构建后操作
Aggregate downstream test result:整合Downstream测试
Archive the artifacts:将生成的文件存档,如.zip/.jar文件,以备以后下载用
Build other projects:最常用操作,在一个构建任务完成后,可触发另一个构建任务,如部署任务完成后可触发下游任务自动化测试;根据不同场景选择不同的触发方式
Publish JUnit test result report:将JUnit Test报告打印到展示平台
Publish Javadoc:打印Javadoc
Record fingerprints of files to track usage:Jenkins记录一个文件的指纹,用来追踪该jar包是什么时间打的
Deploy war/ear to a Container:将包部署到一个容器上,目前支持Tomcat、JBoss、Glassfish
WAR/EAR files:需要部署的war/ear包的文件,需要指定目录
Context path:
Container:选择容器,包括容器的对应版本
Manage user name:管理员的用户名
MAnager password:管理员的密码
Tomcat URL:Tomcat URL地址
Deploy on failure:配置任务失败时是否仍然部署
Email Notification:邮件通知
Editable Email Notification:
四、执行构建
1 手动执行
点击"立即构建(build now)";
执行结果:
2 自动执行
在Github指定repo上有源码更新,必须从本地push到远程主机;
更新到远程主机之后2分钟,Jenkins检测有更新,则自动触发构建执行;
执行结果: