05-DevOps-Jenkins自动拉取构建代码

news2025/5/10 7:02:02

新建Gitlab仓库

先在Gitab上创建一个代码仓库,选择创建空白项目

安装说明进行填写,然后点击创建项目

创建好的仓库是空的,什么都没有

新建一个springboot项目,用于代码上传使用。

只是为了测试代码上传功能,所以代码很简单,写一个控制器类,然后返回一个字符串。

项目的完整代码已经打包,下载地址:https://download.csdn.net/download/liangmengbk/90633199

代码编写完成,使用Git完成代码的提交。 

选中项目文件夹,右键,选择Git,然后选择提交文件夹,如下图:

把显示模式改为文件夹显示

选中src文件夹中的内容和pom.xml文件,点击提交

到这里为止,把代码提交到了本地的仓库中,现在需要把代码上传到远程仓库(前面已经搭建好的GitLab)

下面开始向远程仓库进行代码的提交

配置远程仓库地址

输入远程仓库的地址URL

 

配置好远程仓库地址后,点击push

输入Gitlab的用户名和密码

用户名:root

密码:12345678@  (密码是在创建Gitlab时自己设置的)

等待片刻,idea右下角会显示已经将代码提交到远程仓库。

打开Gitlab的项目页面,切换到master分支

就可以看到刚才提交的代码

到此,完成了Gitlab新仓库的创建及代码提交到Gitlab仓库中。

使用Jenkins完成代码的自动拉取

在Jenkins中新建一个任务

自己定义一个名称(不需要与Gitlab完全一致),选择自由风格。

配置完成,点击应用,保存。

回到Jenkins首页,就可以看到刚才创建的任务。

点击任务名称,进入到任务中,选择构建任务

构建过程中,左下角会显示构建的进度条 

构建完成

点击这条记录,选择控制台输出,就能看到具体的执行过程。

验证下Jenkins是否真正的拉取到了文件,进入Jenkins所在的服务器(192.168.1.10),找到/var/jenkins/workspace目录,看里面是否有Jenkins创建的工程文件夹(myproject-ci)

进入到工程文件夹里面,看是否有上传的代码文件

到此,Jenkins已经成功拉取到了Gitlab仓库中的代码文件。

说明:这里为什么能够在宿主机上(而不是Jenkins容器内部)看到Jenkins工程,是因为前面已经将/var/jenkins 目录挂载到Jenkins容器内部了。Jenkins操作的实际就是宿主机上文件。

Jenkins就是把原来人工要操作的命令,现在由Jenkins帮助我们自动构建。

在Jenkins中对代码进行编译

前面只是把源代码拉取到了Jenkins工程中,如果要变成产出物,还需要对源代码进行编译操作。

在myproject-ci工程中,找到配置

在Build中选择执行shell

sh /usr/local/maven/bin/mvn package

shell脚本说明,使用maven来执行package命令,将源代码编译,自动测试,并打包,形成jar文件,这个过程由maven自动完成。

填写完成,点击应用、保存

点击立即构建

通过查看构建的控制台,确实构建是否成功。

最后出现SUCCESS表示成功 

出现问题并解决(如果没有问题,则跳过这个步骤)

在构建的时候,发生了错误,无法访问到阿里云仓库,报错信息如下图:

针对这个问题,排查了一下,大概原因是用macvlan网络模式导致的。尝试进行修复,并没有解决网络问题。

最后决定不使用macvlan,使用默认的桥接网络模式。

执行如下脚本,将Gitlab和Jenkins的网络模式均改为默认网络模式,不使用macvlan。

0.通过docker ps命令,找到Gitlab和Jenkins的容器ID

1. 停止并删除当前容器(注意是两个容器ID放到一行 中间是空格)
docker stop 3e982db0c15f 707d31917085
docker rm 3e982db0c15f 707d31917085

2. 使用bridge网络模式重新创建GitLab容器
docker run -d --name gitlab \
  --hostname gitlab.example.com \
  --restart=always \
  -p 83:80 -p 443:443 -p 2222:22 \
  -v /etc/gitlab:/etc/gitlab \
  -v /var/log/gitlab:/var/log/gitlab \
  -v /var/opt/gitlab:/var/opt/gitlab \
  gitlab/gitlab-ce

3. 使用bridge网络模式重新创建Jenkins容器
docker run -d --name jenkins \
  --restart=always \
  -p 8083:8080 -p 50000:50000 \
  -v /var/jenkins/:/var/jenkins_home/ \
  -v /usr/local/jdk:/usr/local/jdk \
  -v /usr/local/maven:/usr/local/maven \
  -e JENKINS_UC=https://mirrors.cloud.tencent.com/jenkins/ \
  -e JENKINS_UC_DOWNLOAD=https://mirrors.cloud.tencent.com/jenkins/ \
  jenkins/jenkins:lts

4. 获取GitLab容器的IP地址
GITLAB_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' gitlab)

5. 配置Jenkins容器使其能够访问GitLab
docker exec -u 0 -it jenkins bash -c "echo '$GITLAB_IP gitlab.example.com gitlab' >> /etc/hosts"

6. 测试连接
# 测试Jenkins容器能否访问互联网
docker exec -it jenkins ping -c 4 8.8.8.8

# 测试Jenkins容器能否访问GitLab
docker exec -it jenkins ping -c 4 gitlab.example.com

7.在Jenkins项目配置中将Git仓库URL从http://192.168.1.240/root/myproject-ci更改为http://gitlab.example.com/root/myproject-ci

通过以上操作,把原来的容器删掉,基于原有的docker镜像,重新创建了新的Gitlab容器和Jenkins容器。

上面的脚本执行完毕后,Gitlab容器和Jenkins容器就没有自己独立的ip了(因为不是macvlan模式)。

Gitlab访问地址:http://192.168.1.10:83/

Jenkins访问地址:http://192.168.1.10:8083/

用户名和密码还是之前的,Gitlab:root/123456@    Jenkins:root/root

再次点击构建,成功拉取到了依赖,完成打包的操作。

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

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

相关文章

SRS transcode支持 h264_nvenc 硬件解码方案

文章目录 SRS transcode支持 h264_nvenc 硬件解码方案1、修改文件2、重新编译3、使用 SRS transcode支持 h264_nvenc 硬件解码方案 SRS 是开源的流媒体服务,但在使用 GPU 服务器时,想要通过硬件加速,目前官方是不支持的,所以简单…

阿里云服务器搭建开源版禅道

一,下载地址:禅道11.5版本发布,主要完善细节,修复bug,新增动态过滤机制 - 禅道下载 - 禅道项目管理软件 下载地址二: 禅道21.6.stable 实现旧编辑器撰写的文档无感升级至新版编辑器 - 禅道下载 - 禅道项目…

怎么用面向对象和状态机架构,设计一个通用的按键检测功能?

说起按键检测,在座的各位,哪个没被它折磨过? 我刚入门时,为了实现一个简单的按键功能,硬生生写了几十行代码,各种 if...else 嵌套,逻辑绕得我自己都头晕。 更可气的是,辛辛苦苦写完…

Java基础系列-LinkedList源码解析

文章目录 简介LinkedList 插入和删除元素的时间复杂度?LinkedList 为什么不能实现 RandomAccess 接口? LinkedList 源码分析Node 定义初始化获取元素插入元素删除元素遍历链表 简介 LinkedList 是一个基于双向链表实现的集合类,经常被拿来和…

qwen 14B模型配置文件,层名称weight_map. 28GB

qwen 14B模型配置文件,层名称weight_map. 28GB 目录 qwen 14B模型配置文件,层名称weight_map. 28GBmetadata(元数据)weight_map(权重映射)lm_head.weightmodel.layersmlp.{proj_type}.weightpost_attention_layernormself_attn.{proj_type}.{bias_or_weight}model.norm.w…

LVDS系列8:Xilinx 7系可编程输入延迟(一)

在解析LVDS信号时,十分重要的一环就是LVDS输入信号线在经过PCB输入到FPGA中后,本来该严格对齐的信号线会出现时延,所以需要在FPGA内部对其进行延时对齐后再进行解析。 Xilinx 7系器件中用于输入信号延时的组件为IDELAYE2可编程原语&#xff0…

【Oracle专栏】函数中SQL拼接参数 报错处理

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 最近同事反馈了一个很奇怪的问题,即有一个函数,入参是当前年月,主要作用是通过SQL语句将不合规的数据插入到指定表中,插入数据时带上入参的年月参数。当前问题:单独测试SQL没有问题可以执行成功,…

自然语言处理(NLP)领域大图

以下是一份自然语言处理(NLP)与大模型领域的领域大图,涵盖技术框架、发展脉络、交叉融合点和应用场景的完整解析: 1. 核心技术体系 基础分析层级 词法分析:分词、词性标注、命名实体识别句法分析:依存句法…

【Linux我做主】GDB调试工具完全指南

Linux下GDB调试工具完全指南:25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB(GNU Debugger)是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验&#xff0…

Pycharm 如何删除某个 Python Interpreter

在PyCharm中,点击右下角的“Interpreter Settings”按钮,或者通过菜单栏选择“File” > “Settings”(macOS用户选择“PyCharm” > “Preferences”)。在设置窗口中,导航到“Project: [Your Project Name]” >…

Day3:个人中心页面布局前端项目uniapp壁纸实战

接下来我们来弄一下个人中心页面布局user.vue <template><view class"userLayout"><view class"userInfo"><view class"avatar"><image src"../../static/Kx.jpg" mode"aspectFill"></im…

正则表达式反向引用的综合应用魔法:从重复文本到简洁表达的蜕变

“我....我要....学学学学....编程 java!” —— 这类“重复唠叨”的文本是否让你在清洗数据时头疼不已&#xff1f; 本文将带你一步步掌握正则表达式中的反向引用技术&#xff0c;并结合 Java 实现一个中文文本去重与清洗的实用工具。 结合经典的结巴实例。如何高效地将这样的…

FFmpeg+Nginx+VLC打造M3U8直播

一、视频直播的技术原理和架构方案 直播模型一般包括三个模块&#xff1a;主播方、服务器端和播放端 主播放创造视频&#xff0c;加美颜、水印、特效、采集后推送给直播服务器 播放端&#xff1a; 直播服务器端&#xff1a;收集主播端的视频推流&#xff0c;将其放大后推送给…

Windows串口通信

Windows串口通信相比较Android串口通信,在开发上面相对方便一些。原理都是一样,需要仔细阅读厂商设备的串口通信协议。结合串口调试助手进行测试,测试通过后,编写代码实现。 比如近期就接触到了一款天平,其最大测量值为100g,测量精度0.001g。 拿到手之后我就先阅读串口通…

【开源项目】Excel手撕AI算法深入理解(三):时序(RNN、mamba、Long Short Term Memory (LSTM)、xLSTM)

项目源码地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的设计初衷是处理序列数据&#xff08;如时间序列、文本、语音&#xff09;&#xff0c;其核心特点是&#xff1a; 隐藏状态&#xff08;Hidden State&#xff…

构建专业金融图表系统的高效路径——QtitanChart在金融行业的应用价值

QtitanChart是一个C 库&#xff0c;它代表一组控件&#xff0c;这些控件使您可以快速轻松地为应用程序提供漂亮而丰富的图表。QtitanChart在Qt.C 上实现&#xff0c;并且支持所有主要的桌面操作系统 - Windows、Linux和Mac OSX。要将QtitanChart添加到您的程序中&#xff0c;只…

多模态大语言模型arxiv论文略读(二十六)

Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文标题&#xff1a;Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文作者&#xff1a;Xinpeng Ding,…

Java虚拟机(JVM)平台无关?相关?

计算机的概念模型 计算机实际上就是实现了一个图灵机模型。即&#xff0c;输入参数&#xff0c;根据程序计算&#xff0c;输出结果。图灵机模型如图。 Tape是输入数据&#xff0c;Program是针对这些数据进行计算的程序&#xff0c;中间横着的方块表示的是机器的状态。 目前使…

cloudstudio学习笔记之openwebui

代码获取 git clone 参考资料 openwebui官网 https://docs.openwebui.com/getting-started/advanced-topics/development 后端启动 cd backend pip install -r requirements.txt -U sh dev.sh后端启动成功后的界面 在cloudstudio提供的vscode弹出的提示中打开浏览器并在末…

7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font API说明font()获取当前widget的字体信息.返回QFont对象.setFont(const QFont& font)设置当前widget的字体信息. 属性说明family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.pointSize字体⼤⼩weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[…