Jenkins前置配置

简介: 本文介绍Jenkins与GitLab集成的完整配置流程:包括GitLab账号创建、SSH密钥配置、API Token生成,Jenkins中GitLab连接、凭据管理、全局Git信息设置,以及节点服务器环境搭建(JDK、Maven、Node、Docker等),并详细说明Jenkins节点通过SSH方式接入的步骤,实现自动化拉取代码、构建打包与持续集成。

Jenkins配置
系统的代码位于gitlab上,当Jenkins安装了gitlab插件、git插件之后可以很方便的连接上gitlab(在Jenkins部署文档中安装的插件已经包含了gitlab插件和git插件)。
gitlab创建账号
使用管理员登录gitlab,创建账号 jenkins,并赋予相应权限,用于在 Jenkins 中使用该账号拉取代码。
gitlab上配置SSH密钥
在docker服务器上进入Jenkins容器:
docker exec -it jenkins bash
进入容器后,生成公私密钥对:

执行下面的命令,然后一路回车即可

最后会在 /var/jenkins_home 目录中创建 .ssh 文件夹

.ssh 文件夹中的 id_rsa 文件内容为私钥字符串,id_rsa.pub文件内容为公钥字符串

ssh-keygen -t rsa

使用前面创建的jenkins账号登录gitlab,进入 用户设置 - SSH密钥 - 添加新密钥,将刚刚生成的.id_rsa.pub文件内容(公钥)粘贴进来,标题可以任意起,到期时间清空。

Jenkins上配置不验证gitlab的host key
首次连接时,Jenkins的know_hosts中没有gitlab地址,如果验证host key则可能会校验失败。
可以配置不验证host key:

  1. 使用admin登录Jenkins
  2. 进入 系统管理 - 全局安全配置
  3. 找到Git Host Key Verification Configuration,将Host key验证策略改为No verification不验证

Jenkins上配置gitlab api token
使用jenkins账号登录 gitlab,进入 用户管理 - 访问令牌 - 添加新令牌:

  1. 令牌名称可以任意起
  2. 到期时间清空
  3. 选择为token授权范围,如果不清楚直接都勾上即可。
  4. 点击创建个人访问令牌
    页面会显示创建出来的token字符串,将该token复制出来等会用。

使用admin登录 Jenkins ,进入 系统管理 - 凭据管理 - System - 全局凭据 - add Credentials新建一个凭据:
● 类型:Gitlab API Token
● 范围:全局
● API Token:前面复制的token字符串
● ID:任意起,例如叫做gitlab-jenkins

进入 系统管理-系统配置,找到GitLab项,配置Gitlab连接:
● Connection name:任意起,例如docker-gitlab
● Gitlab host URL:填写GitLab的URL(http://192.168.xxx.xxx:8090/)
● Credentials:选择刚刚创建的GitLab API Token
点击Test Connection验证是否连通。

jenkins配置git用户名和邮箱
使用admin登录 Jenkins ,进入 系统管理-系统配置,找到Git plugin项,配置git用户名和邮箱:
● Global Config user.name Value:配置git的user.name,配置为jenkins
● Global Config user.email Value:配置git的user.email,配置为jenkins@amarsoft.com

Jenkins上配置jenkins服务器的私钥
Jenkins上创建自己的私钥凭据,用于jenkins任务从gitlab上拉取代码。

使用admin登录 Jenkins ,进入 系统管理 - 凭据管理 - System - 全局凭据 - add Credentials新建一个凭据:
● 类型:SSH Username with private key
● 范围:全局
● API Token:前面复制的token字符串
● ID:任意起,例如叫做gitlab-jenkins-private
● Username:jenkins(jenkins容器中的服务器用户名)
● Private Key:
○ 勾选Enter directly
○ 添加key
○ 将Jenkins容器中之前创建的公私钥对的私钥粘贴进来(即id_rsa文件内容)

节点服务器配置
节点服务器环境准备
在节点服务器上创建/root/.jenkins文件夹,作为Jenkins的远程工作目录。Jenkins服务器会给该文件夹发送两个jar包用于远程连接。

在节点服务器上创建build文件夹,用于存放打包编译等所需的环境。
build文件夹内需要有:
● JDK 17 解压版安装包:用于连接上Jenkins服务器
● JDK 8 解压版安装包:用于编译程序项目
● Node-v12 解压版安装包:用于编译前端VUE项目
● maven-3.6.3 解压版安装包:用于编译程序项目。(maven需要在settings.xml中配置好内网的nexus私仓路径、本地仓库路径)
● mvn-repo文件夹:作为maven的本地仓库路径,存放maven下载的jar包
● source文件夹:用于存放从gitlab上拉取的代码

配置Maven环境变量:
新建文件/etc/profile.d/maven.sh,写入Maven环境变量:
export MAVEN_HOME=/root/build/apache-maven-3.6.3
export M2_HOME=/root/build/apache-maven-3.6.3

export PATH=$M2_HOME/bin:$PATH

另外,项目使用Jenkins打包编译之后会制作Docker镜像,所以项目的节点服务器需要安装配置好docker环境。

Jenkins配置节点服务器
正常的创建节点服务器。
使用admin登录Jenkins,进入系统管理-节点和云管理-New Node,创建一个节点:

  1. 节点名称:可以任意起,最好起一个方便识别服务器IP的,例如直接用服务器IP:192-168
  2. 选择固定节点
  3. Number of executors配置为1,防止一台服务器并发执行多个任务时出现冲突
  4. 远程工作目录/root/.jenkins
  5. 标签:配置为方便识别的标签,后面配置项目时可以根据服务器标签选择在哪个服务器上执行。myproject_dev
  6. 用法:只允许运行绑定到这台服务器上的JOB
  7. 启动方式:Lauch agents via SSH(需要安装了SSH对应插件才有该选项,前面安装的插件包中已经包含了该插件)
    主机:服务器IP
    Credentials:登录的凭据,如果已经创建过则直接选,没有创建过则新建。可以选择新建一个Username with Password的,直接配置服务器用户名密码即可。Host Key Verification Strategy:配置为不验证Host
    点开高级,在Java路径上配置上节点服务器的JDK 17路径 /root/build/jenkins/jdk-17.0.12/bin/java
  8. 可用性:尽量保持代理在线(默认)

创建之后,点击查看日志,看是否连接成功。

相关文章
|
JavaScript Linux 内存技术
centos 安装nvm
centos 安装nvm
1868 0
|
3月前
|
Kubernetes 应用服务中间件 API
Nginx Ingress 退役,详细版迁移指引来啦
Ingress NGINX 退役引发开发者们的强烈关注,官方已经提供了完备的应对措施,迁移到 Gateway API,以及20+ Ingress 控制器。但实施迁移的时候,企业还会希望了解新的 Ingress 控制器是否兼容 Ingress NGINX 的注解,迁移过程中如何进行灰度切流,遇到流量损失如何快速回滚等,以保障迁移过程平滑,不影响线上业务。因此,本文将提供基于实操的应对方案,以阿里云云原生 API 网关(Higress 企业版)为例,按步骤详细阐述迁移的操作过程。
661 42
|
3月前
|
人工智能 运维 安全
技术深析快手直播安全事件:为什么大量违规直播“关不掉”?
快手直播安全事件暴露了高并发下账号权限、风控与审核系统的系统性失效。对测试开发而言,需从功能验证转向系统性防控,强化极端场景测试、高负载审核链路验证及熔断机制演练,提升对复杂风险的预判与拦截能力。
|
3月前
|
Java 开发工具 Maven
服务端(DevBox)-项目创建
使用Sealos在DevBox中创建SpringBoot项目zxyf-management,配置Java环境与Docker容器,通过Cursor智能开发工具一键启动云端应用。无需手动输入命令,自动下载依赖并部署,结合云端域名快速访问服务,实现高效开发与运行。
|
3月前
|
数据安全/隐私保护
服务端(Cursor)-接口开发(登录认证)
根据接口文档,完成员工登录功能开发,实现POST /login接口。员工通过用户名密码登录,验证成功后返回包含JWT令牌的响应,后续请求需在header中携带token,否则返回401。已完成接口测试与权限校验集成。
|
3月前
|
Java 关系型数据库 MySQL
基于springboot的健身房预约与学习管理系统
本系统基于Java与Spring Boot框架,结合MySQL数据库与B/S架构,构建高效、智能的健身房管理平台。实现会员管理、课程预约、财务统计等功能,提升运营效率与用户体验,推动健身行业信息化升级。
|
jenkins 持续交付 网络安全
Jenkins——使用Docker部署Jenkins详解
Jenkins——使用Docker部署Jenkins详解
1514 0
|
10月前
|
机器学习/深度学习 人工智能 算法
人工智能技能:未来职场竞争力的核心密码
当机器能理解语言并生成内容,人工智能技能已成为职场必备“新基础能力”。它从技术硬实力扩展为包含技术理解力、人机协作力与伦理判断力的复合能力。未来职场竞争力将取决于人与AI协同创新的深度。通过模块化学习和场景化实践获取这些技能,不同职业阶段需聚焦相应能力发展。掌握AI技能不仅是适应变革,更是拓展职业生命的宽度与深度,开启创造与创新的新篇章。
|
安全 Linux 算法框架/工具
open Euler安全加固
open Euler安全加固
1518 11
|
算法 数据可视化 机器人
Nvidia Isaac Sim搭建仿真环境 入门教程 2024(4)
本文是Nvidia Isaac Sim搭建仿真环境的入门教程,详细讲解了如何在Isaac Sim中创建物理场景、添加地面和光照、创建和配置仿真对象的物理属性、使用USD文件进行仿真场景的保存和引用,以及个人练习和相关物理概念的介绍。
4576 0