jenkins + gitlab 自动化构建全流程记录。
文章目录
- 1.jenkins (windows 版本 Jenkins 2.346.3)
- 2.gitLab (linux 版本:GitLab Community Edition 15.3.5
- 3.可能出现的错
- 4.更多添加jenkins凭据的方式
前言: 因为历史原因,公司的jenkins版本只能使用windows,而gitLab则是linux版本,简单的安装问题在本篇不做多介绍;
jenkins安装: https://blog.csdn.net/evelynnJava/article/details/126522842
gitLab安装: https://blog.csdn.net/evelynnJava/article/details/126490457
手动jenkins插件地址下载: 有时候想要低版本的插件,可以从这里下手动导入()
http://updates.jenkins-ci.org/download/plugins/ 或 https://plugins.jenkins.io/caffeine-api/#releases
1.jenkins (windows 版本 Jenkins 2.346.3)
本版应该是能兼容JDK8最后一个版本了,再往上只能是JDK11+
下载war包:https://get.jenkins.io/war-stable/2.346.3/
新建简单的启动脚本 start.bat
:
Title 'jenkins 9999'
java -jar jenkins.war --httpPort=9999
运行.bat文件启动,默认生成核心目录至 C:\Users\Administrator\.jenkins
如果遇到了无法下载插件的情况,和我一样处理即可。
1.点击Manage jenkins
-Manage plugin
-Advanced
; 拉到最后面 Update Site 的地址,https 改为 http;随后重启!!
2.离线下载插件skip-certificate-check
,手动上传;随后重启。此时就能愉快的下载插件了。
开始下最重要的几个插件(重启后生效):
如果用的也是gitLab就不需要Git和 Git Client了,装下面的其他插件即可
Credentials #签名证书管理插件
Gitlab #安装后从 GitLab 获取代码
Git和 Git Client #用于 Jenkins 在 GitLab 中拉取源码
GitLab Hook #GitLab 触发 Jenkins 构建项目
Gitlab Authentication # GitLab 和 Jenkins 认证插件
SSH Plugin #进程执行 Shell 脚本
Publish Over SSH #用于通过 SSH 部署应用
接下来开始配置
Mange Jenkins
-global Tool Configuration
如图配即可,下面的环境开发人员必有的。
2. Mange Jenkins
- Configure System
主要就是配置 SSH远程服务器
第一种方式- 密码
一般选择第二种方式- 密钥
进入到远程目录 /usr/local/services/ssh,在目录节点下执行如下命令,生成rsa密钥 (如果已存在会覆盖)
#生成rsa密钥,回车
ssh-keygen -t rsa
#此时目录 /root/.ssh 会生成 id_rsa:私钥 id_rsa.pub:公钥#把公钥内容追加到认证文件中
cd /usr/local/services/ssh
touch authorized_keys
cat /root/.ssh/id_rsa.pub >> authorized_keys#授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys
把 id_rsa 私钥内容添加到 Publish over SSH 的 key 中 (或放到 ssh server 的 key中也行)
注:这里的 RemoteDirectory是通用的服务器路径,实际一般是在【具体构建的任务】中去配置,一般此行放空即可。
接下来在jenkins新建一个项目
在项目构建配置中,增加配置
如果上面全局配置中配了
Remote directory
,此处可以置空。此时直接构建运行当前项目,就会将demo-0.0.1-SNAPSHOT.jar
移动至服务器wrx-192.168.41.128的 /usr/local/services/ssh目录下
接下来,配置jenkins设置GitLab的钩子
注:Allowed branches :
Allow all branches to trigger this job #允许所有分支触发此作业
Filter branches by name #按名称过滤分支
Include :dev #允许触发构建的分支,dev分支提交会自动构建
Exclude:master #排除触发构建的分支,此时master分支提交不会自动构建Filter branches by regex #通过正则表达式过滤分支
Source Branch Regex: #源分支正则表达式
Target Branch Regex:.*dev #目标分支正则表达式,允许触发构建的dev分支Filter merge request by label #按标签过滤合并请求
Include: #允许触发构建的标签
Exclude: #排除触发自动构建的标签
2.gitLab (linux 版本:GitLab Community Edition 15.3.5
)
在gitLab配置前面的 url和token (url注意改成准确的ip)
如果保存不了,可能是因为本地网络安全限制,如下图红框部分勾选配即可。
此时会发现jenkins那边正在执行构建,且包会放到ssh server配置的服务器目录。
3.可能出现的错
更多问题参考这位踩坑王的。。 https://www.zhihu.com/question/485285429
例如可能gitLab hook 响应200,但是jenkins没有反应,他在jenkins生成了api的token,然后路径改为 http://admin:1166f22d175c400d712fb7a219fadedd76@192.168.1.148:9999/job/2/build?delay=0sec
ssh连接测试报错:
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@73c5aba9]
报私钥无效,一般有两种原因:
(1):可能是你配置到jenkins里的私钥没有携带起止标志-----BEGIN RSA PRIVATE KEY-----或-----END RSA PRIVATE KEY-----,这两个是要带着的
(2):如果你是最新版本的docker镜像安装的jenkins容器,那么原因可能是容器内ssh版本太高,生成的私钥格式不被新版本ssh认可。解决方案是手动生成旧格式的秘钥
(3):生成旧的格式密钥,如下:
#生成rsa密钥,回车
ssh-keygen -m PEM -t rsa -b 2048
#把公钥内容追加到认证文件中
cat /root/.ssh/id_rsa.pub >> authorized_keys
#授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys
说明:
(1):.ssh文件夹、id_rsa、id_rsa.pub 权限为700。authorized_keys权限为600
(2):ssh-keygen -m PEM -t rsa -b 2048:
-m 参数指定密钥的格式,PEM是rsa之前使用的旧格式
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位
4.更多添加jenkins凭据的方式
1.jenkins凭证配置gitLab token的方式
2. gitLab配置jenkins服务器上的公钥
在windows上输入如下命令,ssh-keygen -t rsa ,生成的目录:C:\Users\Administrator/.ssh/id_rsa
id_rsa:私钥
id_rsa.pub:公钥
jenkins + gitlab 自动化构建全流程记录。相关推荐
- unreal ue4 PixelStreaming 局域网及公有云部署全流程记录
PixelStreaming 局域网及公有云部署全流程记录 发表于 2020-04-10 | 更新于: 2020-04-20 | 分类于 Unreal Engine | 717 写在前面 本篇是 ...
- GitLab CI/CD 自动化部署全流程
CI/CD简介 CI/CD 是一种持续开发软件的方法,侧重于软件开发过程中的自动化,可以不断地进行构建.测试和部署代码.使用这种方法,从新代码开发到部署,可以减少人工干预甚至不用干预 CI(Conti ...
- 【DevOps】全流程记录:CentOS7安装Gitlab服务器
文章目录 1 缘起 2 服务器 3 安装前准备 3.1 更新操作系统 3.1.1 命令 3.1.2 执行过程 3.2 安装依赖组件 3.2.1 命令 3.2.2 执行过程 3.2.3 安装后设定自动启 ...
- 基于Jenkins的开发测试全流程持续集成实践
今年上半年一直在公司实践CI,本文将上半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续下半年还会深入实践和引入Kuberne ...
- 基于Jenkins的持续交付全流程设计与实践
1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...
- 使用Jenkins配置自动化构建
http://blog.csdn.net/littlechang/article/details/8642149 持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了. 为 ...
- Docker安装Jenkins实现自动化构建部署到Tomcat
安装Docker 直接装一个docker-toolbox就好了,下载最下面的最新版 http://mirrors.aliyun.com/docker-toolbox/windows/docker-to ...
- 噬菌体展示文库构建全流程
1.什么是噬菌体展示 噬菌体文库是用于基因克隆的噬菌体载体,噬菌体展示文库是将外源蛋白或多肽与噬菌体外壳蛋白融合,展示在噬菌体表面并保持特定的空间构象,利用特异性亲和作用以筛选特异性蛋白或多肽的一 ...
- 从零开始自制实现正则引擎 全流程记录
文章目录 前引 Regex_Engine 1.0 1.全流程实现博客链接 2.源码仓库链接 前引 笔者在完成 正则引擎初版 如果算上有效时间的话 大概是花了一周的时间就完成 只包括了 最基础的正则引擎 ...
最新文章
- 【Python】有道翻译的爬虫实现(前篇)
- b+树时间复杂度_深入理解数据库系统之存储存引擎(二叉搜索树)
- 怎样用hibernate验证登陆界面的用户名和密码
- 新一代神器STM32CubeMonitor介绍、下载、安装和使用教程
- python随机数种子通俗_在种子中生成随机数
- 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大
- oracle中的视图详解
- StructureMap极速上手指南(翻译)
- How to make your 100k to 10k (5)
- hdu 1251 字典树的简单应用
- 定时任务中cron表达式详解
- Matlab调用Python函数,出现OSError: [WinError 126] 找不到指定的模块报错
- nodejs 定时任务
- iOS超级签名系统源码及分析
- miui资源全集K60 K50 k40 k30 K20 小米14 小米13 小米12 小米11-小米6
- Mongodb std::exception::what(): basic_filebuf::underflow error reading the file: iostream error
- pygame库-Surface类-blit方法的两个参数(source, dest)的含义
- 测试UDP端口的方法
- 经济危机下看SaaS厂商的突围策略
- 【工业大数据】工业大数据真正要做的是智能分析和智能决策
热门文章
- php正态分布,如何在PHP中生成累积正态分布
- python中__init__下划线怎么打出来___init__()-------“_”下划线开头的函数
- 题目0134-竖直四子棋
- XM7 FOR ANDROID,Android-UI组件(一):布局管理器
- 罗胖2021跨年演讲小结
- C语言for循环语句
- 智能视频监控的应用方向
- Java通过mail发送邮件
- cad2014一打开几秒钟后就卡住无响应了
- 【论文笔记】Enabling technologies and tools for digital twin