jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]
介绍
DevOps是“开发”和“运维”的缩写。
DevOps是一组最佳实践强调(IT研发、运维、测试)在应用和服务生命周期中的协作和沟通,强调整个组织的合作以及交付和基础设施变更的自动化,从而实现持续集成、持续部署和持续交付
DevOps平台四大模块
- 项目管理 (创建项目--->>项目需求)
- 运维平台 (监控--日志收集---等)
- 持续交付 (提交完代码--->自动打包--->构建)
- 代码托管 (gitlab---->代码提交)
————————————————————>>DevOps平台
针对DevOps开源项目
- 项目管理---(JIRA非开源但是用的人比较多)、(Redmine使用ruby写的)
- 代码托管---(SVN--usvn有web管理界面)、(GitLab)
- 持续交付---(主流Jenkins)、(GitLab gitlab-ci也可以做交付)
- 运维平台---(国内的开源运维平台可能就是腾讯蓝鲸)
Jenkins 介绍
Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有。Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson
Maven 介绍
maven的用途
maven是一个项目构建和管理的工具,提供了帮助
管理 构建、文档、报告、依赖、scms、发布、分发
的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性
利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
maven的核心概念介绍
Pom
pom是指project object Model。pom是一个xml,在maven2里为pom.xml。是maven工作的基础,在执行task或者goal时,maven会去项目根目录下读取pom.xml获得需要的配置信息
pom文件中包含了项目的信息和maven build项目所需的配置
Artifact
这个有点不好解释,大致说就是一个项目将要产生的文件,可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId:artifactId:version组成的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中
Repositories
Repositories是用来存储Artifact的。如果说我们的项目产生的Artifact是一个个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也可以储存别人造的工具,我们在项目中需要使用某种工具时,在pom中声明dependency,编译代码时就会根据dependency去下载工具(Artifact),供自己使用。
Build Lifecycle
是指一个项目build的过程。maven的Build
Lifecycle分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们都包含不同的lifecycle。
Build Lifecycle是由phases构成的
....
参考: 关于Maven常用参数及说明
SVN介绍
SVN是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个固态的跨平台的开源的版本控制系统。SVN版本管理工具管理者随时间改变的各种数据。这些数据放置在一个中央资料档案库repository中,这个档案库很像一个普通的文件服务器或者FTP服务器,但是,与其他服务器不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本,当然也可以直接浏览指定的更新历史记录。
Nexus介绍
maven的仓库只有两大类:
- 本地仓库
- 远程仓库
在远程仓库中又分成了3种:
- 中央仓库
- 私服
- 其它公共库。
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。
Maven私服的 个特性:
- 节省自己的外网带宽:减少重复请求造成的外网带宽消耗
- 加速Maven构件:如果项目配置了很多外部远程仓库的时候,构建速度就会大大降低
- 部署第三方构件:有些构件无法从外部仓库获得的时候,我们可以把这些构件部署到内部仓库(私服)中,供内部maven项目使用
- 提高稳定性,增强控制:Internet不稳定的时候,maven构建也会变的不稳定,一些私服软件还提供了其他的功能
- 降低中央仓库的负荷:maven中央仓库被请求的数量是巨大的,配置私服也可以大大降低中央仓库的压力
因此我们在实际的项目中通常使用私服来间接访问中央仓库,项目通常不直接访问中央仓库
流程图
环境搭建
环境准备
系统版本 | 内核版本 | IP地址 |
---|---|---|
Centos 7.5 | 4.18.9-1.el7.elrepo.x86_64 | 172.20.0.50 |
备注 该系统采用MINI
最小化安装,安装之后对系统进行了最基础的优化操作,操作过程点击这里
JDK版本 | Tomcat版本 | Jenkins 版本 | maven 版本 | nexus 版本 |
---|---|---|---|---|
8u191 | 8.5.35 | 1.8.0_144 | 3.6.0 | 3.14.0 |
下载地址:
组件 | 官网下载地址 | 百度云盘下载地址 |
---|---|---|
CentOS 7.5 | 阿里云镜像下载地址 | 无 |
JDK | ORACLE官网下载地址 | 百度云盘下载地址 提取码:d06b |
Tomcat | ORACLE官网下载地址 | 百度云盘下载抵制 提取码:m86p |
Jenkins RPM包 | Jenkins官网下载地址 | 百度云盘下载地址 提取码:bk0t |
Jenkins WAR包 | Jenkins官网下载地址 | 百度云盘下载地址 提取码:59f5 |
Maven | Maven官网下载地址 | 百度云盘下载地址 提取码:y49l |
Nexus | Nexus官网下载地址 | 百度云盘下载地址 提取码:iyw5 |
以上的官网地址在当前都是有效的,如果失效,可以在百度云盘中下载,也是从官网下载的,如不放心,可自行在别出现在。
配置JDK环境
[root@jenkins opt]# pwd
/opt
[root@jenkins opt]# ls -ld jdk-8u191-linux-i586.tar.gz
-rw-r--r-- 1 root root 194712017 Dec 4 15:06 jdk-8u191-linux-i586.tar.gz
[root@jenkins opt]# tar xf jdk-8u191-linux-i586.tar.gz
[root@jenkins opt]# ls jdk1.8.0_191/
bin COPYRIGHT include javafx-src.zip jre lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
配置环境变量:
[root@jenkins opt]# tail -3 /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
[root@jenkins opt]# source /etc/profile
[root@jenkins opt]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) Server VM (build 25.191-b12, mixed mode)
安装私服 Nexus
首先下载好nexus安装包,然后安装
[root@jenkins opt]# ls -ld nexus-3.14.0-04-unix.tar.gz
-rw-r--r-- 1 root root 125423547 Dec 3 14:34 nexus-3.14.0-04-unix.tar.gz
[root@jenkins opt]# tar xf nexus-3.14.0-04-unix.tar.gz
[root@jenkins opt]# ls -ld nexus-3.14.0-04 sonatype-work/
drwxr-xr-x 9 root root 4096 Dec 4 16:58 nexus-3.14.0-04
drwxr-xr-x 3 root root 4096 Dec 4 16:58 sonatype-work/
[root@jenkins opt]# mv nexus-3.14.0-04 nexus3
这样就安装完成了
启动私服 Nexus
[root@jenkins opt]# cd nexus3/
[root@jenkins nexus3]# ls
bin deploy etc lib NOTICE.txt OSS-LICENSE.txt PRO-LICENSE.txt public system
[root@jenkins nexus3]# ./bin/nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus
[root@jenkins nexus3]# netstat -lntup | grep 8081
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 3097/java
Nexus 默认web端口是8081
,这样通过ip+端口就可以访问了,默认用户:admin,密码:admin123
这样就完成了Nexus部署
安装 Maven
下载好对应的Maven安装包
[root@jenkins opt]# ls apache-maven-3.6.0-bin.tar.gz -ld
-rw-r--r-- 1 root root 9063587 Oct 25 03:20 apache-maven-3.6.0-bin.tar.gz
[root@jenkins opt]# tar xf apache-maven-3.6.0-bin.tar.gz
[root@jenkins opt]# mv apache-maven-3.6.0 maven3
[root@jenkins opt]# ls maven3/
bin boot conf lib LICENSE NOTICE README.txt
配置环境变量
[root@jenkins opt]# tail -3 /etc/profile
# maven export
export M2_HOME=/opt/maven3
export PATH=${M2_HOME}/bin:$PATH
[root@jenkins opt]# source /etc/profile
[root@jenkins opt]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T14:41:47-04:00)
Maven home: /opt/maven3
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /opt/jdk1.8.0_191/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.9-1.el7.elrepo.x86_64", arch: "i386", family: "unix"
配置 Maven 连接 私服 Nexus
这里需要修改/opt/maven3/conf/settings.xml
配置文件,把settings.xml文件中的mirrors修改为Nexus私服地址
[root@jenkins opt]# cd maven3/conf/
[root@jenkins conf]# ls
logging settings.xml toolchains.xml
[root@jenkins conf]# head -160 settings.xml | tail -15
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
-->
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://172.20.0.50:8081/nexus/content/groups/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
</mirrors>
主要是修改url标签中的地址路径即可,这样在jenkins自动构建时项目中的jar包等,会自动从改地址中下载
完成。
安装 Jenkins
Jenkins 有两种安装方式
- 一种为rpm包安装,也可以使用yum安装,效果相同
- 一种是WAR包方式安装,需要使用tomcat
rpm 包安装方式
下载好列表中的rpm包安装方是的jenkins包后
[root@jenkins opt]# ls -ld jenkins-2.138.3-1.1.noarch.rpm
-rw-r--r-- 1 root root 75541986 Nov 9 09:26 jenkins-2.138.3-1.1.noarch.rpm
[root@jenkins opt]# rpm -ivh jenkins-2.138.3-1.1.noarch.rpm
warning: jenkins-2.138.3-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.138.3-1.1 ################################# [100%]
[root@jenkins opt]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
主配置文件是 /etc/sysconfig/jenkins
,可以修改其中的一些参数,如JENKINS_PORT端口,JENKINS_LISTEN_ADDRESS监听地址等
安装好后不能直接启动,启动会有如下效果:
[root@jenkins opt]# systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
[root@jenkins opt]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2018-12-04 16:03:24 CST; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 1551 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)
Dec 04 16:03:24 jenkins systemd[1]: Starting LSB: Jenkins Automation Server...
Dec 04 16:03:24 jenkins runuser[1556]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Dec 04 16:03:24 jenkins jenkins[1551]: Starting Jenkins bash: /usr/bin/java: No such file or directory
Dec 04 16:03:24 jenkins runuser[1556]: pam_unix(runuser:session): session closed for user jenkins
Dec 04 16:03:24 jenkins jenkins[1551]: [FAILED]
Dec 04 16:03:24 jenkins systemd[1]: jenkins.service: control process exited, code=exited status=1
Dec 04 16:03:24 jenkins systemd[1]: Failed to start LSB: Jenkins Automation Server.
Dec 04 16:03:24 jenkins systemd[1]: Unit jenkins.service entered failed state.
Dec 04 16:03:24 jenkins systemd[1]: jenkins.service failed.
上面报错的提示意思是没有找到JDK环境,需要在启动脚本中增加JDK环境变量即可,操作如下:
[root@jenkins opt]# head -74 /etc/rc.d/init.d/jenkins | tail -9
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/opt/jdk1.8.0_191/bin/java
"
[root@jenkins opt]# systemctl daemon-reload
在candidates
变量中最后一行,要在双引号内的最后一行,加入JDK环境变量,我的是/opt/jdk1.8.0_191/bin/java
,最后重新加载一下即可;
这样再次启动:
[root@jenkins opt]# systemctl start jenkins
[root@jenkins opt]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Tue 2018-12-04 16:16:01 CST; 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 1616 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
└─1640 /opt/jdk1.8.0_191/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/l...
Dec 04 16:16:01 jenkins systemd[1]: Starting LSB: Jenkins Automation Server...
Dec 04 16:16:01 jenkins runuser[1621]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Dec 04 16:16:01 jenkins runuser[1621]: pam_unix(runuser:session): session closed for user jenkins
Dec 04 16:16:01 jenkins jenkins[1616]: Starting Jenkins [ OK ]
Dec 04 16:16:01 jenkins systemd[1]: Started LSB: Jenkins Automation Server.
[root@jenkins opt]# netstat -lntup | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1640/java
新版本的jenkins为了保证安全,在安装之后有一个锁,需要设置密码之后才可以解锁
此信息会在日志中体现,rpm包安装的jenkins日志默认在/var/log/jenkins/jenkins.log
:
[root@jenkins opt]# grep This /var/log/jenkins/jenkins.log
This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
[root@jenkins opt]# cat /var/lib/jenkins/secrets/initialAdminPassword
8dc2857b96124813953b6b79251a2fe4
这个密码等下在页面验证中使用
默认监听的8080
端口,此时就可以使用浏览器进行访问了
访问后可以看到提示,输入刚刚查看的密码即可登录;
WAR 包安装方式
WAR包安装方式简单一些,部署好tomcat后,把WAR包放到webapps目录下,即可
[root@jenkins opt]# ls apache-tomcat-8.5.35.tar.gz -ld
-rw-r--r-- 1 root root 9642757 Dec 4 15:02 apache-tomcat-8.5.35.tar.gz
[root@jenkins opt]# tar xf apache-tomcat-8.5.35.tar.gz
[root@jenkins opt]# mv apache-tomcat-8.5.35 tomcat8
[root@jenkins opt]# ls -ld jenkins.war
-rw-r--r-- 1 root root 75733340 Dec 3 15:56 jenkins.war
[root@jenkins opt]# cd tomcat8/
[root@jenkins tomcat8]# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@jenkins tomcat8]# cd webapps/
[root@jenkins webapps]# ls
docs examples host-manager manager ROOT
[root@jenkins webapps]# rm -rf *
[root@jenkins webapps]# mv /opt/jenkins.war .
[root@jenkins webapps]# ll
total 73960
-rw-r--r-- 1 root root 75733340 Dec 3 15:56 jenkins.war
这样就可以了,然后启动tomcat
[root@jenkins webapps]# ../bin/catalina.sh start
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /opt/jdk1.8.0_191/jre
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@jenkins webapps]# tailf ../logs/catalina.out
04-Dec-2018 03:28:01.009 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat8/temp
04-Dec-2018 03:28:01.009 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/i386:/lib:/usr/lib]
04-Dec-2018 03:28:01.100 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
04-Dec-2018 03:28:01.108 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
04-Dec-2018 03:28:01.116 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
04-Dec-2018 03:28:01.116 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
04-Dec-2018 03:28:01.122 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 407 ms
04-Dec-2018 03:28:01.137 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
04-Dec-2018 03:28:01.137 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.35
04-Dec-2018 03:28:01.150 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat8/webapps/jenkins.war]
04-Dec-2018 03:28:04.464 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
04-Dec-2018 03:28:04.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat8/webapps/jenkins.war] has finished in [3,774] ms
04-Dec-2018 03:28:04.931 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
04-Dec-2018 03:28:04.951 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
04-Dec-2018 03:28:04.956 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 3833 ms
04-Dec-2018 03:28:06.078 INFO [pool-6-thread-3] jenkins.InitReactorRunner$1.onAttained Started initialization
04-Dec-2018 03:28:06.101 INFO [pool-6-thread-8] jenkins.InitReactorRunner$1.onAttained Listed all plugins
04-Dec-2018 03:28:07.122 INFO [pool-6-thread-7] jenkins.InitReactorRunner$1.onAttained Prepared all plugins
04-Dec-2018 03:28:07.201 INFO [pool-6-thread-3] jenkins.InitReactorRunner$1.onAttained Started all plugins
04-Dec-2018 03:28:07.204 INFO [pool-6-thread-5] jenkins.InitReactorRunner$1.onAttained Augmented all extensions
04-Dec-2018 03:28:07.968 INFO [pool-6-thread-1] jenkins.InitReactorRunner$1.onAttained Loaded all jobs
04-Dec-2018 03:28:07.985 INFO [Download metadata thread] hudson.model.AsyncPeriodicWork$1.run Started Download metadata
04-Dec-2018 03:28:08.617 INFO [Finalizing set up] org.springframework.context.support.AbstractApplicationContext.prepareRefresh Refreshing org.springframework.web.context.support.StaticWebApplicationContext@7fc855: display name [Root WebApplicationContext]; startup date [Tue Dec 04 03:28:08 EST 2018]; root of context hierarchy
04-Dec-2018 03:28:08.618 INFO [Finalizing set up] org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@7fc855]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16796f2
04-Dec-2018 03:28:08.630 INFO [Finalizing set up] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16796f2: defining beans [authenticationManager]; root of factory hierarchy
04-Dec-2018 03:28:08.804 INFO [Finalizing set up] org.springframework.context.support.AbstractApplicationContext.prepareRefresh Refreshing org.springframework.web.context.support.StaticWebApplicationContext@1c0b9e5: display name [Root WebApplicationContext]; startup date [Tue Dec 04 03:28:08 EST 2018]; root of context hierarchy
04-Dec-2018 03:28:08.804 INFO [Finalizing set up] org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@1c0b9e5]: org.springframework.beans.factory.support.DefaultListableBeanFactory@18bcbb
04-Dec-2018 03:28:08.804 INFO [Finalizing set up] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@18bcbb: defining beans [filter,legacy]; root of factory hierarchy
04-Dec-2018 03:28:08.968 INFO [Finalizing set up] jenkins.install.SetupWizard.init
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
7fa6a37fa7cc421f929c6f5ea19c16aa
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
可以看到启动成功最后,同样输出了Password信息
这样就和使用RPM最后打开的页面操作相同了。
Jenkins 配置
在上面操作登陆后进入下面界面,选择安装推荐的插件
然后进入到设置管理员账号密码
的页面
下载 Maven 插件
因为需要构建的是Java的Maven项目,所有需要安装一个Maven插件,插件名为: Maven Integration
点击系统管理
--> 再点击插件管理
然后点击可选插件,过滤 Maven Integration
名称
选中要筛选出来要安装的插件,点击直接安装
当插件安装完成后,会提示 完成
配置 Jenkins 中的 JDK 和 Maven
进入到:系统管理
--> 全局工具配置
最后点击保存即可
Jenkins 构建项目
创建 Maven 项目
需要先创建一个新建任务
,选择maven,然后点击确认
设置构建的参数
首先设置保存构建天数和最大构建数
根据实际情况设置
配置SVN
可以使用SVN、GitLab、GitHub都可以
然后填写SVN的用户密码,一定要有r
权限,否则在拉取代码就会报错。
配置构建参数和shell脚本
构建参数需要与开发协同合作
Shell脚本一般用于配合上线,因为Jenkins构建后,只是会生成WAR包,需要使用shell来进行推送上线
最后应用保存即可
这是就能看到刚刚创建的项目了
jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]的更多相关文章
- Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建
详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...
- Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器
今天请教了大神,终于把jenkins给搞明白了 现在做下笔记,防止自己老年痴呆又忘了怎么配置 (截图可能不够清晰,有不清楚的随时评论打call) 机器配置: 安装配置规划 机器 192.168.169 ...
- jenkins+Maven从SVN上构建项目
一.安装Maven 下载地址:https://maven.apache.org/download.cgi 把下载的安装包解压 tar -xvf apache-maven--bin.tar.gz 配置环 ...
- Jenkins+Maven+Gitlab+Nexus持续集成环境搭建
1.软件及服务介绍 Jenkins:jenkins是实现代码自动化流程上线的工具,Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个 ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)
前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A ...
- Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境
前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...
- Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境
使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一) 2015-01-14 20:28 by 飘扬的红领巾, 4322 阅读, 5 评论, 收藏, 编辑 ...
随机推荐
- 数据存储之关系型数据库存储---MySQL存储
MySQL的存储 利用PyMySQL连接MySQL 连接数据库 import pymysql # 连接MySQL MySQL在本地运行 用户名为root 密码为123456 默认端口3306 db = ...
- 什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?
前言 作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型.单精度浮点数.双精度浮点数. 浮点型 首先明确java中浮点型数据类型主要有:单精度float.双 ...
- RocketMQ 消息发送system busy、broker busy原因分析与解决方案
目录 1.现象 2.原理解读 2.1 RocketMQ 网络处理机制概述 2.2 pair.getObject1().rejectRequest() 2.3 漫谈transientStorePoolE ...
- [考试反思]0811NOIP模拟测试17:虚无
(sdfz未参加,也就是一共就51个人) 也不粘具体排名了,只写分数线. []220 []201 []194 [5]181 [10]141 [15]132 [20]122 [25]116 [30]10 ...
- Redis实战--Redis整合SpringBoot示例
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文章 ...
- 通俗易懂了解Vue组件的通信方式
1.前言 Vue框架倡导组件化开发,力求将一个大的项目拆分成若干个小的组件,就如同我们小时玩堆积木一样,一个大房子是由若干个小积木组成.组件化开发最大问题就是组件之间数据能够流通,即组件之间能够通信. ...
- python学习之【第六篇】:Python中的字典及其所具有的方法
1.前言 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,因此,字典的key必须是可哈 ...
- 帝国cms7.5免登陆发布模块
帝国cms7.5免登陆发布文章. 帝国cms增加了金刚模式,登录发布文章有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 1.必备工具: 1.火车采集器 2.免登陆发布接口 3.帝国cms ...
- map和set的使用及top K问题
1.map和set的应用和比较 map和set都是关联式容器,底层容器都是红黑树. map以键值对的形式进行存储,方便进行查找,关键词起到索引的作用,值则表示与索引相关联的数据,以红黑树的结构实现,插 ...
- 11、pytest -- 测试的参数化
目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...