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_192CLASSPATH=.:$JAVA_HOME/lib/export JENKINS_BASE=/data/jenkinsexport JENKINS_HOME=/data/jenkins/dataexport 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/bashnohup 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-8ENV TZ=Asia/ShanghaiRUN mkdir /apps/WORKDIR /apps/ADD target/gtc-gateway-2.3.0.jar app.jarENTRYPOINT ["java","-jar","app.jar"]
构建脚本

对应的网关的脚本如下:

#!/usr/bin/env bashapp_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 -ichmod 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