关于jenkins:搭建Jenkins并构建项目

12次阅读

共计 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

而后咱们做一些简略配置

  1. 批改 tomcat 端口号
    批改./config/server.xml 文件, 将 SHUTDOWN 端口的 8005,http端口的 8080 别离批改为 9127 和 9300。
  2. 配置字符集(能够先不改,呈现乱码再思考)
    批改 ./config/server.xml 文件, 在上一步批改的 http 端口下退出配置URIEncoding="UTF-8"
<Connector port="9300" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />
  1. 配置 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 输入的日志中找到,也能够在页面上提供的门路中找到。

第二步 插件抉择

这时会呈现一个选择题:

  1. 装置举荐插件
  2. 抉择所需插件装置
    下一步就会举荐装置插件,这里我抉择了后者(我第一次依照举荐来装置插件,可能是我网不好,于是第二次我就抉择了本人装插件)。

官网也提供了插件的查问形式,这里能够间接找到须要的插件,以及以后插件须要的其余依赖插件,十分不便

或者也提供了所有插件的下载地址,这里就能够找到所有的插件。

上面贴出我装置的插件列表,只装置了汉化和 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 反馈后果'

最初保留。

正文完
 0