从 0 搭建公司Jenkins服务 Centos7

安装 (运维人员)

安装环境

配置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 jenkins
 
newgrp 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可以看到更直观的流水线。

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

相关推荐
遨游DATA3 分钟前
Jenkins 修改 config.xml 后页面仍是旧配置:让 live job 配置真正生效
ci/cd·jenkins·devops·故障排查·config.xml
Dobby_051 小时前
【CICD】Jenkins Pipeline 快速学习入门
运维·学习·jenkins
上海安当技术17 小时前
统一身份认证平台怎么落地?11 个异构业务系统接入 ASP 的完整实施路径
数据库·servlet·架构·kubernetes·jenkins
回眸不遇3 天前
类型的区别和应用场景 nested 每个对象独立存储为隐藏的子文档 适合存储数组 查询的时候有特定的语法 nested查询 且字段要 ...
运维·jenkins
X1A0RAN4 天前
容器化部署 Jenkins 教程
运维·docker·jenkins
BullSmall4 天前
jenkins 全局工具变更后,构建的任务为什么没有刷新过来
运维·jenkins
BullSmall4 天前
报错 libatomic.so.1: No such file or directory
jenkins
ji_shuke5 天前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
上海安当技术5 天前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
Mr. zhihao5 天前
Jenkins 从节点连不上主节点?一次网络排查全记录 + 机器间通信“拦截层“全景讲解
网络·servlet·jenkins