容器化安装Jenkins部署devops

基础环境介绍

系统使用的是centos7.9

内核使用的是5.16.13-1.el7.elrepo.x86_64

容器使用的是26.1.4

docker-compose使用的是 v2.29.0

链路图

devops

配置git环境插件

部署好jenkins后开始配置 jenkins连接git,这里需要jenkins有连接git的插件。在已安装的插件中寻找git。

在可用的插件里找到 git plugin 

在可用的插件里找到  Git Parameter

在页面看到有git插件后 进入容器也需要再验证一下,命令行直接输入git 看看是否有很多命令出来。

 jenkinsdata]# docker exec -it bb4 /bin/bash
jenkins@bb4419a0ac15:/$ git
git                 git-lfs             git-receive-pack    git-shell           git-upload-archive  git-upload-pack
jenkins@bb4419a0ac15:/$ git

这里git插件验证完成,没啥问题了。

配置jenkins里的jdk和maven环境变量

公司大部分都是用的java项目打包的

这里服务器上有jdk和maven  ,直接把文件目录移动过去就好了。

cp -r /usr/local/jdk/ /data/jenkinsdata/
cp -r /root/maven/ /data/jenkinssdata/# 记得授权app权限 这里容器内是用app启动的
chown -R app:app maven  jdk

配置jdk的变量

进入容器查看jdk的路径

maven]# docker exec -it bb4 /bin/bash
jenkins@bb4419a0ac15:/$ ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
jenkins@bb4419a0ac15:/$ cd /var/jenkins_home/jdk/
jenkins@bb4419a0ac15:~/jdk$ ls
COPYRIGHT  README.html                         THIRDPARTYLICENSEREADME.txt  include         jmc.txt  legal  man      src.zip
LICENSE    THIRDPARTYLICENSEREADME-JAVAFX.txt  bin                          javafx-src.zip  jre      lib    release
jenkins@bb4419a0ac15:~/jdk$ pwd
/var/jenkins_home/jdk

在页面配置jdk环境变量

1、这里不要选择自动安装,已经把jdk目录复制到宿主机的卷上了。

2、这里写的路径是上面进入容器后的路径。

配置maven的变量

进入容器查看maven的路径

jenkins@bb4419a0ac15:~/maven$ pwd
/var/jenkins_home/maven

在页面配置maven环境变量

1、这里不要选择自动安装,已经把maven目录复制到宿主机的卷上了。

2、这里写的路径是上面进入容器后的路径。

配置一个test项目

目的:是要 jenkins能够从gitlab拉取代码,并且完成打包编译的操作。

第一步构建项目

新建任务

这里名称自定义起一个,选择自由风格创建。

页面选择刚创建的test0920v1项目工程

第二步配置gitlab地址及凭证

这里点击 源码管理 开始配置私有仓库gitlab地址,这里会报错因为没有配置凭证

添加账号密码

选择刚添加的账号密码。

注意 这里需要jenkins容器所在宿主机可以连接gitlab,这里连接gitlab的账号有权限拉取代码。如果配置没有问题后 页面不会出现报错信息。

第三步拉取代码查看是否成功

点击项目 立即构建

控制台输出

查看日志信息

进入容器查看本次是否把代码拉取下来了,进入目录查看代码文件,看到是有文件的,说明拉取代码成功。

jenkins@bb4419a0ac15:~/maven$ cd /var/jenkins_home/workspace/test0920v01
jenkins@bb4419a0ac15:~/workspace/test0920v01$ pwd
/var/jenkins_home/workspace/test0920v01
jenkins@bb4419a0ac15:~/workspace/test0920v01$ ls
Jenkinsfile  README.md  docker  pom.xml  src

第四配置maven编译代码

选择到build steps --> maven目标

选择刚才添加的maven

编写编译代码的命令,保存退出点击立即构建。

注意这里写命令的时候 不要写mvn了 clean install -Dmaven.test.skip=true -U  直接写mvn后面的参数就好了,如果这里 写成 mvn clean install -Dmaven.test.skip=true -U 会报错。

点击构建查看日志,这里我就不再重复截图了。

这里看到日志是编译成功了

进入服务器查看是否打包成功,查看到是有jar包的,再次验证成功。

jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ pwd
/var/jenkins_home/workspace/test0920v01/target
jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ ls
classes  datax-db.jar  datax-db.jar.original  generated-sources  maven-archiver  maven-status

第五步 把打包好的jar包发送到服务器上

推送到目标服务器上 还需要ssh插件,Publish Over SSH  ,  SSH

上面插件安装完成后开始配置ssh插件

这里先配置一个远程服务器。(这里如果点击没有反应,重启一下容器)

这里选择高级选项点击输入密码

点击测试密码,显示success没有问题了。

 开始配置Job

选择构建后操作,这里因为上面安装好了插件,这里才有

找到构建后操作

下面要写容器内打包的相对路径,查看容器内的路径

jenkins@bb4419a0ac15:~/workspace/test0920v01$ ls
Jenkinsfile  README.md  docker  pom.xml  src  target
jenkins@bb4419a0ac15:~/workspace/test0920v01$ cd target/
jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ ls
classes  datax-db.jar  datax-db.jar.original  generated-sources  maven-archiver  maven-status

这里路径是target\*.jar 目录下的jar文件

查看任务日志 已经执行了推送步骤

查看目标服务器是否有文件,这里显示目标服务器上已有jar包。

[root@docker-010050111111-cm5 target]# pwd
/opt/target
[root@docker-010050111111-cm5 target]# ls
datax-db.jar

第六步 在代码中配置docker目录

在代码根目录里增加一个docker目录,创建一个dockerfile文件。

FROM harbor.xxx.xxx.com/base/ubuntu:20.04
WORKDIR /optENV project=$project
ENV env_huanjing=$env_huanjing
ENV pp_agent_id=$pp_agent_id
ENV jacoco="-javaagent:/data/jacoco/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,address=*,port=18524"
ENV pp_agent="-javaagent:/data/pp-agent/pinpoint-bootstrap.jar -Dpinpoint.applicationName=tihuan_project-tihuan_app_env"
ENV java_opts="-Xms1012m -Xmx2072m -XX:-UseGCOverheadLimit -Dspring.cloud.nacos.config.group=FUSION_GROUP  -Dspring.cloud.nacos.server-addr=10.50.xxx.17:8848,10.50.xxx.18:8848,10.50.xxx.19:8848 -Dspring.cloud.nacos.config.namespace=ad938948-cc3e-4bcc-b458-f0af9548eeef"# app
ADD *.jar .
CMD  /usr/local/jdk/bin/java -jar ${pp_agent} ${jacoco} ${java_opts} -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=utf-8 -Dspring.profiles.active=${app_env} -Dspring.cloud.nacos.discovery.ip=${app_serverip} -Dspring.cloud.nacos.discovery.port=${app_port} datax-db.jar

创建docker-compose.yml 文件

services:datax-db:build:context: ./dockerfile: Dockerfileimage: datax-db:v1.0.0container_name: datax-dbports:- 8080:8080

这里添加了两个docker相关的文件,一个是dockerfile打包镜像,另外一个是 docker-compose文件,后构建后操作 把命令推送到目标服务器。

cd docker
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build

以上内容根据每个人的不同的镜像及环境修改,编辑完后开始点击立即构建,会把代码及文件推送至目标服务器,并在目标服务器上打包镜像及运行容器。

在目标服务器上查看已运行的容器。

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

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

相关文章

豆包Python SDK接入流程

模型与价格 豆包的模型介绍可以看豆包大模型介绍,模型价格可以看豆包定价文档里的“模型推理” - “大语言模型” - “字节跳动”部分。 推荐使用以下模型: Doubao-lite-32k:每百万 token 的输入价格为 0.3 元,输出价格为 0.6 元…

Hexo博客私有部署Twikoo评论系统并迁移评论记录(自定义邮件回复模板)

部署 之前一直使用的artalk,现在想改用Twikoo,采用私有部署的方式。 私有部署 (Docker) 端口可以根据实际情况进行修改 docker run --name twikoo -e TWIKOO_THROTTLE1000 -p 8100:8100 -v ${PWD}/data:/app/data -e TWIKOO_PORT8100 -d imaegoo/twi…

LabVIEW编程能力如何能突飞猛进

要想让LabVIEW编程能力实现突飞猛进,需要采取系统化的学习方法,并结合实际项目进行不断的实践。以下是一些提高LabVIEW编程能力的关键策略: 1. 扎实掌握基础 LabVIEW的编程本质与其他编程语言不同,它是基于图形化的编程方式&…

nethogs显示每个进程所使用的带宽

1、安装nethogs: Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。 #ubuntu或debian安装方法 sudo apt-get install nethogs #fedroa或centos安装法 sudo yum install nethogs -y 2、使用测试 nethogs是一款小巧的"net top&quo…

开源项目还需要花钱吗

开源和免费并不完全等同,很多用户对开源软件是否真的不花钱存在误解。本文深入探讨开源的真正含义、开源项目是否需要付费、以及开源软件的盈利模式。通过分析国内外主流开源平台,我们将帮助读者更好地理解开源与免费之间的区别。 什么是开源 开源软件指…

增强现实系列—GaussianAvatars: Photorealistic Head Avatar

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

【ollama】ollama配置本地大模型并运行

ollama的Github链接 https://github.com/ollama/ollamaollama官网链接 https://ollama.com/打开后点击下载 下载完成后进行安装,安装完毕后在终端输入以下,代表安装成功 ollama在ollama官网的模型库中找到需要的模型,这里使用阿里最新开源…

ZYNQ FPGA自学笔记~操作PLL

一 时钟缓冲器、管理和路由 垂直时钟中心(clock backbone)将设备分为相邻的左侧和右侧区域,水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧,从而将某些时钟资源扩展到水平相邻区域。BUFG不…

JavaWeb---三层架构

文章目录 1. 为什么需要分层?2.软件设计中的分层模式3.分层4.三层架构:显示层、业务逻辑层、数据访问层3. 案例:利用三层架构原理实现编写web程序的流程 摘自:https://blog.csdn.net/qq_64001795/article/details/124112824 1. 为…

死锁(详解版)

一、什么是死锁 死锁就是多个线程在运行过程中,都需要获取对方线程所持有的锁(资源),导致处于长期无限等待的状态。 二、死锁产生原因 两个线程各自持有不同的锁,然后试图获取对方线程的锁,造成双方无限等待…

聊城网站建设:企业如何打造高效官网

聊城网站建设:企业如何打造高效官网 在互联网飞速发展的今天,官方网站已成为企业展示形象、推广产品、与客户沟通的重要平台。尤其对于聊城地区的企业来说,建立一个高效的官网显得尤为重要。本文将分享一些关键步骤,帮助企业打造一…

如何在Mac上查看剪贴板历史记录

重点摘要 macOS 内建的剪贴簿查看器可以透过 Finder 存取,但只能显示最近一次复制的内容,而且重新开机后就会清除。若要更进阶的剪贴簿管理,第三方 app 像是 CleanClip 提供了强大的功能和更好的组织方式。CleanClip 提供了全方位的剪贴簿历史管理解决方案,支援各种内容类型和…

书客、柏曼、明基护眼台灯怎么样?实测三款热门护眼台灯推荐

随着市场上照明产品种类的日益丰富,从护眼台灯到护眼落地灯等各种选择足以让初次接触的宝妈们感到困惑,仿佛置身于一个复杂的选择迷宫。为了帮助大家筛选出真正优质的护眼灯,作为一位长期关注护眼照明领域的评测博主,我综合考虑了…

Swift里的数值变量的最大值和最小值

Swift里有很多种数值变量,如Int,Int8,Float,Double等。和绝大多数编程语言一样,由于是在计算机上运行,内存有限,所以必有最大值和最小值,而计算机无法处理超过该值的数。 在Swift中…

Unity 3D 概览一口气讲完!\(@^0^@)/

PS:好久没做Unity内容了,先做个合集凑合看着吧。。谢啦!!☆⌒(*^-゜)v Unity 3D 简介 Unity 3D 也称 Unity,是由 Unity Technologies 公司开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综…

AI大模型站在十字路口,持续突破or陷入低谷?

文|白 鸽 编|王一粟 当普通人被AI轰炸的已经疲劳,应用落地也没有惊人地突破,AI大模型的发展似乎已经进入瓶颈期。 在云栖大会之前,业界弥漫着对AI的唱衰,似乎又到了一个历史的转折点。如2017年上一代深度…

MySQL的索引——提高查找算法的数据结构 B+树

我们MYSQL服务器是在内存中的,所以所有的操作也是内存级的,索引也是如此 我们要提高算法的效率:首先要用一个好的数据存储结构储存数据,然后结构决定算法 所以——索引的本质就是一种提高算法效率组织的数据结构 缩印的主要价值体…

如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件

创建一个 Chrome 插件是一个有趣的项目,特别是当结合使用强大的工具如 React、TypeScript、TailwindCSS 和 Vite 时 在这篇文章中,我们将逐步引导完成整个过程,了解如何在 2024 年构建自己的 Chrome 插件。无论是经验丰富的开发者还是刚刚起…

Kafka 为什么这么快?

Kafka 是一款性能非常优秀的消息队列&#xff0c;每秒处理的消息体量可以达到千万级别。今天来聊一聊 Kafka 高性能背后的技术原理。 1 批量发送 Kafka 收发消息都是批量进行处理的。我们看一下 Kafka 生产者发送消息的代码&#xff1a; private Future<RecordMetadata>…

Mysql进阶——1

一.MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法。 对常⽤程序进⾏详细的讲解&#xff0c;包括它们的选项。 MySQL安装完成通常会包含如下程序&#xff1a; • Linux系统程序⼀般在 /usr/bin⽬录下&#xff0c;可以通过命令查看&#x…