Git + jenkins 部署CI环境

Github配置:
settings => Developer settings => Personal access tokens
=> 新增 tokens

图片.png
图片.png

配置钩子:


图片.png

Jenkins安装
Jenkins基于Java, 所以需要先安装java。
jdk官方下载: 地址

图片.png

图片.png

选择符合你自己系统版本JDK,下载安装,配置,不懂可以百度,很简单,相信都会.

Linux下安装java只要配置java环境变量即可。

  1. 首先,解压java到相应目录,我一般习惯把安装的软件放到目录/usr/local下。
    tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib

  2. 编辑环境变量,在/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->系统管理->管理插件->高级


图片.png

把: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 基本配置

图片.png

丢弃旧的构建:可以只保留几天内的构建历史或只保留几个构建历史
参数化构建过程:可以配置参数,每次执行构建时需要给参数赋值
关闭构建:重新开启构建前不允许进行新的构建
在必要时并发构建:
Restrict where this project can be run:当配置slave节点后,通过该选择执行构建的节点,可以是master主机或slave节点

源码管理

图片.png

构建触发器 构建环境 Bindings

图片.png

图片.png
图片.png

构建

图片.png

构建后操作

图片.png

系统管理 配置

图片.png

图片.png
图片.png

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检测有更新,则自动触发构建执行;
执行结果:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容