JenkinsGitLab完成自动化构建部署

关于GitLab安装:GitLab安装-CSDN博客

Docker中安装GitLab:Docker下安装GitLab-CSDN博客

安装JenKins

Jenkins官网:Jenkins

中文版:Jenkins

安装时候中文页面的war包下不来   在英文页面

记得装JDK8以上  JenKins使用java写的  运行JenKins需要JDK环境

我这里已经装好了

将下载好的Jenkins  war包上传到服务器

进入war包所在目录

 cd /usr/local/develop

运行Jenkins(java -jar jenkins.war -httpPort=8090)这样指定端口运行  Jenkins 默认运行在端口号 8080     这样启动无法关闭后台  可以用nohup(nohup java -jar jenkins2.war &)

java -jar jenkins.war 

这里显示该版本需要JDK11   刚才下的是2.426.3

下载个老版本的

进入war包所在目录 运行 这样启动无法关闭后台  可以用nohup(nohup java -jar jenkins2.war &)

java -jar jenkins2.war 

又报错  还是JDK问题

重新再下个  

2.346.2

大概10秒 下次安装可以选择插件安装  注意  这里不要选推荐安装  一大堆问题

注意  这里不要选推荐安装  一大堆问题

看了下服务器  一大堆报错  注意  这里不要选推荐安装  一大堆问题  报错就是因为选择了安装推荐的插件

是Jenkins版本问题  要安装的插件要求更高版本

先继续吧

Jenkins用来做自动化构建   每一个任务叫一个Item

Jenkins就是从Git上把代码拉下来  然后通过maven构建

那么还需要安装Maven

Maven官网

Maven – Welcome to Apache Maven

进入目录

cd /usr/local/develop

解压

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

移动文件  像移就移 不想就放着

mv apache-maven-3.9.6 /usr/local/maven

测试Maven构建

/usr/local/maven/bin/mvn

说明没问题

查看环境变量

/usr/local/maven/bin/mvn -v

这样maven就好了

根据提示很多插件都需要2.361.4版本 继续换版本

关掉原来的Jenkins

ps -ef|grep java

试了很多  都需要JDK8以上

随便先玩着吧

nohup java -jar jenkins6.war &

需要安装一个插件 用于使用Maven来构建项目

下次安装可以选择插件安装

往下拉

。。。。。。。。。。。。

2022年7月2日起,jenkins新版本不再支持java8,仅支持java11和java17。

看样子  它要求 Jenkins 版本为 2.361.4 或更高。

想着还是额外再装个JDK17

cd /usr/local/develop

在线下载JDK17

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

cd /usr/local/develop

解压

tar -zxf jdk-17_linux-x64_bin.tar.gz

暂时就切换环境变量来切换JDK吧

配置环境变量

vim /etc/profile

刷新

source /etc/profile

断开shell  由于缓存原因可能  java -version  还是显示1.8

再切换到1.8试试

暂时就用这种笨方法试试吧   下载最新版的JenKins   

把JDK换成17

直接下载最新版本

继续刚才的操作

因为刚才是  java -jar的方式启动    

关闭Jenkins   后台启动

直接ALT+C就可以关闭

nohup java -jar jenkins2.426.3.war &

去Jenkins配置Maven

点击新建Item

选择一个在自己代码仓库的项目

这个原因是服务器没有装git

安装Git

yum install git
 

试下git

刷新下页面  

指定启动端口

上面两个随手做个笔记  

firstDevops

不过这只是构建了jar包 就是Jenkins通过 maven自动构建编译了jar

下面把jar包丢到测试服务器上  

先安装一个插件

Publish  Over SSH

安装完成后

添加一台测试服务器

目标服务器上的文件夹最好提前建好

保存之后已经在部署了

nohup java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &

nohup java -jar /root/xxoo/devops*.jar > /root/xxoo/server.log 2>&1 &   可以用通配符

nohup /usr/local/develop/jdk1.8.0_191/bin/java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &

设置SSH Publishers超时机制

在目标服务器上写个脚本

vim x.sh

./x.sh    执行之后

删除xxx.txt文件   尝试用Jenkins以命令的方式传过来是否可以用

rm -rf xxx.txt

这里也可以向目标服务器发送命令

在这里可以比如说kill 目标服务器上某个进程  或者执行某个脚本

目标服务器里又有了 xxx.txt  说明 脚本执行成功

那么我们可以在目标服务器写脚本  由Jenkins来执行

编写脚本

vim x.sh

保存后可以试下

还存在一个问题就是 如果jar包没有运行 会报错

那就添加一个判断

其实这里源目录不应该删掉  把日志全删了   这里只是单纯使用下  具体以后要做优化

kill -9是直接杀死

kill -15 优雅点死   反正是死  早死晚死

提交更新代码

像上面这样  还是需要手动去构建   要去JenKins的Item任务里点一下才去构建部署

但一般也不建议使用,比如在测试时候,一个功能点的开发还没全部完成,git一提交就自动部署,一般是不建议的

用不用是你的事,但你得会

原理就是GitLab用钩子自动触发Jenkins自动构建

先看下面这个

就是说你在浏览器里 输入

http://JenKinsIP或者域名:8080/me/my-views/view/all/job/firstDevops/build?token=123456

或者

http://JenKinsIP或者域名:8080/buildWithParameters?token=TOKEN_NAME

Jenkins就自动构建部署了

那么让GitLab钩子去自动调用就好了

但是存在一个问题

在自己同一个浏览器,是可以的原因是你已经登录了

但是你用psotMan或者换成其他浏览器就不行了

会要求你先登录

解决办法:

Jenkins先下载一个插件

Build Authorization Token Root

 

这个插件的作用就是触发远程校验之后 用它的方式做构建触发 不用再登录了

buildByToken/build?job=firstDevops&token=123456

那么job就是Item任务名字

token就是我们设置的Item的校验

现在用postMan

可以看到 已经在构建部署了

那么就把这个URL地址  让GitLab钩子调用就好了

产生时间之后 让GitLab调用URL  让JenKins构建部署

SSL加上也没事

有些GitLab版本不同  上面可能添加不上 

设置下网络 即可

可以点击测试看看JenKins有没有构建部署

测试下

提交代码后  会不会自动构建部署

有好几种构建部署触发器

下面说下定时构建

JenKins cron表达式和标准的cron表达式是有一定区别的   自己查

这边我自己已经测试过了  就是每隔2分钟会去GitLab上拉代码进行构建部署(注意分支 确定是你JenKins上配置的)

一般不会这么做,要做也比如说每天晚上12点  或者说 某几天的晚上12点

这个我就取消掉了  一般不会

Poll SCM触发构建    和上面定时差不多  Jenkins会定时轮询Gitlab上的代码
(注意你配置的分支)

   

测试通过

我自己测试方式很简单  提交代码到Gitlab  注意测试时候把远程触发关闭

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网神 SecGate 3600 防火墙 route_ispinfo_import_save 文件上传漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

问题:重热现象可使多级汽轮机的理想焓降增加,重热系数越大,多级汽轮机的内效率就越低。 #学习方法#微信#媒体

问题:重热现象可使多级汽轮机的理想焓降增加,重热系数越大,多级汽轮机的内效率就越低。 参考答案如图所示

代码随想录算法训练营第二十五天 |216.组合总和III,17.电话号码的字母组合(已补充)

剪枝操作讲解:(已观看) 带你学透回溯算法-组合问题的剪枝操作(对应力扣题目:77.组合)| 回溯法精讲!_哔哩哔哩_bilibili 216.组合总和III(已观看) 1、题目链接&#xf…

Pinia介绍和使用

1. pinia是什么 Pinia 是一个基于 Vue.js 的状态管理库,用于管理应用程序的数据。它提供了一种简单、直观且可扩展的方式来组织和访问应用程序的状态,下面是详细介绍 基于 Vue 3:Pinia 是专门为 Vue 3 开发的状态管理库,充分利用…

推理系统学习笔记

一些学习资料 最近对MLsys比较感兴趣,遂找些资料开始学习一下 https://fazzie-key.cool/2023/02/21/MLsys/https://qiankunli.github.io/2023/12/16/llm_inference.htmlhttps://dlsyscourse.orghttps://github.com/chenzomi12/DeepLearningSystem/tree/main/04Infe…

算法——前缀和算法

1. 什么是前缀和算法 前缀和算法(Prefix Sum)是一种用于快速计算数组元素之和的技术。它通过预先计算数组中每个位置前所有元素的累加和,将这些部分和存储在一个新的数组中,从而在需要计算某个区间的和时,可以通过简单…

《Git 简易速速上手小册》第3章:分支管理(2024 最新版)

文章目录 3.1 创建与合并分支3.1.1 基础知识讲解3.1.2 重点案例:为 Python 项目添加新功能3.1.3 拓展案例 1:使用 Pull Requests (PRs) 在团队中合作3.1.4 拓展案例 2:解决合并冲突 3.2 分支策略的最佳实践3.2.1 基础知识讲解3.2.2 重点案例&…

【动态规划】【前缀和】【数学】2338. 统计理想数组的数目

作者推荐 【动态规划】【前缀和】【C算法】LCP 57. 打地鼠 本文涉及知识点 动态规划汇总 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode:2338. 统计理想数组的数目 给你两个整数 n 和 maxValue ,用于描述一个 理想…

手把手教你玩转蓝牙模块(原理+驱动)

head: title: 手把手教你玩转蓝牙模块(原理驱动) description: 手把手教你玩转蓝牙模块(原理驱动) 作为嵌入式开发工程师,蓝牙模块怎能少呢? 蓝牙模块广泛应用在各种电子器件,比如手机、蓝牙耳…

2 月 3 日算法练习-数论

简单数论 思路&#xff1a;各个相邻数的差值求最大公约数得到 d&#xff0c;然后就能求出最少项数。 c17用gcd&#xff0c;c11 用_gcd #include<bits/stdc.h> using namespace std; using ll long long; const int N 1e5 10; ll a[N]; int n; int main( ){cin>>…

【网站项目】030小学生课外知识学习网站

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Vue3.3新特新和Vue3-Pinia

文章目录 1.Vue3.3新特性 - defineOptionsVue3.3新特性 - defineModel3.Pinia快速入门4.手动添加Pinia到Vue项目5.Vue3 - Pinia的基本语法6.action的异步实现7.Vue3-Pinia-storeToRefs方法8.Pinia持久化插件安装用法 1.Vue3.3新特性 - defineOptions 背景说明 有<script se…

ELAdmin后台启动

版本选择 ELAdmin官网地址&#xff1a;https://eladmin.vip/ 有 JPA 和 MyBatis两个版本&#xff0c;之前只有 JPA&#xff0c;考虑到国内复杂的业务情况增加了 MyBatis 版本。我最终也选择了使用 MyBatis版本。 代码 仓库地址&#xff1a;https://gitee.com/elunez/eladmin…

Python环境下基于辛几何模态分解的信号分解方法

基于辛几何的分析方法是一种保护相空间几何结构的新型分析方法&#xff0c;主要用于求解动力学和控制系统中矩阵或Hamilton矩阵的特征值问题&#xff0c;用来解决在动力学和控制系统理论的2n2n矩阵或哈密顿矩阵的特征值问题&#xff0c;已应用到结构损伤信号、奇异微分方程等系…

【C#】.net core 6.0 创建默认Web应用,以及默认结构讲解,适合初学者

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

Zoho Mail 2023:回顾过去,展望未来

当我们告别又一个非凡的一年时&#xff0c;我们想回顾一下Zoho Mail如何融合传统与创新。我们迎来了成立15周年&#xff0c;这是一个由客户、合作伙伴和我们的敬业团队共同庆祝的里程碑。与我们一起回顾这段旅程&#xff0c;探索定义Zoho Mail历史篇章的敏捷性、精确性和创新性…

HiveSQL——条件判断语句嵌套windows子句的应用

注&#xff1a;参考文章&#xff1a; SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25_sql剁成嵌套判断-CSDN博客文章浏览阅读920次&#xff0c;点赞4次&#xff0c;收藏4次。0 需求分析需求&#xff1a;表如下user_idgood_namegoods_typerk1hadoop1011hive1…

MQTT 服务器(emqx)搭建及使用

推荐阅读&#xff1a; MQTT 服务器(emqx)搭建及使用 - 哔哩哔哩 (bilibili.com) 一、EMQX 服务器搭建 1、下载EMQX https://www.emqx.com/zh/try?productbroker 官方中文手册&#xff1a; EMQX Docs 2、安装使用 1、该软件为绿色免安装版本&#xff0c;解压缩后即安装完…

spring boot打完jar包后使用命令行启动,提示xxx.jar 中没有主清单属性

在对springBoot接口中间件开发完毕后&#xff0c;本地启动没有任何问题&#xff0c;在使用package命令打包也没异常&#xff0c;打完包后使用命令行&#xff1a;java -jar xxx.jar启动发现报异常&#xff1a;xxx.jar 中没有主清单属性&#xff0c;具体解决方法如下&#xff1a;…

【Java八股面试系列】JVM-内存区域

目录 Java内存区域 运行时数据区域 线程独享区域 程序计数器 Java 虚拟机栈 StackFlowError&OOM 本地方法栈 线程共享区域 堆 GCR-分代回收算法 字符串常量池 方法区 运行时常量池 HotSpot 虚拟机对象探秘 对象的创建 对象的内存布局 句柄 Java内存区域 运…