写在前面:此文记录只为本公司测试环境搭建,可作参考,实际以公司项目为准。java
公司环境:Debian系统环境mysql
服务器启动:tomcat +Mysql+jdk1.8.0_202 + maven + warlinux
项目存放:svnweb
容器部署:dockersql
集成:Jenkinsdocker
建立Jenkinsci用户,并加入sudo组apache
useradd -m jenkinsciubuntu
password jenkinsci ******浏览器
adduser jenkinsci sudotomcat
安装Mysql
这里采用的是docker镜像方式安装
准备工做:建立MySQL容器将使用的数据绑定目录
mkdir -p mysql57/var/lib/mysql
接取镜像:
sudo docker pull mysql:5.7.25
运行MySQL docker:
sudo docker run -d -p 3306:3306 --name mysql \
-e "TZ = Asia\Shanghai" \
-e "MySQL_ROOT_PASSWORD = ****** " \
-v $HOME/mysql57/var/lib/mysql : /var/lib/mysql \
mysql:5.7.25
-e 向容器传递环境变量TZ,设置时区,前提有默认时区( dpkg-reconfigure tzdata 选择时区设置 )
-e 令root用户的初始口令为******
MySQL docker启停命令:
sudo docker mysql start
sudo docker mysql stop
安装JDK8
在宿主机Debian系统中安装JDK8
#先加载安装包 software-properties-common以便使用add-apt-repository命令
sudo apt-get install software-properties-common
sudo add-apt-repository "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main"
sudo apt-get update
sudo apt-get install oracle-java8-installer
#确认一下安装是否成功
javac -version
安装Tomcat
步骤:
1. 建立tomcat组
2. 建立tomcat用户,属于tomcat组
3. 下载和安装Tomcat8,安装目录 /opt/tomcat,命令:
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
4. 更新/opt/tomcat访问许可
5. 修改Tomcat8配置:
Tomcat端口 7080, 7443, 7005, 7009(自行配置未占用可用端口)
tomcat-users.xml用户配置,内容以下:
<role rolename="tomcat"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="******" roles="tomcat,admin-gui,manager-gui,manager-script"/>
运行Tomcat:
sudo /opt/tomcat/bin/startup.sh
中止Tomcat:
sudo /opt/tomcat/bin/shutdown.sh
安装Jenkins
新建子目录:
mkdir -p jenkins/.m2
mkdir -p jenkins/jenkins_home
以Docker镜像方式安装Jenkins,下载镜像并运行:
sudo docker pull jenkins/jenkins:lts
sudo docker run -u root -d -p 6666:8888 -p 50000:50000 --name jenkins \ #6666,8888分别为容器内外映射端口号
-e "TZ=Asia/Shanghai" \
-v $HOME/jenkins/jenkins_home:/var/jenkins_home \
-v $HOME/jenkins/.m2:/root/.m2 \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
说明:命令带了3个 -v 参数,这是绑定加载,把容器内的目录映射到宿主机目录,以便容器删除时数据可保留。
参数 -e 向容器传递了环境变量TZ,以设置时区。
访问jenkins容器的命令:
sudo docker exec -it jenkins bash
查看jenkins容器日志:
sudo docker logs jenkins
在日志中查找自动生成的初始管理员密码,复制出来:
安装后设置: 打开浏览器,
访问 http://持续集成服务器IP:6666
在首页输入初始管理员密码,继续
下一步安装插件,简单起见就安装建议插件 (Install suggested plugins)
而后建立管理帐号 admin/******。
配置Jenkins
Jenkins的编译环境配置主要是Oracle JDK 8 (update 202)和Maven 3.6.0。
安装更多插件
在浏览器上打开Manage Jenkins - Manage Jenkins,切换到Available标签,
安装以下插件:
Ø Blue Ocean插件
Ø warning-ng插件,插件的显示名称为Warnings Next Generation Plugin
Ø Localization: Chinese (Simplified) 插件
Ø Pipeline Utility Steps插件
Ø Deploy to container插件
插件安装后重启Jenkins。
工具配置
准备:复制Maven设置文件 把Maven全局设置文件复制到/home/jenkinsci/jenkins/.m2 目录。(settings.xml文件)
准备:复制JDK安装文件 把JDK安装文件jdk-8u202-linux-x64.tar.gz复制到/home/jenkinsci/jenkins/jenkins_home 目录。
全局工具配置 (Global Tool Configuration)
在浏览器上打开Manage Jenkins – Global Tool Configuration:
Maven配置
默认全局 settings 提供: 文件系统中的全局 settings 文件
文件路径: /root/.m2
JDK JDK installations,
Name: jdk8
勾选Install automatically
再Add Installer - Extract *.zip/*.tar.gz
Download URL for binary archive: file:/var/jenkins_home/jdk-8u202-linux-x64.tar.gz
Subdirectory of extracted archive: jdk1.8.0_202
特别注意:Subdirectory 内容必填,不然编译 时PATH的JDK/bin 路径会错,以至找不到java程序!
Maven
Maven installations,
Name: Maven 3.6.0 勾选Install automatically,并在Install from Apache下拉框中选择3.6.0。
系统设置 (Configure System)
在浏览器上打开Manage Jenkins – Configure System,填写以下内容:
Global properties 勾选Environment variables
添加属性JAVA_HOME: /var/jenkins_home/tools/hudson.model.JDK/jdk8/jdk1.8.0_202/
添加属性TOMCAT_DEPLOY_URL: http://IP:端口/manager/text/deploy?update=true&path= #(要设置的服务器IP和端口)
Locale
Default Language: zh_CN
Subversion
Subversion Workspace Version: 1.8
凭据(Credential)
添加tomcat用户凭据,
输入/选择:
Scope: Global
Username: tomcat
Password: ******
ID: tomcat-user
注意,上面输入的Username和Password要与“安装Tomcat”一节的配置相同。
添加SVN用户凭据(有项目svn权限的用户名密码)
Scope: Global
Username:***
Password: ***
ID: svn-user
管理用户
在浏览器上打开系统管理 – 管理用户:
新建Jenkins用户,分配项目权限。
建立流水线任务
以后就是使用Jenkins新建项目拉取svn项目代码自动编译部署项目了
在开始界面上,新建任务,再输入任务名称,选择多分支流水线,点击肯定。图示以下:
接下来,填写任务参数:
General – 显示名称:多分支例子项目
分支源 (Branch Sources),点击“增长源”,选择 Subversion,输入:
Project Repository Base: http://IP/svn/test/
Credentials: <SVN用户凭据>
Include branches: trunk/**/*,branches/*,branches/**/*,tags/*,sandbox/*
注意,Include branches填写内容根据例子项目test的实际目录结构而来。
任务参数配置后,Jenkins会自动进行初次扫描,执行任务。首次执行时会下载项目依赖JAR,比较耗时,多等一下子。
初次扫描和任务执行后,查看项目状况以下,有3个分支,点击“图例”连接会打开图标说明帮助页:
运行流水线任务
点击项目分支,进入页面,再点击“当即构建”连接,开始运行流水线任务。页面会即时显示任务运行状况。要查看详细状况,可点击打开构建历史下面的条目。
参考:Jenkins官方文档 (中文版)
查看CheckStyle报告
打开项目的构建历史条目,再打开CheckStyle Warnings,查看CheckStyle报告。在报告页面下方有详情 (Details),可按不一样维度查看检查结果,如按包(packages)、文件 (Files)、类型(Types)或问题(Issues)。
下载制品
项目正常编译后,要手工下载WAR包,打开构建历史条目,点击Workspaces - <分支路径>:
进入Workspace,打开target子目录,点击WAR包下载:
自动部署
例子项目test的测试分支的Jenkinsfile脚本配置了Deploy阶段,用于把制品WAR包自动部署到Tomcat。Deploy阶段的脚本片断以下:
脚本中的部分变量在“配置Jenkins – 工具配置”章节中有定义。变量APP是拟部署应用的名称,在部署后使用该名称访问应用。如上面的脚本片断指明了部署应用名为app,则部署后访问地址为 http://Tomcat测试服务器/app 。
Jenkinsfile截图(步骤可注释跳过)