• jenkins + gitlab 自动化构建全流程记录。


    前言: 因为历史原因,公司的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
    
    • 1
    • 2

    运行.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 部署应用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    接下来开始配置

    1. 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    把 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: #排除触发自动构建的标签
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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:公钥
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    2. 循环单链表 + 循环双链表的定义和代码实现 + 静态链表(不重要)
    从应用访问Pod元数据-DownwardApi的应用
    clickhouse--join操作汇总【semi、anti、any、asof、global、colocate、cross】
    目标检测学习--yolov3
    炫酷的表白烟花 html+css+js实现的表白烟花特效(程序员专属情人节表白网站)
    【实用工具】frp实现内网穿透
    代码随想录--栈与队列-用队列实现栈
    Windchill 11文件夹选择组件使用记
    centos 7.7之后,无法远程ssh执行 java -jar 指令
    面向红队的自动化引擎工具
  • 原文地址:https://blog.csdn.net/evelynnJava/article/details/127987938