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

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

相关推荐
只会copy的搬运工1 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
测试杂货铺3 小时前
如何用postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·测试工具·职场和发展·jenkins·压力测试·postman
科马5 小时前
【Jenkins】持久化
java·运维·jenkins
编程、小哥哥8 小时前
在 Docker 中部署 Jenkins,并完成项目的构建和发布
servlet·docker·jenkins
_oP_i13 小时前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
coder_pig1 天前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
运维&陈同学2 天前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
csdn_金手指2 天前
Jenkins持续交付web应用,通过docker制作相关的镜像进行发布部署
运维·jenkins
龙少95433 天前
【SpringBoot中怎么使用ElasticSearch】
spring boot·elasticsearch·jenkins
紫菜(Nori)3 天前
Jenkins 中 写 shell 命令执行失败,检测失败问题
jenkins