1、jenkins配置
由于公司使用的是内部网络,没有打开互联网,所以在进行jenkins构建的时候,没法下载对应插件,刚开始使用镜像的方式制作了jenkins镜像,
但是jenkins镜像内部又缺少maven等插件,弄了许久还是需要下载插件;感觉有些麻烦,后面直接用之前外网的一个jenkins进行替代即可。jenkins配置
主要包含2部分:1、jenkins的环境变量配置及jenkins启动war包 2、jenkins对应的插件及命名空间配置。
1.1、jenkins设置环境变量
在我们安装jenkins之前,需要知道关于Jenkins怎样存储数据。事实上,不管你的Jenkins的war包村建存放在哪里,jenkins都会把其所有重要数据存放在一个专门用户、隔离的、成为Jenkins主目录的目录下。在这里,Jenkins存储关于构建服务器配置信息、构建作业、构建产物和其他有用的信息,当然包括你安装了任何插件。这个目录会消耗大量磁盘空间。
默认情况下,Jenkins主目录被称为.jenkins,会被放在你的当前用户主目录下。例如,假如你再window7下运行一个机器,且用户名是"tom",主目录会在:c:\Users\tom.jenkins下,在linux下,主目录可能在:.home/tom/.jenkins等。
你可以使用定义JENKINS_HOME环境变量来强行使jenkins使用一个不同目录作为其主目录。
我们一般通过编写一个shell脚本实现,比如以下:主目录:/data/jenkins/data
配置环境变量:/etc/profile
export JAVA_HOME=/root/software/jdk1.8.0_192
CLASSPATH=.:$JAVA_HOME/lib/
export JENKINS_BASE=/data/jenkins
export JENKINS_HOME=/data/jenkins/data
export PATH=$PATH:$JENKINS_BASE:$JENKINS_HOME:$JAVA_HOME/bin
1.2、插件拷贝到JENKINS_HOME
将另一个已经安装好插件的机器上的JENKINS_HOME下的除workspace文件拷贝到当前机器的JENKINS_HOME下。
1.3、启动程序
将jenkins.war也拷贝到此目录下,总体目录结构及文件如下:
对应启动脚本如下:jenkins_start.sh
#!/bin/bash
nohup java -jar jenkins.war --httpPort=8008 >jenkins.out 2>&1 &
1.4、系统访问
系统输入:
http://ip:8008
系统访问正常:
2、jenkins+docker进行微服务后端构建
2.1、镜像制作
镜像打包制作的话,一般我们有两种方式。方式一:使用Maven插件为SpringBoot应用构建Docker镜像。这种情况主要是在pom.xml文件中添加maven的docker镜像打包依赖:
在应用的pom.xml文件中添加docker-maven-plugin的依赖:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>mall-tiny/${project.artifactId}:${project.version}</imageName>
<dockerHost>http://192.168.3.101:2375</dockerHost>
<baseImage>java:8</baseImage>
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
相关配置说明:
- executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
- imageName:用于指定镜像名称,mall-tiny是仓库名称,${project.artifactId}为镜像名称,${project.version}为仓库名称;
- dockerHost:打包后上传到的docker服务器地址;
- baseImage:该应用所依赖的基础镜像,此处为java;
- entryPoint:docker容器启动时执行的命令;
- resources.resource.targetPath:将打包后的资源文件复制到该目录;
- resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
resources.resource.include:需要复制的文件,打包好的应用jar包。
另一种方式是通过构建shell脚本通过jenkins配置在服务器上打镜像。在此使用第二种方式,以网管为例,主要包括Dockerfile跟对应的构建脚本.sh文件。
2Dockerfile
我们以微服务中的网关为例: Dockerfile如下:
FROM cytomine/java8:latest
# 准备环境
ENV LANGUAGE=zh_CN.UTF-8
ENV TZ=Asia/Shanghai
RUN mkdir /apps/
WORKDIR /apps/
ADD target/gtc-gateway-2.3.0.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
构建脚本
对应的网关的脚本如下:
#!/usr/bin/env bash
app_name='gtc-gateway'
images_name='gtc-gateway:1.0'
echo '----WORKSPACE----'
echo ${WORKSPACE}
cd ${app_name}
# 启动容器
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi `docker images | grep ${app_name} | awk '{print $3}'`
echo '----rm none images----'
docker build -t ${images_name} .
echo '----build images----'
docker run -p 30080:8080 --name ${app_name} -d ${images_name}
echo '----start container----'
对应的位置
Dokcerfile跟构建脚本在同一目录下,便于我们后面通过jenkins的脚本来构建应用。
2.2、jenkins服务构建可视化配置
创建item
General
勾选:This project is parameterized->添加参数
Git Paramemter:Name:branch Parameter Type:Branch or Tag Default Value:origin/dev
源码管理
Repositories
`Repository URL:填写对应的仓库地址
Credentials:添加用户名/密码认证 `
Branches to build:${branch}-使用上面General定义的变量
如果此时出现如下错误:(我们的用户名跟密码是没有问题的)
原因分析:这是由于git客户端版本过低造成的!或者未安装git
Jenkins本机默认使用"yum install -y git" 安装的git版本比较低,应该自行安装更高版本的git。
查看GI版本
git --version
如果存在,卸载低版本
yum remove -y git
我这里是系统没有安装git,自己安装完git之后即可。
Pre Steps(增加构建步骤)
Invoke top-level Maven targets
因为后端使用maven的配置,所以此时需要配置maven进行构建,先构建共有的包到maven仓库
Maven 版本:MAVEN_HOME
目标:clean install -Dmaven.test.skip=true -Ptest
POM:${WORKSPACE}/gtc-common/pom.xml
因为需要将clean完package之后的包加入本地maven仓库 所以使用了install
Invoke top-level Maven targets
构建自身的包
Maven 版本:MAVEN_HOME
目标:clean package -Ptest
POM:${WORKSPACE}/gtc-gateway/pom.xml
Execute shell
命令
sudo -i
chmod 777 /data/jenkins/data/workspace/gtc-gateway/gtc-gateway/gtc-gateway.sh
/data/jenkins/data/workspace/gtc-gateway/gtc-gateway/gtc-gateway.sh
3、jenkins进行微服务前端构建
前端构建前:我们需要先下载安装nginx:nginx下载地址:https://mirrors.huaweicloud.c...
首先我们需要在我们安装jenkins的服务器上安装node,地址:
https://nodejs.org/download/release/v14.18.2/
创建item
前端构建就是普通的服务构建;构建一个自由风格的项目
General
勾选:This project is parameterized->添加参数
Git Paramemter:Name:branch Parameter Type:Branch or Tag Default Value:origin/dev
Choice Paramemter: 名称:env 选项:dev stage prod 描述:前端环境
String Paramemter: 名称:deploy_dir 默认值:/data/nginx/www/html/admin 描述:前端部署位置
源码管理
填写响应的地址
Repositories
`Repository URL:填写对应的仓库地址
Credentials:添加用户名/密码认证 `
Branches to build:${branch}-使用上面General定义的变量
构建
第一个 Execute shell:
pwd
cd gtc-system-ui
pwd
echo "${deploy_dir}"
echo "env"
echo "${env}"
sudo -i
pwd
npm config get registry
npm install
npm run build:${env}
pwd
第二个 Execute shell:
if [ -d "${deploy_dir}" ];then rm -rf "${deploy_dir}"; fi;
mkdir -p ${deploy_dir}
cp -r ${WORKSPACE}/gtc-system-ui/dist/* ${deploy_dir}/
然后我们就可以构建,如下所示:
问题
如果在构建过程中出现如下问题:
/tmp/jenkins11995557596560651774.sh:行9: npm: 未找到命令
解决方式:我们在jenkins中配置环境变量PATH
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。