gitlab+jenkins

文章目录

  • 架构
    • gitlab和jenkins安装
    • jenkins配置
    • gitlab配置
    • jenkins与gitlab联动
  • 参考

架构

在这里插入图片描述

gitlab和jenkins安装

部署docker
在这里插入图片描述

部署jenkins
在这里插入图片描述

在这里插入图片描述

启动jenkins
在这里插入图片描述
用户:admin,对应的密码如下
在这里插入图片描述

点击安装自定义推荐的插件
在这里插入图片描述
安装gitlab插件
在这里插入图片描述

jenkins配置

在这里插入图片描述
在这里插入图片描述
配置pipline脚本

/* ==========================================================Jenkinsfile – 一键部署 cyberpunk-games 静态站点功能:安装/更新 Nginx → 部署站点配置 → 克隆/更新 Git 仓库 → 重载 Nginx========================================================== */pipeline {/* 任意可用的 Jenkins agent */agent any/* ------------------------------------------------------定义全局环境变量,后续所有 stage 均可直接使用------------------------------------------------------ */environment {// Git 仓库地址(根据实际修改)GIT_REPO_URL      = 'http://10.99.1.104:180/root/website'// 代码拉取到本地的目录GIT_CLONE_DIR     = '/var/www/cyberpunk-games'// 目标部署服务器(根据实际修改)SSH_HOST          = '127.0.0.1'// 凭据 ID(在 Jenkins 凭据库中已配置的用户名/密码)CRED_ID           = '52db79b8-af8d-4102-96aa-ba9aa4295801'}/* ------------------------------------------------------Pipeline 各阶段------------------------------------------------------ */stages {/* --------------------------------------------------Stage 1:安装 Nginx(仅需一次即可)-------------------------------------------------- */stage('Install Nginx') {steps {script {// 使用 Jenkins 凭据,将用户名、密码注入环境变量withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """# 通过 sshpass 免交互安装sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'sudo dnf install -y nginx'"""}}}}/* --------------------------------------------------Stage 2:生成并部署 Nginx 站点配置-------------------------------------------------- */stage('Deploy Nginx Configuration') {steps {script {// 1. 定义 Nginx 虚拟主机配置def nginxConfig = """
server {listen       80;server_name  yourdomain.com;   // TODO: 改成真实域名或 IProot  /var/www/cyberpunk-games;index index.html;location / {try_files \\$uri \\$uri/ =404;}# 可选:启用 gzip 压缩gzip              on;gzip_types        text/plain application/javascript text/css application/xml text/xml;gzip_min_length   1000;
}
"""// 2. 将配置写到临时文件writeFile file: '/tmp/cyberpunk-games.conf', text: nginxConfig// 3. 拷贝到目标服务器withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \scp /tmp/cyberpunk-games.conf \${SSH_USER}@${SSH_HOST}:/etc/nginx/conf.d/cyberpunk-games.conf"""}}}}/* --------------------------------------------------Stage 3:克隆或更新 Git 仓库-------------------------------------------------- */stage('Clone or Update Git Repository') {steps {script {withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'if [ ! -d "${GIT_CLONE_DIR}/.git" ]; then \git clone ${GIT_REPO_URL} ${GIT_CLONE_DIR}; \else \cd ${GIT_CLONE_DIR} && git pull origin main; \fi'"""}}}}/* --------------------------------------------------Stage 4:重载 Nginx 使配置生效-------------------------------------------------- */stage('Restart Nginx') {steps {script {withCredentials([usernamePassword(credentialsId: "${CRED_ID}",usernameVariable: 'SSH_USER',passwordVariable: 'SSH_PASSWORD')]) {sh """sshpass -p '${SSH_PASSWORD}' \ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \'sudo systemctl reload nginx'"""}}}}}/* ------------------------------------------------------构建后操作(可选)------------------------------------------------------ */post {always {echo 'Pipeline 执行结束'}success {echo '所有阶段执行成功!'}failure {echo '有阶段失败,请检查日志'}}
}

创建凭据
在这里插入图片描述

进入到已经创建的任务中
在这里插入图片描述
修改里面的pipline 脚本中的credential id
在这里插入图片描述

gitlab配置

在这里插入图片描述

在这里插入图片描述
创建webs仓库
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

clone代码
在这里插入图片描述

提交代码

在这里插入图片描述

jenkins与gitlab联动

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打开gitlab,配置webhook
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打开jenkins,修改pipeline脚本
在这里插入图片描述
手动构建测试
在这里插入图片描述

gitlab修改触发
在这里插入图片描述
gitlab手动触发jenkins
在这里插入图片描述

参考

  • 【实战Jenkins+Gitlab全自动化】一键提交代码即自动部署|Jenkins自动化部署|Gitlab|DevOPS|SRE|QA

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

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

相关文章

Redis字符串操作指南:从入门到实战应用

Redis作为一款高性能的键值存储数据库,其字符串(String)类型是最基础也最常用的数据类型。它不仅能存储简单的文本信息,还能应对数字计算、二进制数据等多种场景,灵活且高效。接下来,我们就全方位剖析Redis…

SQLite 数据库字段类型-详细说明,数据类型详细说明。

SQLite 数据类型 SQLite字段类型详细说明,包含存储类、亲和类型、布尔类型、日期时间类型的存储方式、取值范围及核心特性。 创建 SQLite3 表时可使用的各种数据类型名称,同时也介绍了相应的亲和类型。 一、核心存储类(Storage Classes&am…

Node.js特训专栏-实战进阶:17.会话管理与安全存储

🔥 欢迎来到 Node.js 实战专栏!在这里,每一行代码都是解锁高性能应用的钥匙,让我们一起开启 Node.js 的奇妙开发之旅! Node.js 特训专栏主页 专栏内容规划详情 会话管理与安全存储:从原理到实战的Web安全实践 在Web应用中,会话(Session)是维持用户状态的核心机制—…

【橘子分布式】gRPC(编程篇-中)

一、简介 我们之前已经完成了对于api模块的开发,也就是已经生成了基础的类和对应的接口,现在我们需要完成的是client和server端的开发。其实如同thrift一样,现在要做的就是实现我们之前定义的service里面的hello方法,里面写我们的…

Spring Boot 项目中数据同步之binlog和MQ

在 Spring Boot 项目中,“监听 binlog” 和 “业务代码中集成 MQ” 是实现数据同步、事件驱动的两种主流方法。 简单来说,这个选择可以概括为: 监听 Binlog (如使用 Canal):像一个数据库的贴身秘书,它忠实地记录数据库…

MySQL 写入性能优化全攻略(附 GitHub 面试题项目链接)

面试中你可能会遇到这样的问题: 💬 “假设你的接口一天收到百万级请求,MySQL 撑得住吗?你会怎么优化写入性能?” 刚开始我也懵过,后来不断复盘与总结,现在我可以用结构化方式给出一个相对完整的…

用Dynamic chunk去干掉tokenizer?

一般你们下AR模型的时候,都有这个,也就是tokenzier,tokenizer是干啥的,其实就是你的分词字典不光有specal的token对应的还有实际的对应的分词对应的代码,比如:也有tokenzier没显示的,比如&#…

Linux系统日志管理入门:journalctl命令完全指南

Linux系统日志管理入门:journalctl命令完全指南前言一、journalctl介绍二、基础使用:快速上手1. 查看全部日志2. 查看本次启动的日志3. 按时间筛选日志4. 按服务(单元)过滤日志三、常用参数与场景四、实战案例:解决实际…

神经网络的基本骨架——nn.Module的使用(torch.nn库)

在 PyTorch 中,nn.Module 是所有神经网络模块的基类,用于构建和组织深度学习模型。它提供了一系列工具和功能,使模型的定义、训练和部署更加高效和灵活。nn Neural Network(神经网络)核心作用:模块化设计&…

静态住宅IP和节点有什么区别?哪种更适合你的需求?

在跨境电商、社媒运营等业务中,“静态住宅IP”和“节点”常被混淆使用,但两者代表网络架构中不同层级的资源。选错可能导致账号风控、业务效率低下。IPdodo将在本篇文章中,从本质、业务场景到选择策略,为您一文道清两者之间的区别…

AI编程工具对比:Cursor、GitHub Copilot与Claude Code

文章目录AI编程工具对比:Cursor、GitHub Copilot与Claude Code一、产品定位与核心架构1.1 Cursor:AI原生IDE的代表1.2 GitHub Copilot:代码补全的行业标杆1.3 Claude Code:终端Agent的革新者二、核心功能深度对比2.1 代码生成与理…

车载传统ECU---MCU软件架构设计指南

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

SCSAI工业智能体的核心特征

一个覆盖工业全场景、由多个垂直领域智能体构成的开放生态平台。每个智能体都是具备独立能力的 “数字单元”,同时又能通过平台实现互联、协作与进化。一、工业智能体平台的核心定位本质:工业领域的 “智能体操作系统 应用市场”,为各类工业…

Java大视界:Java大数据在智能医疗电子健康档案数据挖掘与健康服务创新>

> 本文通过完整代码示例,揭秘如何用Java大数据技术挖掘电子健康档案价值,实现疾病预测、个性化健康管理等创新服务。 ### 一、智能医疗时代的数据金矿 电子健康档案(EHR)作为医疗数字化的核心载体,包含海量患者全生命周期健康数据。据统计,全球医疗数据量正以每年…

家庭KTV v1.1.9 | 曲库丰富,无限制免费K歌

家庭KTV是一款专门为家庭娱乐设计的K歌软件,旨在让用户在家中也能享受到与KTV相同的高质量K歌体验。该应用拥有丰富的歌曲库,包括经典老歌和当下流行热曲等多种类型,满足不同年龄段用户的需求。家庭KTV支持多种点歌方式,如按照歌手…

vscode 一直连不上远程,网络是通的,ssh 也能直接登录远程

vscode 一直连不上远程,网络是通的,ssh 也能直接登录远程,但vscode 死活连不上 解决办法: 取消勾选remote.SSH.useExecServer 打开 VS Code 设置(Ctrl, → 搜索 useExecServer) 取消对应的勾选即可

前端面试专栏-工程化:28.团队协作与版本控制(Git)

🔥 欢迎来到前端面试通关指南专栏!从js精讲到框架到实战,渐进系统化学习,坚持解锁新技能,祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 项目实战与工程化模块-团队协作与版本控制&#xff…

无标记点动捕:如何突破传统娱乐边界,打造沉浸式交互体验

你能想象在游戏交互中,你的动作和表情可以不用佩戴任何设备就实时映射在虚拟角色上吗?在传统娱乐中,用户体验常被设备束缚——手柄、传感器、标记点让用户无法彻底投入。而无标记点动捕技术作为一种将用户肢体转化为虚拟世界的“自然控制器”…

C#监听txt文档获取新数据

目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl C中断4. 防止程序退出(无限循环)总结前言 之前有个需求就是监听文件夹中最新的txt文档获取最新数据,还有其他功能,比如&am…

程序员管理与AIStarter开发:如何避免需求Bug,提升项目效率

大家好,我是熊哥!今天聊聊程序员管理和AIStarter开发中的经验教训。创业公司项目常因需求不清出Bug,比如“管理员删管理员”这种低级错误,引发用户不满。熊哥亲测:程序员管理关键在于明确需求!通过整理需求…