注:本文来源于《KaliArch

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)

二、安装部署

2.1 yum安装

最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8
安装jdk1.8

yum install -y java-1.8.0-openjdk && \
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\
yum clean all && yum makecache && \
yum install -y jenkins && \
systemctl start jenkins

less /var/log/jenkins/jenkins.log //查询admin密码
访问 http://ip:8080/ 进行安装
jenkins相关目录:
rpm -ql jenkins #查看jenkins安装相关目录
安装目录/var/lib/jenkins
配置文件
/etc/sysconfig/jenkins
日志目录
/var/log/jenkins

2.2 下载war包安装

yum install -y java-1.8.0-openjdk && mkdir -p /usr/local/jenkins/ && \
wget -c -O /usr/local/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war &&\
nohup java -jar /usr/local/jenkins/jenkins.war &

密码查看:/root/.jenkins/secrets/initialAdminPassword
访问 http://ip:8080/ 进行安装

2.3 docker形式安装

yum install docker -y  && systemctl start docker && \
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s && systemctl restart docker
docker search jenkins
docker pull docker.io/jenkins
docker run -d -p 8080:8080 docker.io/jenkins

docker exec -it 52873fa3dce4
/bin/bash

cat
/var/jenkins_home/secrets
 #查看密码
访问 http://ip:8080/ 进行安装

2.4 相关工具安装

工具安装可在jenkins的web界面系统管理---管理插件---可选插件勾选需要的,也可以手动安装。

a.git安装

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
tar xf git-2.7.3.tar.gz
cd git-2.7.3
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

b.maven安装

cd /usr/local/ && wget -c wget  http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz &&\
tar -zxf apache-maven-3.5.2-bin.tar.gz && \
echo "export PATH=$PATH:/usr/local/apache-maven-3.5.2/bin" > /etc/profile.d/maven.sh && \
source /etc/profile.d/maven.sh

mvn --version 查看版本

c.svn安装

yum install subversion -y
mkdir /svnrepo
svnadmin create /svnrepo/project1 #创建一个新的Subversion项目




启动项目1:svnserve -d -r /svnrepo/project1/
启动整个项目:svnserve -d -r /svnrepo/

d.jdk安装

某些情况下会遇到openjdk无法编译java程序,或在编译中存在异常,需要我们手动安装jdk,首先去Oracle官网下载对应版本的jdk

tar -zxvf jdk-8u121-linux-x64.gz -C /usr/local && \
ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk1.8 && \
echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
source /etc/profile.d/java.sh

三、WEB界面配置

3.1 密码破解

 cd /var/lib/jenkins/users/admin          #此为admin用户的目录,也可以对应自己创建的用户
vim config.xml //定位到<passwordHash>那一行
删除改行,改为
<passwordHash>#jbcrypt:$2a$10$pDQks0ytOkCfmpdgpLygrOC3uY7i/XnZHBKRQDhrBPwKoN2f5Kz8C</passwordHash>

重启一下jenkins
新密码为admin

3.2 maven配置

针对之前手动安装的maven需要在web界面配置进行结合。
系统管理---全局工具配置(Maven
Configuration)配置:

此处为手动安装的maven,需要取消自动安装maven,name可以自定义,MAVEN_HOME指定下载安装的maven具体文件目录

3.3 GIT配置

手动安装的git,web界面只需添加具体可执行路径即可

3.4 jdk配置

对应手动安装的jdk,需要web配置java_home路径

3.5 邮件配置

jenkins有内置的邮件功能但由于其对于成功的发布不会发送邮件可定制化程度低,在此直接配置插件邮件(Editable
Email
Notification),2.32以上版本的jenkins,常用的插件都已经在最初部署的时候安装了(如果你当初选择的是suggest的plugins)。
可以使用qq邮件服务器或163等其他邮件服务器,在此配置使用163邮箱,首先需要开启163邮箱的smtp服务。

需要记录此处开启smtp时的密码。
在jenkins
系统管理---系统设置---Extended E-mail Notification

在默认的触发器
Default Triggers
标签下,可以勾选邮件通知触发的情况,如任何情况下均需要选择always,也可以在仅失败情况下发送,也可以对应的邮件接受人不通,进行邮件分类。
以下的内容,如邮件主题,内容均可自定义,可以参考url:
至此全局插件邮件已经配置完毕,需要在具体的项目中使用此邮件进行发送通知。

四、实战php程序自动发布

4.1 插件安装

系统管理---管理插件---已安装
检查是否有“Git
plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它并安装
安装好两个插件后,点击“系统管理”--
“系统设置”

4.2 SSH配置

系统管理---系统设置---Publish over SSH
在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 Server配置
name:需要将php程序发布到目标服务器的名称,可自定义
Hostname:填写目录服务器的IP地址
Username:使用那个用户进行发布,此处为进行密钥互信的用户
Remote
Directory:此出为发布到目标服务器的相对根路径,建议填写/,防止后续填写路径异常。

注:如果为多台目标服务器,可以继续添加,如果目标服务器存在代理,也可设置proxy

4.3 构建项目

新建Item---填入项目名称---选择构建一个自由风格的软件项目---确定
源码管理选择git
Repository
URL
填写具体git上的仓库url,如果为私有,需要继续添加Credentials,如果为公有直接填写url即可,Credentials为none,

构建后够操作
选择(Send
files or execute commands over SSH)
SSH
Server选择目标服务器如:php-server
Source
files:/ #将git拉去下来的原始文件
Remote
directory:/var/www/html #发布到目标服务器的制定目录
Exec
command:chown apache:apache -R /var/www/html/* #制定后续的操作

此时可以选择Editable Email Notification来构建邮件通知。
在此处,之前的邮件主题,内容均可以自定义,在高级里面,选择邮件接受人。

点击保存,并立即构建,可以点击console output查看日志


此时打开php程序发现程序文件已经成功发布到目标服务器上

此时可以查看邮件也已经发送成功。

©著作权归作者所有:来自51CTO博客作者KaliArch的原创作品,如需转载,请注明出处,否则将追究法律责任

jenkins自动发布java代码

jenkins笔记(1)进行实战java代码发布,此利用github私有仓库拉去,jenkins利用maven编译源码后讲包发布致web服务器。

一、git私有仓库创建

可参考GIT笔记中远程仓库搭建部分,此处java源码使用zrlog,将源码pull到github上,将jenkins公钥配置到github上,即可下一波。

二、web服务器tomcat配置

在需要将代码发布的web服务器上需要配置tomcat的manager页面。

yum install java-1.8.0-openjdk.x86_64 -y && \
wget -c -O /usr/local/apache-tomcat-9.0.2.tar.gz && \ http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz && \
cd /usr/local/ && tar -xf apache-tomcat-9.0.2.tar.gz &&\
  • 1
  • 2
  • 3

此时tomcat已经安装成功,需要配置manager页面。

需要在/usr/local/tomcat/conf/tomcat-users.xml 添加以下内容。

<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user name="admin" password="kaliarch" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

修改完毕如上图,添加manager的role角色权限,其次需要修改manger页面的源控访问,添加jenkins的ip为白名单内。

修改/usr/local/tomcat/webapps/manager/META-INF/context.xml

默认tomcat的manager页面只允许本地的和ipv6的地址,此处我的jenkins服务器ip为:172.20.6.0/24,可根据实际情况来定,支持网段,不要开放全部开放0.0.0.0,以防黑客入侵。



配置完成后需要启动tomcat/usr/local/tomcat/bin/startup.sh

此时,我们可以进行测试web服务器的tomcatmanager界面,http://IP:8080/manager/index.html

填写配置文件内的用户名:admin,密码:kaliarch

三、创建发布项目

发布java,需要安装两个插件,Maven
Integration plugin 和 Deploy to container Plugin,若没有安装则需要安装这两个插件
安装完插件后,需要重启jenkins。

3.1 新建item

输入项目名称,选择构建一个maven项目,确定。

3.2 配置源码管理

源码管理选择git,填入仓库url


此时发现会出现报错信息,因为此仓库为我的私有仓库,需要配置Credentials,点开add,
Add Credentials的 Kind选择SSH Username with private
key,Username选择之前在github上传的公钥用户的用户名,此次为root,Private
Key为jenkins服务器登录github的本地私钥,查看私钥cat /root/.ssh/id_rsa
复制粘贴到Key区域,完成添加。此时可以发现报错已经消失。

3.3 配置发布到web服务器

添加增加构建后操作,选择Deploy
war/ear to a container,WAR/EAR
files填写**/*.war,Containers选择增加容器,增加tomcat
8.x,Credentials点add,此处填写的为tomcat的manager页面的用户名密码,此处为admin/kaliarch,

tomcat url填写web服务器的tomcaturl,

3.4 配置邮件信息通知

添加增加构建后操作,选择Editable
Email Notification,利用插件邮件来发送通知。

可以根据需求自定义邮件主题与内容,此处添加信息接受人,由于全局配置了always,在高级设置内,填写接受人邮箱。

3.5 信息查看

点击保存,并立即构建,可以查看日志信息。

登录web服务器,查看war包已经发布完成。


打开web页面进行测试。

查看邮件通知。

至此,java程序已经完成发布,之后修改代码后可以提交到github,然后通过jenkins自动发布即可。

--------------------- 本文来自 KaliArch 的CSDN 博客
,全文地址请点击:https://blog.csdn.net/qq_26848099/article/details/79400753?utm_source=copy

==============================

jenkins自动发布java代码的更多相关文章

  1. Jenkins自动发布代码实战篇

    Jenkins自动发布代码实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Jenkins服务器配置秘钥对并上传到Gitlab中 1>.在Jenkins后端生成秘钥 ...

  2. 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建

    使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 目录 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 使用jenkins自动 ...

  3. wsdl自动生成Java代码,根据wsdl生成Java代码

    wsdl自动生成Java代码,根据wsdl生成Java代码 >>>>>>>>>>>>>>>>>&g ...

  4. mybatis自动生成java代码

    SSM框架没有DB+Record模式,写起来特别费劲,只能用下面的方法勉强凑合. 上图中,*.jar为下载的,src为新建的空白目录,.xml配置如下. <?xml version=" ...

  5. SVN——Jenkins自动发布

    最近公司项目处于开发阶段,很多功能开发完后就需要发布到测试环境等待测试去验收,这个时候如果手动更新网站的话,是很费时费力的. 于是乎,我们做成了自动发布,这样我们只管提交代码到SVN就行了,发布由软件 ...

  6. 使用Gradle自动发布Java Web到SAE

    博客已迁移,请访问:http://www.huangyunkun.com/ 现在像SAE这类的应用引擎已经比较多了,百度和腾讯都出了这样的东西. 我很早的时候就开始用SAE,当时还为了迁就SAE学习了 ...

  7. gitlab+jenkins自动发布Python包到私有仓储

    背景 有个私有仓储,地址为https://your.repo.com/pypi/ 代码存储在gitlab, 地址为https://gitlab.company.com/software.git CI为 ...

  8. saltstack 迭代项目到客户端并结合jenkins自动发布多台服务器

    前面已经讲解了Webhook实现Push代码后的jenkins自动构建,接下来通过结合slatstack 实现多台机器的项目代码发布. 利用saltstack中file.recurse方法,运用该模块 ...

  9. 使用Jenkins自动发布Windows服务项目

    不同于发布Web项目,自动发布Windows服务项目需要解决以下几个问题: 如何远程停止和开启服务?需要在发布前停止服务,在发布完成后开启服务. 如何上传编译文件到目标服务器? 问题1:如何远程停止和 ...

随机推荐

  1. sqlserver二进制存储

    CREATE TABLE myTable_yq(Document varbinary(max),yq varchar(20)) --SELECT @xmlFileName = 'c:\TestXml. ...

  2. 【51nod 1191】消灭兔子

    Description 有N只兔子,每只有一个血量B[i],需要用箭杀死免子.有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M).假设 ...

  3. QWidget-控件层级关系

    lower()     将控件降低到最底层 raise_()     将控件提升到最上层 label.raise_() a.stackUnder(b)    让a放在b下面 注意:以上操作专指同级控件 ...

  4. HashMap的源码,实现原理,底层结构

    转载一遍不错的文章,让你深入了解HashMap http://www.cnblogs.com/ITtangtang/p/3948406.html

  5. Python 关于在ubuntu部署Django项目

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  6. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)

    使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...

  7. [转] 指定进程运行的CPU

    转自:https://www.cnblogs.com/liuhao/archive/2012/06/21/2558069.html coolshell最新的文章<性能调优攻略>在“多核CP ...

  8. 案例一(haproxy+keepalived高可用负载均衡系统)【转】

    1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...

  9. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?

    如java中:if(name == null)和if(null == name)有什么讲究吗? 答:在java里面,它们是一样的.但是通常写为null == name.这其实是在C语言里面引申出来的. ...

  10. Cannot open Eclipse Marketplace

    (1) window->preferences->General->Network Connections,Active Provider处勾选Manual (2)在eclipse. ...