docker中jenkins流水线式部署GitLab中springboot项目

news2025/1/13 10:03:52

本质就是将java项目拉取下来,并自动打包成docker镜像,运行

首先启动一个docker的jenkins

如果没有镜像使用我的镜像

通过网盘分享的文件:jenkins.tar 链接: https://pan.baidu.com/s/1VJOMf6RSIQbvW_V1zFD7eQ?pwd=6666 提取码: 6666

 放入服务器随便目录,进入这个目录使用 docker load  -i 镜像名称

创建jenkins的工作目录,拉取的代码已经下载的工具包都在这个目录下

#创建文件夹

mkdir -p /home/jenkins_home

#权限

chmod 777 /home/jenkins_home

 运行jenkins

docker run -d \
  -u root \
  -p 9095:8080 \
  -p 50000:50000 \
  --name jenkins \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/jenkins_home:/var/jenkins_home \
  -v /etc/localtime:/etc/localtime \
  jenkins/jenkins:jdk17

#日志查看密码

docker logs jenkins

 修改安装插件的下载源

 cd /home/jenkins_home/

vi hudson.model.UpdateCenter.xml

 中间的url换成这个清华大学镜像

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 重启镜像

 docker restart jenkins

访问jenkins ip:9095

点击安装推荐插件

后面可创建一个root用户即安装完成

进入插件管理

 将下方的插件全部装上

Maven Integration

Pipeline

Pipeline: Stage View

GitLab

Git

Publish Over SSH

 

 

 

 

 

 

 上传Maven到jenkins

 通过网盘分享的文件:apache-maven-3.6.1-bin.tar.gz
链接: https://pan.baidu.com/s/1GjwWRWUsC3qiZ7CQB_MA5g?pwd=6666 提取码: 6666

 进入容器创建data目录,在退出容器

 docker exec -it jenkins /bin/bash

mkdir /data

exit

 将maven上传到服务器,在上传至jenkins容器内部

 docker cp apache-maven-3.6.1-bin.tar.gz jenkins:/data

 再次进入容器

docker exec -it jenkins /bin/bash

cd /data

tar -zxvf apache-maven-3.6.1-bin.tar.gz

apt-get update

apt-get install vim

vim /etc/profile #编辑配置文件

 在配置文件最后一行输入这两行

# maven

export MAVEN_HOME=/data/apache-maven-3.6.1

export PATH=$MAVEN_HOME/bin:$PATH

激活配置

source /etc/profile

maven下载依赖的仓库位置

vim /data/apache-maven-3.6.1/conf/settings.xml

 <localRepository>/data/a</localRepository>

 去data目录创建这个a文件夹

mkdir /data/a

 maven下载依赖的地址如果在java代码中指定了仓库无需修改依赖下载地址,如果没做指定需要手动去修改下载地址

    <mirror>
        <id>aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

测试maven是否安装成功

设置软连接,jenkins默认从usr/bin目录找maven,不配永远找不到

ln -s /data/apache-maven-3.6.1/bin/mvn /usr/bin/mvn

ln -s /data/apache-maven-3.6.1/bin/mvn /usr/local/bin/mvn

mvn --version

创建一个home/webapps目录

mkdir /home/webapps

在容器中创建一个Dockerfile脚本,在home/webapps目录下

内容如下

用于build镜像,也可将这个配置文件放入java项目中,如何使用项目中的配置文件打包自行研究

FROM dockette/openjdk8:latest  #下面上传的jdk镜像名称
EXPOSE 8081
RUN mkdir -p /usr/local/java
# 挂载目录(可更换)
VOLUME /data/java
# 创建目录(可更换和上面保持一致)
RUN mkdir -p /data/java
# 指定路径(可更换和上面保持一致)
WORKDIR /data/java
ADD gd-patent-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["nohup","java","-jar","/app.jar"]

上传一个jdk的docker镜像

通过网盘分享的文件:jdk8.tar

链接: 百度网盘 请输入提取码 提取码: 6666

加载到docker中

docker load -i 镜像名称

容器安装docker

apt-get install -y docker.io

jenkins配置maven

 文件地址是jenkins中的地址

配置服务器连接

测试是否成功

suess表示服务器连接成功

配置gitlab,在系统配置里

第一个填写项目git地址

第二个填写gitlab地址

第三个选择添加,添加apitoken

添加一个用户和token,两个都要,一个是用于用户唯一id,一个是拉取代码的权限token

,添加完用户这里无法选中,这里只能选择token,用户后面有操作需要

去gitlab生产token

http://ip/-/profile/personal_access_tokens

然后选择这个api token最后测试连接

 复制用户唯一id

创建一个流水线项目,项目名称不要中文,我这边叫test,test名称很重要

注意每次重启jenkins加粗后都需要手动source /etc/profile,否则找不到mvn环境变量

找到Pipeline跟我一样勾选

将下面的代码复制过去

修改自己的用户唯一凭证id

更改gitlab地址ip

更改自己的项目打包名称

maven packing里面最后一行

  sh 'cp /var/jenkins_home/workspace/test/target/${projectName}.jar /home/webapps'

这个是需要换的,test是自己创建的名称,可以自己进入容器的/var/jenkins_home/workspace/去看,然后找到target的目录在哪,有的项目打包后会在一些其他的主包下的target目录下,需要修改成对应的,自己找把目录复制过来

最后一行打包成docker镜像,运行的端口自己更改,我这里是38081

pipeline {
    agent any
    environment{
        DIR="/home/webapps"
        projectName="自己打包后的项目名称"
        tag="4"
    }
    stages {
        stage('pull git code') {
            steps {
                echo 'pull git code'
                git credentialsId: '填自己的用户凭证', url: 'http://自己的ip/project-delivery/guangde/gd-patent.git', branch: '选择分支'
            }
        }
        stage('maven packing'){
            steps {
                echo "maven打包"
                //sh 'source /etc/profile'
                //sh 'mv /opt/cp.sh /opt/cd.sh'
                sh 'pwd'
                sh 'mvn -v'
                sh 'mvn clean'
                sh 'mvn clean package'
                echo 'maven打包完成'
                sh 'cp /var/jenkins_home/workspace/test/target/${projectName}.jar /home/webapps'
            }
        }
        stage('docker build'){
            steps {
                sh 'cd /home/webapps && docker build -t guangde .'
                sleep 5
                sh 'pwd'
            }
        }
        stage('stop and remove old container'){
            steps {
                sh 'docker stop guangde || true'
                sh 'docker rm guangde || true'
            }
        }
        stage('docker run'){
            steps {
                sh 'docker run -d -p 38081:8081 --name guangde guangde'
            }
        }
    }
}

 启动

build

 查看日志

如果出现这个错误表示脚本没有权限,需要去放开权限

启动成功

高级写法

脚本里面的值是可以动态传递的

分支使用占位符

设置一个版本字符

勾选参数构建化过程,添加字符参数,名称就是动态的字符串名称,默认值就是具体值,根据需求添加更多的动态字符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在ubuntu下对NFS做性能测试

安装NFS 首先&#xff0c;安装服务 sudo apt update sudo apt install nfs-kernel-server然后创建共享文件夹 # 请自定义你自己的共享目录 sudo mkdir -p /exports/nfs4/homes sudo chmod -R 777 /exports/nfs4/homes# 这个可以根据no_root_squash标致选择设置。 # 如果不设…

Open FPV VTX开源之默认MAVLink设置

Open FPV VTX开源之默认MAVLink设置 1. 源由2. 准备3. 连接4. 安装5. 配置6. 测试6.1 启动wfb-ng服务6.2 启动wfb-ng监测6.3 启动QGroundControl6.4 观察测试结果 7. 总结8. 参考资料9. 补充9.1 telemetry_tx异常9.2 DEBUG串口部分乱码9.3 PixelPilot软件问题 1. 源由 飞控图传…

26个开源Agent开发框架调研总结(2)

根据Markets & Markets的预测&#xff0c;到2030年&#xff0c;AI Agent的市场规模将从2024年的50亿美元激增至470亿美元&#xff0c;年均复合增长率为44.8%。 Gartner预计到2028年&#xff0c;至少15%的日常工作决策将由AI Agent自主完成&#xff0c;AI Agent在企业应用中…

mark 一下conductor github

Netflix 关闭conductor 后&#xff0c;后续https://orkes.io/content/ 继续在维护&#xff0c;github地址如下 https://github.com/conductor-oss/conductor 最新release为3.21.11

PyCharm文档管理

背景&#xff1a;使用PyCharmgit做文档管理 需求&#xff1a;需要PyCharm自动识别docx/xslx/vsdx等文件类型&#xff0c;并在PyCharm内点击文档时唤起系统内关联应用(如word、excel、visio) 设置步骤&#xff1a; 1、file -》 settings -》file types 2、在Files opened i…

嘉立创画原理图和PCB

一、环境 进入立创EDA官网 注册登录的环节就不介绍了。 登录账号后&#xff0c;选择专业版 二、原理图 工程中&#xff0c;有原理图和PCB&#xff0c;这里选择原理图 那么接下来就是进行绘制 元器件在如下区域搜索使用。 双击进行放置&#xff0c;也可以左键提前预览。 网…

科创驱动 | 华望系统科技荣膺西湖区年度前沿创新新锐企业

2025年1月3日&#xff0c;由中共西湖区党委、西湖区人民政府主办的“新年第一会”—西湖区科技创新大会在杭州隆重举行。大会现场揭晓了西湖区年度科技创新团队与项目&#xff0c;并发布了“2024西湖区科技十大事件”与“西湖区五大年度科技榜单”。杭州华望系统科技有限公司榜…

Monorepo设置:新手指南

Monorepo是一种项目代码管理方法&#xff0c;指在单个代码仓库中管理多个项目&#xff0c;有助于简化代码共享、版本控制、构建和部署的复杂性&#xff0c;并提供更好的可重用性和协作性。 简单理解&#xff1a;所有项目都在一个代码仓库中 &#x1f4e6;&#xff0c;但这并不意…

[Python学习日记-75] 计算机基础与网络

[Python学习日记-75] 计算机基础与网络 简介 计算机基础 什么是网络编程 计算机网络 简介 本篇主要介绍的计算机基础是浓缩的&#xff0c;这是因为我们主要学习的是 Python&#xff0c;而 Python 主要是为了开发应用程序的&#xff0c;并不会用它来开发操作系统和嵌入式程序…

1. Doris分布式环境搭建

一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上&#xff0c;Frontend部署3台组成高可用&#xff0c;Backend部署3个节点&#xff0c;组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…

【Java】-- 利用 jar 命令将配置文件添加到 jar 中

目录 1、准备 2、目标 3、步骤 3.1、安装 jdk 3.2、添加配置文件 3.3、校验 1、准备 java 环境hadoop-core-1.2.1.jar 和 core-site.xml 2、目标 将 core-site.xml 添加到 hadoop-core-1.2.1.jar 中。 3、步骤 3.1、安装 jdk 3.2、添加配置文件 jar -cvf hadoop-core-…

day14-Linux系统基础权限知识精讲

1. 给文件加特殊属性 1.1 chattr a:只能追加内容&#xff0c;不能删除 i:不能修改&#xff0c;不能删除;保护关键文件&#xff0c;防止非法写入 [rootoldboy ~]# chattr a test.txt [rootoldboy ~]# chattr i test.txt [rootoldboy ~]# echo 123 >> test.txt -bash: t…

Android使用系统消息与定时器实现霓虹灯效果

演示效果: 界面设计: 在帧布局FrameLayout中添加6个TextView 依次设置这6个TextView的宽&#xff0c;高&#xff0c;权重 也可在XML中直接设置 添加自定义颜色 关联自定义颜色到数组变量 关联6个TextView控件到数组变量 处理自定义系统消息 Handler _sysHandler new Han…

数据结构大作业——家谱管理系统(超详细!完整代码!)

目录 设计思路&#xff1a; 一、项目背景 二、功能分析 查询功能流程图&#xff1a; 管理功能流程图&#xff1a; 三、设计 四、实现 代码实现&#xff1a; 头文件 结构体 函数声明及定义 创建家谱树头结点 绘制家谱树&#xff08;打印&#xff09; 建立右兄弟…

vue3+elementPlus之后台管理系统(从0到1)(day1)

vue3官方文档&#xff1a;https://cn.vuejs.org/guide/introduction.html 1、项目创建 确保电脑已安装node 查看命令&#xff1a; node -v进入项目目录&#xff0c;创建项目 npm init vuelatest Need to install the following packages: create-vue3.13.0 Ok to procee…

汉图科技XP356DNL高速激光打印一体机综合性能测评

汉图科技XP356DNL高速激光打印一体机效率方面表现出色&#xff0c;支持A4纸型的高速打印&#xff0c;单面打印速度高达35页/分钟&#xff0c;自动双面打印速度可达32面/分钟&#xff0c;这样的速度在日常办公中能够极大地提高打印效率&#xff0c;减少等待时间&#xff0c;满足…

【芯片封测学习专栏 -- 什么是 Chiplet 技术】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewChiplet 背景UCIeChiplet 的挑战 Overview Chiplet 又称为小芯片。该技术通过将大型SoC划分为更小的芯片&#xff0c;使得每个部分都能采用不同…

1.CSS的复合选择器

1.1 什么是复合选择器 在CSS中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基础选择器进行组合形成的。 复合选择器可以更精准、更高效的选择目标元素&#xff08;标签&#xff09; 复…

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

docker 自建rustdesk服务器测试

参考https://blog.csdn.net/tootsy_you/article/details/130010564 注意&#xff1a; docker-compose.yml version: 3networks:rustdesk-net:external: falseservices:hbbs:container_name: hbbsports:- 21115:21115- 21116:21116- 21116:21116/udp- 21118:21118image: rust…