【jenkins1】gitlab与jenkins集成

2024-06-24 04:20
文章标签 jenkins1 gitlab jenkins 集成

本文主要是介绍【jenkins1】gitlab与jenkins集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.Jenkins-docker配置:运行在8080端口上,机器只要安装docker就能装载image并运行容器
  • 2.Jenkins与GitLab配置:docker ps查看正在运行,浏览器访问http://10....:8080/
    • 2.1 GitLab与Jenkins的Access Token配置:不涉及具体项目
    • 2.2 新建jenkins job和配置job:jenkins的Dashboard仪表盘界面点击New Item(要登陆),可新建job或者复制已有job,直接复制已有job,拷贝后的job不要运行build,避免回填错误数据到GitLab
    • 2.3 Jenkins pipeline script配置:groovy语言
    • 2.4 Jenkins&GitLab集成环境验证:GitLab推送修改至仓库新分支,验证push event可触发jenkins job,jenkins回填数据至GitLab


1.Jenkins-docker配置:运行在8080端口上,机器只要安装docker就能装载image并运行容器

Jenkins镜像和nginx一样,code push到git上,git通过hook触发构建/测试/部署就是CI(持续集成)CD(持续交付)工具即jenkins(需提供一台运行jenkins的机器)
官网https://www.jenkins.io/下载jenkins,可选择适合你自己系统的版本,也可选择不依赖于系统的docker(前提本机安装了docker)或war包(本机安装了java),如下开启服务端
在这里插入图片描述
执行如上命令出现密码,复制这串密码,浏览器打开http://localhost:8080(客户端),粘贴到管理员密码里。点击安装推荐插件,创建管理员用户y,密码123,到这里jenkins已经安装完成了(装在win上),主要用来配合git服务器。
在这里插入图片描述
在指定服务器上安装docker,使用docker命令进行下载jenkins-docker版本如下:

docker pull jenkins/jenkins:2.54  (docker images查看, 不指定版本就是最新的版本)

-name指定image名字。-p内部container和外部对应关系。-v外部地址和container内部地址对应关系,在container内部修改jenkins的话,外部也会更新。/etc/localtime时间同步。

docker run --privileged=true -d --name jenkins -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /home/yt/jenkins_home:/var/jenkins_home/ -v /etc/localtime:/etc/localtime jenkins/jenkins:2.54 (或v4)

在这里插入图片描述

docker exec -u 0 -it jenkins bash   # 进入docker container内部,需安装cppcheck等命令
docker save –o jenkins_v4.tar jenkins/jenkins:v4  # 保存docker images为tar包命令
docker load -input jenkins_v4.tar  # 加载tar包为docker images命令

2.Jenkins与GitLab配置:docker ps查看正在运行,浏览器访问http://10…:8080/

2.1 GitLab与Jenkins的Access Token配置:不涉及具体项目

GitLab配置Access Token,用于jenkins连接GitLab获取GitLab API接口:点击右上角用户头像Edit profile,再点击左侧Access Tokens ,命名为gitlab_jenkins,Select scopes全部勾选上,点击创建产生如下字符串。
在这里插入图片描述
如下Manage Jenkins需要admin admin用户。如下Add是一个按钮。
在这里插入图片描述

2.2 新建jenkins job和配置job:jenkins的Dashboard仪表盘界面点击New Item(要登陆),可新建job或者复制已有job,直接复制已有job,拷贝后的job不要运行build,避免回填错误数据到GitLab

在这里插入图片描述
http://10.75.135.34:8084/job/example/,点击Advanced。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下gitlab查看成员,只有Maintainer才有Settings。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 Jenkins pipeline script配置:groovy语言

// 环境模块导入, 清空工作空间
import hudson.*
node(""){stage("clear workspace"){cleanWs()}
}// 下载源码
node(""){stage("download code"){echo "download code"if (env.gitlabSourceBranch == null){   //当gitlab过来触发的job的话,环境变量上就会有gitlabSourceBranch字串git branch: "sw61", credentialsId: '18f53bc3-dc50-4178-acde-d628264ee453', url: 'https://gitlab-dbd...com/bsp_diag/prj_bsp.git'   // null说明不是gitlab触发}else{  //gitlab做了push或merge操作时触发,credentialsId就是Access Tokensgit branch: env.gitlabSourceBranch, credentialsId: '18f53bc3-dc50-4178-acde-d628264ee453', url: env.gitlabSourceRepoHttpUrl}}
}// 源码cppcheck扫描
try{node(""){stage("cppcheck"){echo "cppcheck starting"pwd()sh "/home/cppcheck-1.75/cppcheck 4 --enable=all --inconclusive  --xml --xml-version=2 "+env.WORKSPACE+" 2> cppcheck.xml"publishCppcheck ignoreBlankFiles: true, pattern: 'cppcheck.xml'def cppcheck_file_obj = new File(env.WORKSPACE+"/cppcheck.xml")if (cppcheck_file_obj.isFile()){echo "cppcheck.xml file exist"result = sh returnStdout: true ,script: "cat "+env.WORKSPACE+"/cppcheck.xml"if (result == ""){echo "analyse cppcheck.xml failure,cppcheck.xml is empty"currentBuild.result="FAILURE"}else{echo "analyse cppcheck.xml"cppcheck_result = sh returnStdout: true ,script: "cat "+env.WORKSPACE+"/cppcheck.xml | grep 'cppcheck version'"if(cppcheck_result == ""){echo "analyse cppcheck.xml failure,cppcheck.xml format error"currentBuild.result="FAILURE"}else{final_result = sh returnStdout: true ,script: '''cat '''+env.WORKSPACE+'''/cppcheck.xml | grep severity=\\"error\\"'''if(final_result == ""){echo "analyse cppcheck.xml pass"}else{echo "analyse cppcheck.xml failure,cppcheck.xml has error"currentBuild.result="FAILURE"}}}}else{echo "cppcheck.xml file not exist"currentBuild.result="FAILURE"}}}
}catch(e) {echo "cppcheck failure"currentBuild.result="FAILURE"
}// 源码编译
try{node(""){stage("compile code"){echo "compile code"sh "make"   //在docker里编译}}
}catch(e) {echo "compile code failure"currentBuild.result="FAILURE"
}// 验证扫描与编译结果,成功后归档相关文件
node(""){stage("archive"){echo "archive"if(currentBuild.result == 'FAILURE') {echo "Something unexpected happened. Please inspect Jenkins logs. Skip archive."}else{sh '''mkdir buildcp cppcheck.xml build/cp *.ko build/tar -zcf archive.tar.gz build/'''archiveArtifacts artifacts: '*.tar.gz', followSymlinks: false}}
}// 根据扫描和编译结果,回填数据到GitLab
stage("commit gitlab"){echo "commit gitlab"if(currentBuild.result == 'FAILURE') {updateGitlabCommitStatus(name: 'sw61_bsp_build', state: 'failed')}else{updateGitlabCommitStatus(name: 'sw61_bsp_build', state: 'success')}
}

2.4 Jenkins&GitLab集成环境验证:GitLab推送修改至仓库新分支,验证push event可触发jenkins job,jenkins回填数据至GitLab

在这里插入图片描述
gitlab触发docker_jekins(部署在34服务器上),34 ssh到33编译服务器进行编译回传img到34,34将img传到测试的机器上(测试机器上有测试用例代码文件),34拷完img后触发40测试平台服务器(40是大docker前后端,小docker测试环境 【 ssh/串口/PDU到测试机器上 ,python3 测试用例 】 ,34传来的是选择哪一个小docker ),40将执行pass显示结果传给34,34传给gitlab。
在这里插入图片描述
在这里插入图片描述

这篇关于【jenkins1】gitlab与jenkins集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089156

相关文章

SpringBoot集成Netty,Handler中@Autowired注解为空

最近建了个技术交流群,然后好多小伙伴都问关于Netty的问题,尤其今天的问题最特殊,功能大概是要在Netty接收消息时把数据写入数据库,那个小伙伴用的是 Spring Boot + MyBatis + Netty,所以就碰到了Handler中@Autowired注解为空的问题 参考了一些大神的博文,Spring Boot非controller使用@Autowired注解注入为null的问题,得到

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

BD错误集锦8——在集成Spring MVC + MyBtis编写mapper文件时需要注意格式 You have an error in your SQL syntax

报错的文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.yuan.dao.YuanUserDao"><!

BD错误集锦7——在集成Spring MVC + MyBtis时使用c3p0作为数据库时报错Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatem

异常信息如下: Type Exception ReportMessage Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstractDescr

陀螺仪LSM6DSV16X与AI集成(8)----MotionFX库解析空间坐标

陀螺仪LSM6DSV16X与AI集成.8--MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启CRC串口设置开启X-CUBE-MEMS1设置加速度和角速度量程速率选择设置FIFO速率设置FIFO时间戳批处理速率配置过滤链初始化定义MotionFX文件卡尔曼滤波算法主程序执行流程lsm6dsv16x_motion_fx_determin欧拉角简介演示 概述 本文将探讨

Spring 集成 RabbitMQ 与其概念,消息持久化,ACK机制

目录 RabbitMQ 概念exchange交换机机制 什么是交换机binding?Direct Exchange交换机Topic Exchange交换机Fanout Exchange交换机Header Exchange交换机RabbitMQ 的 Hello - Demo(springboot实现)RabbitMQ 的 Hello Demo(spring xml实现)RabbitMQ 在生产环境

springboot集成prometheus监控

1 Maven pom.xml引入依赖 <dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_spring_boot</artifactId></dependency> 2 启动类引入注解 import io.prometheus.client.spring.boot.EnablePrometheusEnd

在vue项目中集成cesium

首先创建一个新的vue项目 安装vite中cesium插件 https://github.com/nshen/vite-plugin-cesium 安装插件 npm i cesium vite-plugin-cesium vite -D 配置插件 注释原有样式 修改代码 效果

web前端不可错过的开发工具–Adobe Brackets(开源、简洁强大的HTML、CSS和JavaScript集成开发环境)

Adobe Brackets是一个开源的基于HTML/CSS/JavaScript开发,运行在native shell上的集成开发环境。该项目由Adobe创建和维护,根据MIT许可证发布。提供Windows和OS X平台支持。 Brackets的特点是简约、快捷,没有很多的视图或者面板,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等。

实际项目开发:Spring集成Redis,并实现短信登录功能

redis新手,学了几种基本数据类型,却不知道怎么使用? 总是一边学一边忘? 学会了Redis的大多数使用命令,却不知道如何在项目中使用? 本文将从实际出发,为大家解决这些问题。 我是蚊子码农,欢迎各位的点赞、关注和收藏,有了你们的激励,我会带来更好的作品。 一、环境准备 从环境出发。 第一,基础环境: JDK版本:JDK1.8。构建工具:Maven。开发工具:IDEA。基础依赖:Spri