当前位置: 首页 > news >正文

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.lryc.cn/news/593269.html

相关文章:

  • kubeadm方式部署Kubernetes v1.22.2集群
  • 农经权二轮延包—批量出图片
  • 2025最新版 Go语言Goland 专业安装及配置(超详细)
  • QCC系列显示交互层的自研技术突破与实践
  • Java行为型模式---状态模式
  • 面试高频题 力扣 130. 被围绕的区域 洪水灌溉(FloodFill) 深度优先遍历(dfs) 暴力搜索 C++解题思路 每日一题
  • 如何在HTML5页面中嵌入视频
  • 【vue-5】Vue 3 中的 v-model:双向数据绑定的全面指南
  • 基于深度学习的推荐系统:从协同过滤到神经网络
  • Django母婴商城项目实践(十一)- 用户信息模块之用户登录注册
  • QT动态加载动态库 QLibrary
  • QT窗口(7)-QColorDiag
  • JUC并发包CountDownLatch减法计数器的使用实例(多线程)
  • mac 配置svn
  • XSS原型与原型链
  • Netty集群方案详解与实战(Zookeeper + Redis + RabbitMQ)
  • LangGraph教程9:LangGraph检查点和Send机制
  • 微信小程序171~180
  • 微信小程序入门实例_____从零开始 开发一个“旅行清单 ”微信小程序
  • 微信小程序——世界天气小助手
  • YOLOv11改进 | RFAConv重塑空间注意力助力性能提升
  • 针对大规模语言模型的上下文工程技术调研与总结(翻译并摘要)
  • The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(三)
  • 华为仓颉编程语言语法简介与示例
  • OpenCV 官翻8 - 其他算法
  • 从 Server.xml 到字节码:Tomcat 内核全景与请求旅程 10 000 字深剖
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘sqlalchemy’问题
  • Jenkins自动化部署.NET应用实战:Docker+私有仓库+SSH远程发布
  • Entity Component System架构
  • 【计算机网络架构】树型架构简介