首页 > 系统相关 >ubuntu系统Jenkins + Gitlab 集成 实现CI\CD (配置前后端)

ubuntu系统Jenkins + Gitlab 集成 实现CI\CD (配置前后端)

时间:2024-03-18 11:59:20浏览次数:17  
标签:CI iot lib APP Gitlab apt CD html jenkins

官网地址:Linux
首先配置jdk17的环境,jenkins依附于java
安装git apt install git
更新 apt update
安装jdk17 apt install openjdk-17-jdk
vim /etc/profile
export JAVA_HOME=/usr/local/java/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
刷新环境变量 surce /etc/profile
官网操作,这个是长期稳定版本
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \

https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \

Debian Jenkins Packages binary/ | sudo tee \

/etc/apt/sources.list.d/jenkins.list > /dev/null

sudo apt-get update

sudo apt-get install jenkins
安装jenins出现dpkg下面错误的时候操作下面的命令用apt安装java就没事


第一种方式
find / -name *.UpdateCenter.xml 找出来json文件修改源
 


改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
第二种方式

mv /var/lib/dpkg/info     /var/lib/dpkg/info_bak

mkdir /var/lib/dpkg/info

apt-get update && apt-get -f install 

mv /var/lib/dpkg/info/*        /var/lib/dpkg/info_bak/

rm -rf /var/lib/dpkg/info

mv /var/lib/dpkg/info_bak /var/lib/dpkg/info

# 开机自启
sudo systemctl enable jenkins

# 启动
sudo systemctl start jenkins

# 重启
sudo systemctl restart jenkins

# 看 jenkins 状态
sudo systemctl status jenkins
访问ip+8080地址jenkins密码/var/lib/jenkins/secrets/initialAdminPassword
在设置里面修改密码,上面默认下面新密码
 


下载插件locale然后设置完后,重启jenkins
 


在这里面配置java和maven

自动构建后端项目jar打包

下载三个插件,搜索不到就是已经安装了

Publish over ssh:ssh传输文件的插件,相当于我们平时使用的xftp,用于上传文件到服务器。

Maven Integration plugin:用于配置maven的,用于在jenkins中打jar包。

Role-based Authorization Strategy:用于控制权限的,可以给不同用户设置管理员、读、写权限。
 


 


 


 


 



创建jenkins+gitlab自动构建后端项目

触发器

shell脚本启动新的jar包


 


 



脚本需要修改的地方上面不要jar的前缀
下面写jar包的地址

#!/bin/bash

# 定义应用程序名称
APP="auth-1.0-SNAPSHOT"
APP_NAME=/home/project/iot/java/${APP}".jar"

# 检查 JAR 文件是否存在
if [ ! -f "$APP_NAME" ]; then
    echo "错误:JAR文件未找到:$APP_NAME"
    exit 1
fi

# 获取pid
tpid=$(ps -ef | grep $APP_NAME | grep -v grep | grep -v kill | awk '{print $2}')
echo "找到的进程ID:$tpid"

# 如果进程存在,则杀死它
if [ -n "$tpid" ]; then
    echo '正在杀死旧的JAR包进程...'
    kill -9 $tpid
    sleep 5

    # 检查进程是否已被成功杀死
    if ps -p $tpid > /dev/null; then
       echo "错误:无法杀死旧的JAR包进程:$tpid"
       exit 1
    fi
fi

# 运行新的 JAR 文件
echo "正在启动新的JAR包进程:$APP_NAME"
nohup java -jar -Xms128m -Xmx256m -XX:MaxMetaspaceSize=256M $APP_NAME > city.out 2>&1 &

# 等待一段时间让新的进程启动
sleep 5

# 检查新进程是否已启动
NEW_PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -z "$NEW_PID" ]; then
    echo "错误:无法启动新的JAR包进程"
    exit 1
else
    echo "新的JAR包进程已启动:$NEW_PID"
fi

tail -f city.out
exit 0

自动构建前端web项目

博客原链接http://t.csdnimg.cn/N94WR
首先在jenkins内下载这两个插件Publish Over SSH和nodejs plugin


安装完成后来全局配置内选择自动安装nodejs然后保存


配置前端服务器的路径
 


创建一个自由项目
 


配置gitlab的仓库
 


选择nodejs构建项目


构建步骤如下这里第一次在前端机器上弄的话必须+npm install


最后进行构建后的操作


然后你的前端目录下就有这个目录了

参数化构建以及脚本

下载插件git parameter
 


然后和开发去交流让他们去提交代码的时候使用tag提交
git add *
git commit -m "备注"
git tag -a "版本标签" -m "备注"
git tag 查看标签
git push origin 标签名字


这里就有标签构建了这里也可以进行版本的回退

前端脚本

#/bin/bash
#将旧版本的iot-admin以时间结尾备份
mv /home/project/iot/html/iot-admin /home/project/iot/html/iot-admin-date "+%Y-%m-%d"
#进入到html目录内
cd /home/project/iot/html
#将压缩包解压
tar -xvf iot-admin.tar.gz /home/project/iot/html
#将得到的dist文件修改名称
mv dist ./iot-admin
~                                                                                                                                         
~                                                                                                                                         
~                                                          

 

或者直接执行命令
 

mv /home/project/iot/html/iot-admin /home/project/iot/html/iot-admin-$(date +%Y-%m-%d)
cd /home/project/iot/html
tar -xvf iot-admin.tar.gz -C /home/project/iot/html
mv dist ./iot-admin

标签:CI,iot,lib,APP,Gitlab,apt,CD,html,jenkins
From: https://blog.csdn.net/G3088141049/article/details/136711344

相关文章

  • 易基因:人类大脑的单细胞DNA甲基化和3D基因组结构|Science
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。高通通量表观基因组分析技术可用于阐明大脑中细胞复杂性的基因调控程序。5'-甲基胞嘧啶(5mCs)是哺乳动物基因组中最常见的修饰碱基,大多数5mCs发生在胞嘧啶-鸟嘌呤二核苷酸(CpGs)上。CG差异甲基化区域(DMRs)通常是顺式......
  • 抗噪/防干扰LCD显示液晶段码驱动VK2C21A/AA/B/BA/C/D适用于燃气表,瓦斯表,煤气表,温控器
    产品品牌:VINKA/永嘉微/永嘉微电产品型号:VK2C21A/B/C/D/VK2C21AA/VK2C21BA封装形式:SOP28/24/20、NSOP16、SSOP28、SSOP24(新增封装)产品年份:新年份原厂直销,样品免费,技术支持,价格优势。概述:VK2C21是一个点阵式存储映射的LCD驱动器,可支持最大80点(20SEGx4COM)或者最大128点(16SEGx8C......
  • DreamGaussian: Generative Gaussian Splatting for Efficient 3D Content Creation解
    文章目录前言一、基本介绍二、方法原理1.DreamGaussian方法2.分数蒸馏抽样(SDS)总结前言太卷啦,太卷啦,视觉太卷啦,赶紧跑路吧~_~介绍DreamGaussian:GenerativeGaussianSplattingforEfficient3DContentCreation论文方法,解释原理,本文不是机械翻译,而是尝试讲解方......
  • 聊聊CDN、缓存插件、网站速度优化
    导语        对于网站速度优化这一永恒的话题,作为一名老站长,我的最新建议是,在现今的网络环境下,最大限度地利用CDN(ContentDeliveryNetwork)服务已经成为提升网站性能的必备策略之一。尤其是在确保前端页面快速载入方面,CDN通过在全球范围内分布的服务器节点缓存静态......
  • 信息安全认证 CISSP 官方学习指南 第9版 中文版 学习记录
    刚考完CISSP考试,顺利通过,因此记录一下相关内容,希望对大家有帮助CISSP介绍CISSP(CertifiedInformationSystemsSecurityProfessional)是全球范围内最受尊敬的信息安全认证之一,由国际信息系统安全认证联盟(ISC)²(InternationalInformationSystemSecurityCertification......
  • “城市绿肺诊断:集成GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型技术深入解析生
    基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调分析城市群是一国经济发展水平的象征,也是一国经济发展到一定阶段的标志,我国城市群建设体量不断增加,将成为全球经济的核心,中国城市群的建设逐步引领全球进入到了21世纪的中国新时代。然而,高......
  • AWTK slider_circle 控件发布
    slider_circle控件。主要特色:支持正向和反向支持设置滑块的半径支持背景线宽和颜色支持前景线宽和颜色支持设置是否显示值的文本支持设置起始角度和结束角度支持设置格式化值的格式字符串支持使用图片填充背景和前景界面效果:注意:水平向右为0度,顺时针为正,逆时针为负......
  • 硕芯科技SX1308DCDC升压方案
    数据手册特征大致如下升压型DCDC2~24V电压输入4A开关电流限制SOT23-6超小封装最高28V输出电压典型应用电路图如下:输出电压与反馈电阻关系如下 VREF为0.6V,如下电路为输出5V时的电路配置其中EN为该芯片的转换使能引脚,注意此处是转换而不是输出,所以当该引脚为低电平时,......
  • Special Characters
    首先可以看一看官解,通过对同一种相等字符的连续串来达到的我们也可以这么证明,假设我们已经构造出来了一个字符串\(s\),考虑其最后一个字符\(a\)如果\(a\)与其前面一个字符不相等,那么\(a\)就对答案有一个贡献;此时如果我们在后面添加一个字符\(b\),若\(b=a\),则\(a\)的贡献不变但是\(......
  • 十进制与BCD码互相转换
    BCD到十进制:#include<stdio.h>intmain(){ intdecimalNumber=35;//要转换为BCD码的十进制数 inttens=decimalNumber/10; intones=decimalNumber%10; //将十位和个位转换为BCD码 charbcd=(tens<<4)|ones; //00110000 printf("十进制数%......