jenkins部署手册

文章目录

  • 一、环境配置
  • 二、jenkins软件部署
    • [2.1 下载软件包](#2.1 下载软件包)
    • [2.2 启动jenkins](#2.2 启动jenkins)
      • [2.2.1 准备jdk环境](#2.2.1 准备jdk环境)
      • [2.2.2 准备maven环境](#2.2.2 准备maven环境)
      • [2.2.3 编写jenkins.service](#2.2.3 编写jenkins.service)
    • [2.3 配置jenkins](#2.3 配置jenkins)
      • [2.3.1 修改插件源(非必要不修改)](#2.3.1 修改插件源(非必要不修改))
      • [2.3.2 配置环境变量](#2.3.2 配置环境变量)
      • [2.3.3 配置Publish over SSH](#2.3.3 配置Publish over SSH)
      • [2.3.4 配置邮箱](#2.3.4 配置邮箱)
    • [2.4 创建job](#2.4 创建job)
      • [2.4.1 新建job](#2.4.1 新建job)
      • [2.4.2 参数化构建](#2.4.2 参数化构建)
      • [2.4.3 源码管理](#2.4.3 源码管理)
      • [2.4.4 build steps](#2.4.4 build steps)
      • [2.4.5 构建后操作](#2.4.5 构建后操作)

一、环境配置

资源配置

操作系统

18.04.6 LTS (Bionic Beaver)

资源配置

服务器

CPU: 8核

内存: 16 GB

磁盘: 300 GB sda[系统盘] 100GB, 默认分区

sdc[数据盘] 200GB 挂载点 /data

备注:数据盘需支持扩展

备注:无。

二、jenkins软件部署

2.1 下载软件包

jenkins官网下载地址

https://get.jenkins.io/war-stable/2.426.2/jenkins.war

2.2 启动jenkins

2.2.1 准备jdk环境

详细安装可参考: 离线部署jdk8,jdk17, jdk21

由于最新的jenkins都是基于java17,而我们项目还是用的Java8进行编译,所以需要下载两个jdk。

下载地址:

https://adoptium.net/zh-CN/temurin/archive/?version=17

分别下载java17 和 java8 ,传入服务器

解压java17,java8

shell 复制代码
mkdir -p /software/java/jdk8 && mkdir -p /software/java/jdk17

tar -xvf OpenJDK8U-jdk_x64_linux_hotspot_8u392b08.tar.gz

tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz

mv jdk8u392-b08/\* /software/java/jdk8

mv jdk-17.0.9+9/\* /software/java/jdk17

2.2.2 准备maven环境

版本:maven-3.6.3

shell 复制代码
# 解压 
tar -xvf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 /software

# 配置环境变量

vim /etc/profile

export JAVA_HOME=/software/java/jdk8

export MAVEN_HOME=/software/apache-maven-3.6.3

export PATH=\$PATH:\$MAVEN_HOME/bin:\$JAVA_HOME/bin

source /etc/profile

备注: 最开始选用的是3.9.9最新版本,但由于项目在maven打包的时候报错,所以降版本选用了3.6.3

创建软连接

shell 复制代码
root@guoqing:\~\# ln -s /software/apache-maven-3.6.0/bin/mvn /usr/bin/mvn

root@guoqing:\~\# ln -s /software/apache-maven-3.6.0/bin/mvn /usr/local/bin/mvn

因为Jenkins 通过shell脚本调用 mvn 命令的时候,是从/usr/bin 文件夹中找命令的;所以要建立这样的软链接

2.2.3 编写jenkins.service

vim /etc/systemd/system/jenkins.service

shell 复制代码
[Unit]
Description=Jenkins
After=network.target

[Service]
ExecStart=/software/java/jdk17/bin/java -jar -DJENKINS_HOME=/data/jenkins -Xmx2g  /software/jenkins/jenkins.war -Djava.awt.headless=true --httpPort=80 
User=root
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=default.target

写入以上内容,保存

创建文件夹

mkdir -p /software/jenkins && mkdir -p /data/jenkins

对应的war包放入/software/jenkins文件夹中

systemctl daemon-reload

systemctl start jenkins

2.3 配置jenkins

由于使用root账号启动,所以可以用80端口,不需要nginx进行端口转发了。

访问 http://10.0.99.11 回车;会让你输入临时密码.

cat /data/jenkins/secrets/initialAdminPassword

安装必要插件

其中有两个插件需要额外的安装下

Git Parameter, Publish Over SSH

建议安装插件

Extended Choice Parameter Plugin(多选框)、Material Theme (好看的主题插件)

2.3.1 修改插件源(非必要不修改)

没有必要修改,如果你访问官网环境很差,可参考修改。

  1. 修改url为:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

  1. 修改default文件

把里面的连接修改下

shell 复制代码
sed -i 's/http:\/\/updates.jenkins.ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

重启jenkins使其生效

systemctl restart jenkins

2.3.2 配置环境变量

配置jdk

配置maven

注意修改maven的配置文件settings.xml。

配置使用私有nexus库;

需要先配置用户名密码

xml 复制代码
</servers>
   <server>
      <id>ccdc-dev</id>
      <username>dev-normal-01</username>
      <password>******</password>  
    </server>
  </servers>

再配置镜像源,注意id需要对应上

xml 复制代码
<mirrors>
	<mirror>
          <id>ccdc-dev</id>
          <mirrorOf>*</mirrorOf>
          <name>ccdc-私有镜像仓库</name>
          <url>http://10.0.99.187:1****/repository/maven-public/</url>
    </mirror>
 </mirrors>

上述的地址和密码均做了模糊处理,在配置时改为自己的;

2.3.3 配置Publish over SSH

将生成的公钥内容复制到对应服务器的/root/.ssh/authorized_keys文件中

即可连接上对应的服务器;ssh免密登录。

比如10.0.99.124上已经配置了公钥。

提示连接成功

2.3.4 配置邮箱

QQ邮箱授权码:smnhssleav****

jenkins邮件提醒

2.4 创建job

先看最终效果

可做到打包指定微服务,选择分支,发往哪台服务器中;做到更加灵活的配置。

2.4.1 新建job

坑:这里没有用构建一个maven项目。我没有安装maven的插件,因为此插件在近年发布的jenkins版本中已经不支持java8 了。至少需要java11的版本,而我们项目是基于java8的。会导致mvn打包的时候一直报错。

2.4.2 参数化构建

新建字符参数

service_name

新建字符参数

新建git参数

新建选项参数

这个选项参数可结合下方的Send files or execute commands over SSH

做到选择部署到哪台服务器。

2.4.3 源码管理

添加凭证即可,注意URL不能写错。

2.4.4 build steps

  1. 先创建shell脚本
shell 复制代码
#!/bin/bash
echo `pwd`
echo "${git_branch}当前的git分支"
if [ "$service_name" = "numen-gateway" ]; then
    /software/apache-maven-3.6.3/bin/mvn clean package -P ${mvn_profile} -pl ./numen-component/${service_name} -am -U -Dmaven.test.skip=true
else
    /software/apache-maven-3.6.3/bin/mvn clean package -P ${mvn_profile} -pl ./numen-modules/${service_name} -am -U -Dmaven.test.skip=true
fi

if (( $? ))
then
        echo "mvn package failed"
        exit 1
else
        echo "mvn package success"
        echo '$service_name build start...'
        local_path=`pwd`
        target_local="${local_path}/images/"
        mkdir -p $target_local
             
        echo 'build image start'
        _IID=$(docker images | grep "$service_name" | awk '{print $3}')
        if [ -n "$_IID" ]; then
            docker rmi "$_IID"
        fi
        if [ "$service_name" = "numen-gateway" ]; then
        	cd "${local_path}"/numen-component/"${service_name}" || exit
        else
        	cd "${local_path}"/numen-modules/"${service_name}" || exit
        fi
        docker build -t "$service_name" .
        echo "images目录为:${target_local}${service_name}.tar"
        docker save -o "${target_local}${service_name}".tar "$service_name":latest
        echo '部署完成'
        
fi

因为项目最终打包成docker镜像,所以服务器中也需要安装docker;

有关安装docker的教程可参考:

docker部署手册(离线)

  1. Send files or execute commands over
  1. 配置参数与上述的选项参数关联

注意:这个插件的参数Source files 是针对工作空间来说的,并不支持绝对路径

把选项中的四台服务器均配置上去。

2.4.5 构建后操作

完全是为了节省磁盘空间.

至此部署配置完成;

相关推荐
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382503 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇3 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7594 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣4 小时前
智能体选型实战指南
运维·人工智能
yy55274 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔7 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密7 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20157 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑