共计 6006 个字符,预计需要花费 16 分钟才能阅读完成。
Jenkins 是个自动化构建部署工具。不须要咱们在应用原始的部署伎俩,极大的缩短了保护老本。
上面简要说一下本人应用的过程构建的 maven 我的项目和 react 我的项目
一. 筹备环境
Jenkins 既然是做为构建部署工具,首先就须要拿到咱们的源码,其次再做编译打包,最初放到咱们的服务器目录下,启动。那么就须要咱们开发时用到的各种工具,比方 jdk,maven,git,nodejs 等,有的我的项目可能还会波及到 Python,所以咱们还须要装置这些工具及环境。
jdk 装置
在线下载:
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
手动下载及装置:
官网下载一个 jdk8(当然别的版本也能够),而后将 jdk-8u131-linux-x64.tar.gz
放到咱们须要的目录下,比方 /usr/local/java/
,应用命令tar -zxvf jdk-8u131-linux-x64.tar.gz
将其解压。
而后须要配置 java 的环境变量,执行 vim /etc/profile
命令并在文件最初加上如下配置:
# Java 8u131 environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_131
export JRE_HOME=/usr/local/java/jdk1.8.0_131/jre
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
保留退出,最初确保批改的 /etc/profile
文件失效,并用命令验证装置胜利
source /etc/profile
java -version
maven 装置
在线下载:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
手动下载及装置:
在官网上下载了 tar.gz
包,这里不倡议应用最新的 3.8.1
版本,而是抉择了 3.6.3
(点此下载)这个版本(3.8.1 对 https 敏感,如果是 http,则会呈现 downloading from maven-default-http-blocker: http://0.0.0.0/xxx
这种问题)。
将咱们下载的 apache-maven-3.6.3.tar.gz
放到目录下,比方 /usr/local/maven
。
cd /usr/local/maven/
tar -zxvf apache-maven-3.6.3.tar.gz
这里须要配置 maven 的本地仓库地址以及镜像地址,这个都是在 apache-maven-3.6.3/config/setting.xml
中设置。不设置则应用默认的配置。
<localRepository>/data/maven/maven-repository</localRepository>
...
...
<mirrors>
<mirror>
<id>public</id>
<mirrorOf>central</mirrorOf>
<name>public</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
当设置结束后,咱们还须要配置 maven 的环境变量,在/etc/profile
文件开端加上
# Maven
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=${PATH}:${MAVEN_HOME}/bin
保留退出,最初确保批改的 /etc/profile
文件失效,并用命令验证装置胜利
source /etc/profile
mvn -v
git 装置
在线下载:
wget https://www.kernel.org/pub/software/scm/git/git-2.32.0.tar.gz
手动下载及装置:
官网找到 linux 版本的 git,将其下载并放到 linux 须要的目录下,比方 /usr/local/git
,执行命令tar -zxvf git-2.32.0.tar.gz
将其解压。
而后配置 git 的环境变量,这一步与配置 jdk 一样,须要在 vim /etc/profile
文件的开端加上如下内容:
# Git 2.32.0
export GIT_PATH=/usr/local/git/bin
export PATH=${PATH}:${GIT_PATH}
保留退出,最初确保批改的 /etc/profile
文件失效,并用命令验证装置胜利
source /etc/profile
git -v
nodeJS 装置
在线下载:
wget http://nodejs.org/dist/v14.17.4/node-v14.17.4.tar.gz
当然也有人用上一步搭建好的 git
来下载的,这里就不做阐明了。
手动下载及装置:
官网下载 LTS
版本,放到服务器比方 /usr/local/nodejs
下,能够看到是一个 tar.xz
文件,咱们通过两个命令解压:
xz -d node-v14.17.4-linux-x64.tar.xz
tar -xcf node-v14.17.4-linux-x64.tar
进入到 node-v14.17.4-linux-x64 目录下 执行./bin/node -v
, 能正确失去版本号即可
接下来咱们须要配置一个软连贯使 node 环境失效:
ln -s /usr/local/nodejs/node-v14.17.4-linux-x64/bin/npm /usr/local/bin/
ln -s /usr/local/nodejs/node-v14.17.4-linux-x64/bin/node /usr/local/bin/
最初命令验证:
node -v
Tomcat 装置
Tomcat 在咱们的零碎中是作为 Jenkins 的服务容器
在线下载:
wegt https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz
手动下载及装置:
官网中找到左侧的 Download
,抉择本人须要的版本进行下载,我这里下载了 8.5.69 这个版本,而后将tar.gz
放到须要的目录下,比方 /opt/software/tomcat/
。并将其解压:
tar -zxvf apache-tomcat-8.5.69.tar.gz
而后咱们做一些简略配置
- 批改
tomcat
端口号
批改./config/server.xml
文件, 将SHUTDOWN
端口的 8005,http
端口的 8080 别离批改为 9127 和 9300。 - 配置字符集(能够先不改,呈现乱码再思考)
批改./config/server.xml
文件, 在上一步批改的http
端口下退出配置URIEncoding="UTF-8"
<Connector port="9300" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
- 配置
tomcat
内存(能够先不改,呈现性能问题再思考)
批改./bin/catalina.sh
文件,能够在文件第二行退出上面代码(这里内存大小依照理论需要调整)
JAVA_OPTS="-server -Xms128m -Xmx256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"
最初咱们启动 tomcat
,进入 ./config/bin
下,执行命令 ./start.sh
, 会在 ./logs/
下生成 Catalout.log
文件,咱们再拜访 http://ip:9300
就能够看到 tomcat
的页面了
二.Jenkins 启动配置
第一步 启动
官网下载 jenkins
的 war 包,并将其放到上一步搭建好的 tomcat 目录 ./webapp
目录下。期待 Jenkins
解压并启动后,拜访 http://ip:9300/jenkins
,就能进入到 jenkins 的页面了。成果如下图
第一次拜访新的 Jenkins 时,零碎会要求应用主动生成的明码对其进行解锁。这个明码能够在 tomcat 输入的日志中找到,也能够在页面上提供的门路中找到。
第二步 插件抉择
这时会呈现一个选择题:
- 装置举荐插件
- 抉择所需插件装置
下一步就会举荐装置插件,这里我抉择了后者(我第一次依照举荐来装置插件,可能是我网不好,于是第二次我就抉择了本人装插件)。
官网也提供了插件的查问形式,这里能够间接找到须要的插件,以及以后插件须要的其余依赖插件,十分不便
或者也提供了所有插件的下载地址,这里就能够找到所有的插件。
上面贴出我装置的插件列表,只装置了汉化和 maven,git 等根底插件,这里只有 36 个。能够一次性都装置后重启,曾经蕴含所有插件依赖关系,不须要再有额定的插件。
装置实现后大略在插件治理列表中会存在大略几十个插件。
第三步 创立用户
此时咱们须要创立第一个用户,不想记太多的账号密码,索性就不创立了,间接跳过到下一步。这个账号当前须要也是能够创立。这样就到了 Jenkins
的工作页面了。
第四步 系统管理》全局工具配置
在应用前咱们还需将上几步中的 maven 和 git 等做肯定的配置:
1.Maven 配置:默认就好,因为咱们配置交由 Maven 本人治理了
2.JDK: 新增 JDK,并配置咱们 jdk 门路
3.Git:增加 git,并配置 git 装置门路
4.Maven: 新增 Maven, 应用咱们本人装置的 maven
最初保留。
第五步 系统管理》凭据
这个就是用来配置我的项目 git 账号,服务器账号等设计到权限的中央
能够在全局新增一个
其中 ID 和形容就是用来形容这个凭证的,轻易填写
构建我的项目
这里先贴出来一个官网的用户手册,不明确的也能够参考这里的创立流程。
上面贴出来两个我本人应用的例子:
示例一:创立一个 React 工程:
1. 左侧列表抉择新建工作:
2. 接下来会呈现创立我的项目类型:
咱们先择创立一个自在格调的软件我的项目,填写名称并确定:
3. 从 git 上获取源码,其中 Credentials 是在 系统管理》凭据
中创立。
4. 打包命令,就是几个 shell 命令:
其中的备份是通过参数化构建来实现的:
这样每次构建开始前,都会有一个确认,勾选则对上一个版本做一个备份:
示例二:创立一个 Maven 工程
1. 新建工作;
2. 抉择创立一个 Maven 工程;
3.Pre Steps,这个是指构建前操作,比方我的项目是一个 maven 父子我的项目,咱们就须要在这里配置(如果不是父子我的项目可疏忽):
4.Build, 配置 pom 文件门路,这个 pom 文件门路从我的项目根目录开始,Goals and options 就是打包时的其余参数,比方我去掉了打包中的 Test 过程:
5.Post Steps,指构建后操作,咱们构建完包后能够通过 shell 命令将打进去的包部署。
上面贴出残缺 shell 脚本,因为我的项目配置不一样,不可能拿过去就能间接用,大家还需自行批改:
#!/bin/bash
# 以后 shell 脚本执行完结后,jenkins 会敞开所有衍生过程,这里批改 jenkins 构建 id 避免敞开启动过程
BUILD_ID="$WORKSPACE-$BUILD_NUMBER"
echo "$JOB_NAME 构建分支:$GIT_BRANCH"
# 获取 pom.xml 中的版本号,父子构造工程会获取父工程版本
# version=`awk '/<version>[^<]+<\/version>/{gsub(/<version>|<\/version>/,"",$1);print $1;exit;}' pom.xml`
# echo "构建版本:$version"
# 子工程门路(针对父子工程)serverPath="xxx"
# 服务名
serverName="xxx-SNAPSHOT.jar"
# 服务部署门路
basePath="/data/xxx/"
# 日志门路
logPath="logs/xxx-debug.log"
echo '查看之前的过程……'
oldPid=`pgrep -f $serverName`
if [-n "$oldPid"]
then
echo '进行之前的过程……'
kill -9 $oldPid
fi
echo "是否备份上个版本:$backup"
if [[-f "$basePath/server/$serverName"]] && [[$backup == 'true']]; then
cd $basePath/server/
bakJar="$serverName.bak-$[$BUILD_NUMBER - 1]"
cp $serverName $bakJar
echo "备份上个版本到:$basePath/server/$bakJar"
fi
# maven 工程瘦身后将第三方依赖包提取进去
echo '复制新 lib……'
cd $WORKSPACE/$serverPath/target/lib/
cp *.jar $basePath/lib/
# 将打好的包放到指定的启动地位
echo '复制新 jar……'
cd $WORKSPACE/$serverPath/target/
cp $serverName $basePath/server/
# 这里简略写个启动参数,并将日志写到对应的门路中去,或者我的项目中曾经配置好了日志门路,则前面就不须要了
echo '启动服务中……'
nohup java -jar -Xms256m -Xmx512m $basePath/server/$serverName > $basePath/$logPath &
# 倡议应用脚本启动,毕竟还是要标准
#cd $basePath/bin/
#./start-xxx.sh
# 期待服务启动,单位秒
sleep 21
echo '查看启动过程号……'
pid=`pgrep -f $serverName`
if [-n "$pid"]
then
echo "$serverName $pid 启动胜利 ^-^"
else
echo "$serverName 启动失败 -_-@"
fi
echo '构建完结,期待 Jenkins 反馈后果'
最初保留。