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

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.xdnf.cn/news/15747.html

相关文章:

  • 【数据结构】栈(stack)
  • Uniapp之自定义图片预览
  • Linux --进程信号
  • 初识C++——开启新旅途
  • 【51单片机学习】LED、独立按键
  • ENSP路由综合实验 + 思科(cisco)/华为(ensp)链路聚合实验
  • C++中的vector(2)
  • 基于Python的口腔正畸健康教育聊天机器人开发与评估研究
  • PyCharm + AI 辅助编程
  • 深度学习图像分类数据集—六十种植物病害分类
  • 基于单片机宠物喂食器/智能宠物窝/智能饲养
  • Typecho博客Ajax评论功能实现全攻略
  • 车载诊断架构 --- OEM对于DTC相关参数得定义
  • FastAPI遇上GraphQL:异步解析器如何让API性能飙升?
  • 【iOS】编译和链接、动静态库及dyld的简单学习
  • 5.组合模式
  • Node.js net.Socket.destroy()深入解析
  • 4.循环结构:让电脑做重复的事情
  • 探秘边缘安全架构设计要点解析
  • Redis 如何保证高并发与高可用
  • 【计算机网络架构】树型架构简介
  • 车载传统ECU---MCU软件架构设计指南
  • Netty网络聊天室及扩展序列化算法
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛(省赛)-RoboCom 世界机器人开发者大赛-本科组
  • FreeRTOS学习笔记之软件定时器
  • 【初识数据结构】CS61B中的基本图算法:DFS, BFS, Dijkstra, A* 算法及其来历用法
  • Java-77 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战
  • CS231n-2017 Lecture3线性分类器笔记
  • 时序数据库选型实战:Apache IoTDB技术深度解析
  • 用逻辑回归(Logistic Regression)处理鸢尾花(iris)数据集