四 Jenkins
4.1 gitblit私服 搭建
我们git远程仓库: github国外的 gitee国内 gitlab/gitblit私服 局域网
将 gitblit-1.8.0.zip 到指定路径
创建一个gitblit的仓库: 创建一个文件夹
打开配置:D:\workapp\gitblit-1.8.0\data\defaults.properties
修改第31行 刚才创建的文件夹目录
git.repositoriesFolder = D:/workapp/gitblit-1.8.0/cangku
修改1993行的端口号
server.httpPort = 12580
修改2020行的ip地址为自己电脑ip
server.httpBindInterface = 172.16.22.206
修改2029行的https地址为localhost
server.httpsBindInterface = localhost
保存,关闭文件。
此时我们的私服搭建成功
启动私服
直接双击 D:\workapp\gitblit-1.8.0\gitblit.cmd
访问: 172.16.22.206:12580
先登录 admin admin
找到版本库 创建版本库
将我们的项目和远程仓库进行关联
找到我们项目文件夹 进入,右键 git bash here
Administrator@ITCat MINGW64 /e/javacode/dockerimagetest
$ git init
Initialized empty Git repository in E:/javacode/dockerimagetest/.git/
Administrator@ITCat MINGW64 /e/javacode/dockerimagetest (master)
$ git remote add origin http://admin@192.168.10.171:12580/r/dockerimagetest.git
Administrator@ITCat MINGW64 /e/javacode/dockerimagetest (master)
$ git pull origin master
remote: Counting objects: 4, done
remote: Finding sources: 100% (4/4)
remote: Getting sizes: 100% (3/3)
remote: Compressing objects: 100% (295/295)
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), 408 bytes | 17.00 KiB/s, done.
From http://192.168.10.171:12580/r/dockerimagetest
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
修改排除文件 .gitgnore
4.2 服务器准备
1 克隆服务器 已经有 jdk docker
2 修改ip地址等
3 下载安装git yum -y install git
4 安装maven
创建maven mkdir /home/maven
移动到maven文集ANJIA cd /home/maven
执行下载命令
wget https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
解压压缩包
tar -zxvf apache-maven-3.3.9-bin.tar.gz
配置环境变量 vim /etc/profile
MAVEN_HOME=/home/maven/apache-maven-3.5.4
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH MAVEN_HOME
刷新环境变量 : source /etc/profile
测试是否安装成功: mvn -v
5 启动docker service docker start
4.3 docker的maven插件
在项目的pom文件中添加 插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}</imageName>
<!--dockerfile目录-->
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!--镜像的FROM,使用java官方镜像-->
<baseImage>java:8</baseImage>
<!--该镜像的容器启动后,直接运行spring boot工程-->
<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>
</plugins>
</build>
在 src/main/resources 添加Dockerfile文件
FROM java:8
VOLUME /tmp
ADD qy123-1.0.jar web.jar
RUN sh -c 'touch /web.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh" , "-c" , "java $JAVA_OPTS -jar /web.jar" ]
4.4 手动构建流程
1 写完代码 将代码推送到远程仓库
2 在服务器 创建一个文件夹
cd /home
mkdir aaa
cd aaa
git init
git remote add origin http://admin@192.168.10.171:12580/r/dockerimagetest.git
git pull origin master
此时项目就拉取到我们的aaa文件夹中
3 使用maven进行打包编译成docker镜像
mvn -f pom.xml clean package -DskipTests docker:build
4 docker 运行当先镜像
docker run --name demo -d -p 8090:8080 dockerimagetest:1.0
此时我们代码又更新了 ,此时需要重新推送到远程仓库
1 git 拉取新代码
git pull origin master
2 docker 操作
docker stop demo 停止之前的容器
docker rm demo 删除运行容器
docker rmi -f dockerimagetest:1.0 删除镜像
3 maven 重新构建
mvn -f pom.xml clean package -DskipTests docker:build
4 docker 运行当先镜像
docker run --name demo -d -p 8090:8080 dockerimagetest:1.0
后面版本再次更新 还是这 1234 顺序执行即可
4.5 Jenkins安装与配置
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
第一次使用 Jenkins,您需要:
下载并运行 Jenkins
下载 Jenkins.
打开终端进入到下载目录.
运行命令 java -jar jenkins.war --httpPort=8080.
打开浏览器进入链接 http://localhost:8080.
按照说明完成安装.
安装完成后,您可以开始使用 Jenkins!
第一次访问的时候 需要查看密码
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
6fa4fa7cf6f1410691ee228ba8575ac1
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
进入界面 选择 安装推荐的插件
配置管理员账号
进入主界面 选择 manage jenkins 选择 Global Tool Configuration
配置JDK 和 Maven
4.6 使用jenkins完成自动化构建
在主界面 点击 新的Item 起名字 选择 freestyle project 点击确定
源码管理 选择git 填写URL 和 设定账号密码
http://172.16.22.206:12580/r/qy123.git
选择构建
添加构建步骤
执行shell
#!/bin/bash
#查看当前测试项目的docker容器是否正在执行
a=$(docker ps | grep demo)
if [[ "$a" != "" ]]
then
echo "停止运行"
docker stop demo
fi
b=$(docker ps -a | grep demo)
if [[ "$b" != "" ]]
then
echo "删除 容器"
docker rm demo
fi
c=$(docker images | grep dockerimagetest )
if [[ "$c" != "" ]]
then
echo "删除镜像"
docker rmi -f dockerimagetest:latest
docker rmi -f dockerimagetest:1.0
fi
增加构建步骤 maven
版本选择 我们自己配置的maven
目标 -f pom.xml clean package -DskipTests docker:build
增加构建步骤 执行shell
docker run --name xxx -d -p 7788:7788 jdemo:1.0
点击保存
测试是否 ok
假如程序员又重新提交了新代码
4.7 全自动化构建
1 选中我们的项目 点击配置 构建触发器 勾选第一个
填写身份令牌
此时我们就可以通过 配置的时候 只写令牌
但是地址狗子调用的地址是这个样子
http://192.168.239.110:8080/job/ZIDONGGOUJIAN/build?token=aaa
远程调用
点击保存
2 找到Security 配置Configure Global Security
授权策略
选择项目矩阵授权
点击保存
3 安装插件 Authorize Project Plugin
4 再次进行全局安全配置
5 配置gitblit 到安装路径下的 D:\workapp\gitblit-1.8.0\data\groovy
下有一个 jenkins.groovy 文件 作用就是触发jenkins
将其打开 修改
import com.gitblit.GitBlit
import com.gitblit.Keys
import com.gitblit.models.RepositoryModel
import com.gitblit.models.UserModel
import com.gitblit.utils.JGitUtils
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.revwalk.RevCommit
import org.eclipse.jgit.transport.ReceiveCommand
import org.eclipse.jgit.transport.ReceiveCommand.Result
import org.slf4j.Logger
logger.info("jenkins hook triggered by ${user.username} for ${repository.name}")
new URL("http://192.168.239.140:8080/jenkins/job/buildQY123/build?token=aaa").getContent()
重启 gitblit
进入到项目gitblit 点击编辑 选择-> Receive 设置
post-receive 脚本
Post-receive hooks 会在推送接收后, refs 更新之后执行。
这种hook是进行通知,使用构建触发器等的好工具。
将 jenkins选中 移动到 右边 保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TInOq3sh-1666359039140)(DevOps.assets/1666341100664.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5rxI0f5T-1666359039141)(DevOps.assets/1666341449518.png)]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117990.html