从 0 搭建公司Jenkins服务 Centos7

  • 从 0 搭建公司Jenkins服务 Centos7
    • 安装 (运维人员)
      • 安装环境
        • 配置DNS
        • 安装JDK17
        • 安装Jenkins
        • 安装Docker
        • 安装GIT
        • 安装Ansible
        • 启动Jenkins
        • 安装插件
      • 配置凭据
      • 配置共享库
    • 配置 (开发经理)
    • 使用 (开发、测试人员)

安装 (运维人员)

安装环境

配置DNS

新安装系统的服务器无法解析域名,配置DNS /etc/resolv.conf

nameserver 8.8.8.8
nameserver 114.114.114.114
安装JDK17

到Oracle官网找到JDK17

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
yum install -y jdk-17_linux-x64_bin.rpm
安装Jenkins

官方文档

sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install fontconfig  
sudo yum install jenkins
安装Docker

官方文档

# Remote
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# Config               
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# Install
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# Start
sudo systemctl start docker# Verify
sudo docker run hello-world

增加权限

sudo usermod -aG docker jenkinsnewgrp docker
安装GIT
yum install -y git
安装Ansible
sudo yum install -y epel-release
sudo yum install -y ansible

Using Ansible playbooks — Ansible Community Documentation

启动Jenkins
sudo systemctl start jenkins
sudo systemctl restart jenkins
sudo systemctl status jenkins

查看日志使用

journalctl -u jenkins.service
安装插件

配置用户信息略过。登录之后要安装插件。Jenkins Plugins插件

配置凭据

登录服务器,链接GIT仓库下载代码,都需要账户密码并且拥有权限,为了不泄露这些信息,可以到 系统管理 -> 凭据 中创建凭据,供后续连接时使用


有以下几种类型可选。

ssh使用的公钥,需要配置到目标机器~/.ssh/authorized_keys中,免密远程使用

配置共享库

为了使构建流程可以统一维护,这里创建一个仓库用于维护公共部署流程。

之后到系统管理中维护一下共享库的位置。

配置 (开发经理)

首先要先创建针对某项目的配置仓库。例如缉查布控项目EHL-DAP,这里创建其配置仓库EHL-DAP-CONFIG。

然后要按照项目各现场分类。例如缉查布控项目分为烟台、喀什两个现场。这里首层有两个现场的文件夹。 EHL-DAP-CONFIG/yantai/ 与 EHL-DAP-CONFIG/kashi/

因为每个项目中可能有许多子模块,需要单独部署启动。例如这里的定时任务模块schedule,我们创建单独的文件夹来管理。EHL-DAP-CONFIG/yantai/schedule/。

之后因为每个项目又会部署到不同的环境,这里列举三个环境dev/test/prod。所以又分为三个子目录。
EHL-DAP-CONFIG/yantai/schedule/dev/。

最后在环境目录下可以维护配置,并创建Jenkinsfile文件编写流水线。EHL-DAP-CONFIG/yantai/schedule/dev/Jenkinsfile

下面是PrivateKey-201对应的公钥,如果目标机是新服务器,需要到/root/.ssh/authorized_keys文件中,将公钥添加进去。注意authorized_keys文件权限必须是600。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3J6+vOKJbSYSqPl8If6vPISpaox4s7get0rijzm+QKocqdncxZFrULc2Qlfmt4PEMs8jPsq9KACwjWYisYYJWpLK/UdXO+Vs24gwMqhly5Lu5yfh9kMIjN8yF5Muh26vF5YiBLBnt0siDkZBSVDdPAFZJMJdXJj8N9i19DLj8rctK5Ot4NJTYPRbuXEIuLn9+1sVVPAZm1TAXieZ4PQhi9Ca73V3vJ70RKSKXgFeXcWTZyo/V5ADJiq21Ac8vMPy5YocsKpIcf62bdh3eO+jGyAW4rpIxZvg1iV5/pTk6yNVN/wfP3yfipDz8+0Kii+irwyGAhDZZ6Sf1htaGIufD root@localhost.localdomain

最后一行的流水线调用有许多不同的方法支持。目前有以下这些,后续会陆续支持

方法功能
deploy_back部署后端Java服务,使用bin/start.sh启动项目
deploy_back_by_docker通过Docker部署后端项目
deploy_front部署前端项目
deploy_front_by_docker通过Docker部署前端项目

维护好Jenkinsfile并提交项目之后,我们可以转战jenkins页面,可视化的创建项目。

创建不同现场的文件夹

名称可以填写汉字

在现场文件夹中再创建项目文件夹,例如:缉查布控项目。

点击左侧新建项目

之后创建流水线项目,命名方式要按照标准。环境-项目名

环境标准
开发dev
测试test
预发pre
生产prod

例如:dev-dispatch-analysis、test-dispatch-system

拉到底部,流水线选择 Pipeline script from SCM 直接填写流水线配置。填完点击保存

第一次保存后项目是空的,需要点击立即构建。第一次会显示失败,因为第一次是配置落位的过程。

点击一次之后就可以正常使用了。

使用 (开发、测试人员)

首先点击 通过参数构建

部署

输入要构建的分支,选择构建机器,MODE选择DEPLOY,然后点击构建即可触发部署流程。

每次构建都会生成一个版本号。规则是:日期(年月日时分秒)_GIT提交版本_构建版本

注意:因为第一次启动项目,项目编译需要下载许多依赖包,有可能十分钟无法完成,项目会自动停止,需要再次点击构建,继续下载首次未下载好的依赖,全部下载到本地之后才能构建成功。(一次下不完可以多点几次)

回滚

选择要部署的机器,然后MODE选择ROLLBACK,版本中选择历史构建过的版本号,点击构建,即可触发回滚流程。

左侧构建历史可以看到每一次的记录。

左侧打开BlueOcean可以看到更直观的流水线。

选择某一次的流水线,可以看到节点的执行情况,点击具体某个节点可以看到执行的命令日志。更方便我们分析问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题:C语言经典例题之数字字符加倍

题目描述 输入一个以回车结束的字符串,该字符串由数字和字母组成。请过滤掉所有非数字字符,然后将数字字符串转换成十进制整数后乘以2输出。 输入 输入一个以回车符结束的字符串,长度不超过100,由数字和字母组成。 输出 将转换后的…

掌握ChatGPT:写作论文不再是难题

ChatGPT无限次数:点击直达 html 掌握ChatGPT:写作论文不再是难题 引言 在如今信息爆炸的时代,写作一直是许多人头疼的问题,尤其是对于需要频繁撰写论文的学生和研究者。然而,随着人工智能技术的发展,ChatGPT的出现…

hal库实现串口通信——阻塞式 API

1STM32CobeMX设置 设置时钟源 rcc设置为外部时钟High Speed Clock (HSE)//设置为如图 再将其设置为72MHz 设置串口引脚为异步通信 设置波特率等 设置波特率范围提示点击波特率再点击图中的 我的设置 再打开中断 即可生成代码//省略项目设置 2代码设置 函数 HAL_UART_Trans…

React state用法 异步总结

setState用法 基本使用 this.setState({message:message})函数式使用 this.setState((state,props)>{//可加入修改数据之前的一些数据处理逻辑return{message:"message"} })可加入修改数据之前的一些数据处理逻辑React会自动把state,props作为参数传递进来 异…

docker使用canal

1. 准备MySql主库 1.1.在服务器新建文件夹 mysql/data,新建文件 mysql/conf.d/my.cnf 其中my.cnf 内容如下 [mysqld] log_timestampsSYSTEM default-time-zone8:00 server-id1 log-binmysql-bin binlog-do-db mall # 要监听的库 binlog_formatROW配置解读&#…

微服务-6 Gateway网关

一、网关搭建 此时浏览器访问 localhost:10010/user/list 后正常返回数据,说明网关已生效,其原理流程图如下: 二、网关过滤器 作用:处理一切进入网关的请求和微服务响应。 1. 网关过滤器的分类: a. 某个路由的过滤器 …

CSS实现三栏自适应布局(两边固定,中间自适应)

绝对定位的元素会脱离文档流,它们是相对于包含块(通常是最近的具有相对定位、绝对定位或固定定位属性的父元素)进行定位的。当你把一个绝对定位的元素的高度设置为100%时,它会相对于其包含块的高度来确定自己的高度。如果包含块是…

Flutter 中 AutomaticKeepAliveClientMixin 的介绍及使用

在 Flutter 中,当你在一个页面中滑动列表或者进行其他一些操作时,如果你返回到该页面,可能会发现之前的状态已经丢失了。这在某些情况下可能是不可取的,特别是当你想要保留之前的状态,而不是每次都重新加载页面时。 为…

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(一)(含2022年和2023年)

文章目录 前言1、已知a = 1b1;b = 3b001,那么{a,{2{b}}} = ( )2、在一个SOC中数据通路中,Master到Slaver 的单命令完成Latency是100Cycle,能支持的最大命令Outstanding是10,则完成10个命令访问的最小平均Latency大约是( )3、generate语句中的循环控制变量应该定义为( )类…

C#WPS导出EXCEL

1、首先安装金山WPS ,然后在安装包中找到 etapi.dll 这个文件,导入到项目中,然后添加引用 在引用中出现EXCEL 就是已经将API导入到了程序中, 2、在命名空间中引用 using Excel; 3、开始编写导出程序,本例以datagridvi…

微信小程序压缩图片到200kb,递归设置压缩质量

一、背景 我们有个人脸识别门闸的功能,小程序上上传人脸照片,然后门闸识别人脸开门。图片大小要在在200kb,但是也不能压缩的太小,因为大小有可能识别不到或者要走很近才能识别。所以选择递归的方式实现图片的压缩。 二、代码实现…

技术解析:应对国内大流量攻击的新挑战与分布式清洗防御策略

近日,国内网络环境中出现的大流量攻击事件频发,且攻击规模呈指数级增长,部分攻击流量甚至超过了1.5Tbps。 这背后的主要原因是攻击者利用海外流量资源,通过复杂的网络技术和协议转换,将国际IPv4/IPv6流量巧妙伪装并转…

实战自动化创建用户,并设置密码

一、主程序 #!/bin/bash# 创建用户并设置密码的函数 create_user() {local username$1local password$2if id "$username" &>/dev/null; thenecho "用户 $username 已经存在。"elseecho "正在创建用户 $username ..."useradd $usernamee…

【PostgreSQL内核学习(二十九)—— 执行器(ExecCreateTableAs)】

执行器(ExecCreateTableAs) ExecCreateTableAs 函数RangeVarGetCreationNamespace 函数RangeVar 结构体IntoClause 结构体 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求…

python篇---图片转成视频

python篇—图片转成视频 import cv2 import os# 设置图片文件夹路径和视频输出路径 image_folder /workspace/11 video_name output_video.mp4# 获取图片文件夹中的所有图片文件名,并按顺序排序 images [img for img in os.listdir(image_folder) if img.endswi…

C++的引用和内联函数,auto

什么是引用 引用就是取别名 可以给一个变量取多个别名,也可以给别名取别名 别名与本名拥有同一地址,对任意别名修改,也会同时修改其他别名和本名 引用的作用 引用的作用与指针重叠度很高 图中函数的参数int& a,int& b,a是x的别名,b是y的别名 则ab的交换就是xy的交…

ActiveMQ消息中间件面试专题

1.什么是 ActiveMQ? activeMQ 是一种开源的,实现了 JMS1.1 规范的,面向消息(MOM)的中间件,为应用程序提供高效的、 可扩展的、稳定的和安全的企业级消息通信 2. ActiveMQ 服务器宕机怎么办? 这得从 ActiveMQ 的储存机制说起。…

怎么快速围绕“人、货、场”做零售数据分析?

做零售数据分析多了,不难发现零售数据分析的关键就是“人、货、场”,那么怎么又快又灵活地分析这三个关键点?不妨参考下奥威BI零售数据分析方案。 奥威BI零售数据分析方案是一套吸取大量项目经验,结合零售企业数据分析共性需求打…

【Java8新特性】四、强大的Stream api

​ 这里写自定义目录标题 一、了解Stream二、流(stream)到底是什么?三、Stream操作的三个步骤四、创建Stream的四种方式五、Stream 的中间操作1、筛选和切片2、map 映射3、排序 六、Stream 的终止操作1、查找和匹配2、归约3、收集 一、了解Stream Stream是Java8中…

同旺科技 USB TO SPI / I2C 专业版 极限测试 ---- 读取数据

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 备注:带EXCEL调试的只适用于专业版; 软件配置: 设置如下,读取65500个字节,单条指令,速率20Mhz; 数据: 时钟信号&#…