linux运维知识体系

DevOps落地-jenkins代码发布全流程

2025/08/10
143
0

🌟jenkins

💡什么是jenkins

  • Jenkins是一个开源持续集成的工具,是由JAVA开发而成
  • Jenkins是一个调度平台,本身不处理任何事情,调用插件来完成所有的工作
  • 通过Jenkins完成 CI/CD......

☀️jenkins能做什么

  • jenkins能将各种开源的软件集成为一体,从而实现不同功能的调度工作

🌟jenkins快速上手指南

📝环境准备

系统要求/软件要求
系统 2c4g 10.0.0.72/172.16.1.72
软件 jdk 11版

🧩安装方式

1.rpm包/yum  yum安装jenkins
2.war包      tomcat --> war
3.jar包      java -jat xx.jar -参数

🖥️直接宿主机安装

rpm安装jenkins

1.安装jdk
yum install -y java-11
2.安装jenkins
rpm -ivh jenkins-2.387.1-1.1.noarch.rpm

启动jenkins

1.设置下次开机自启动
systemctl enable  jenkins
2.启动jenkins
systemctl start jenkins

安装插件

1.将插件压缩包解压到/var/lib/jenkins/plugins/
tar xf  jenkens-2.387.1-lts-plugins.tar.gz  -C /var/lib/jenkins/plugins/

2.修改插件目录拥有者
chown  -R jenkins.jenkins /var/lib/jenkins/plugins/

3.重启jenkins服务
systemctl restart jenkins

浏览器登录

到服务器上查看密码

cat /var/lib/jenkins/secrets/initialAdminPassword

修改jenkins密码

使用新密码登录

修改jenkins配置

  • 配置命令解释器

  • 配置不验证指纹

🌟jenkins代码发布流程

🌟案例01-jenkins-job-测试

jenkins项目类别 说明与应用场景
freestyle 绝大部分代码都可以使用这个类型的任务
maven项目 java代码(maven编译)
pipeline(流水线)

🌈新建一个item(项目)

💡修改保留构建的策略

☕️添加构建步骤脚本

💡开始构建

🔍查看构建结果

☀️修改jenkins服务用户为root

jenkins服务运行一些命令的时候,会有权限问题,所以这里我们修改为root用户

1.修改服务配置文件
sed -r -i '/^User|Group/s#jenkins#root#g' /usr/lib/systemd/system/jenkins.service

2.检查
egrep '^User|^Group' /usr/lib/systemd/system/jenkins.service
User=root
Group=root

3.重新加载服务配置文件
systemctl daemon-reload

4.重启服务
systemctl restart jenkins

🔄重新构建

🔍查看构建结果

🌟案例02-jenkins发布bird项目

🌈gitlab上新建bird项目

🔐生成密钥对

ssh-keygen

🔒gitlab上添加公钥

🐹准备bird代码

1.创建存放代码的目录
mkdir -p /code/bird/

2.rz上传bird.tar.gz到/code/bird/

3.解压代码
tar xf bird.tar.gz

4.删除压缩包
rm -f bird.tar.gz

🚀上传bird代码到gitlab仓库

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init
git remote add origin git@gitlab.zhubl.xyz:gitlab-instance-27370d95/bird.git
git remote  -v
git add .
git commit -m 'v1.0'
git tag -a v1.0 -m v1.0
git push -u origin master
git push -u origin --tags

🔍gitlab页面查看

🌈jenkins创建一个bird项目

🔐jenkins配置密钥认证

jenkins生成密钥对

ssh-keygen

jenkins页面添加私钥

gitlab页面添加jenkins的公钥

🛠️增加构建步骤脚本

  • 脚本
#0.vars 
CODE_NAME=bird.tar.gz
CODE_TMP_DIR=/opt/
CODE_DIR=/app/code/bird/
IP_ADDRS="10.160.11.234"
#1.打包
tar zcf  ${CODE_TMP_DIR}${CODE_NAME}   .

#2.分发-后期交给ansible copy模块/unarchive 模块
for ip in ${IP_ADDRS} 
do
    scp  ${CODE_TMP_DIR}${CODE_NAME}   $ip:${CODE_TMP_DIR}
done

#3.部署-后期交给ansible
#(未涉及到) tag标签
#代码直接解压到/app/code/bird/目录下即可.
for ip in ${IP_ADDRS} 
do
    ssh $ip <<-EOF
    [  -d  ${CODE_DIR} ]  ||  mkdir -p ${CODE_DIR}
    tar xf  ${CODE_TMP_DIR}${CODE_NAME}  -C ${CODE_DIR}
    EOF
done

#4.日志记录 

#5.通知

🎉jenkins开始发布bird项目

🔍查看构建结果

🌟jenkis升级bird代码

📝修改小鸟飞飞代码

vim index.html

🚀提交代码到gitlab仓库

git add .
git commit -m 'v3.1'
git tag -a "v3.1" -m "v3.1"
git push -u origin master
git push -u origin --tags

🎉jenkins发布bird新版本

🔍查看构建结果

🌏浏览器页面查看

🌟案例03-参数化构建-根据tag标签拉取指定代码

This project is parameterized参数化构建
参数化构建: 
    执行项目的时候增加一些交互(传参). 类似于shell的read.
    参数本质是变量(jenkins页面,shell).
eg:
1. 执行的时候选择指定的tag标签
2. 部署到指定的服务器
3. 选择部署到测试环境,生产环境.

常用的参数:
1. choice param选项参数:列好并进行选择.下拉菜单. 测试环境/生产环境,部署/回滚
2. git参数:             比如获取git仓库里面的tag标签.
4. 文本参数:              用于做一些记录.

🌈jenkins上创建bird-tag项目

🛠️配置选项参数

🛠️配置git参数

🛠️配置文本参数

📝修改git参数变量

🧩增加构建步骤脚本

  • 脚本
#0.vars 
CODE_NAME=bird_${TAG_NAME}.tar.gz
CODE_VERSION=bird_${TAG_NAME}
CODE_TMP_DIR=/opt/
CODE_DIR=/app/code/bird
IP_ADDRS="10.160.11.234"

# =============== 1.打包 ===============
function package() {
    tar zcf  ${CODE_TMP_DIR}${CODE_NAME} .
}

# =============== 2.分发 ===============
function fenfa() {
    for ip in ${IP_ADDRS}
    do
        scp ${CODE_TMP_DIR}${CODE_NAME} $ip:${CODE_TMP_DIR}
    done
}

# =============== 3.部署 ======================
function deploy() {
    for ip in ${IP_ADDRS}
    do
        ssh $ip <<EOF
        rm -rf ${CODE_DIR}
        mkdir -p ${CODE_TMP_DIR}${CODE_VERSION}
        ln -s ${CODE_TMP_DIR}${CODE_VERSION} ${CODE_DIR}
        tar xf ${CODE_TMP_DIR}${CODE_NAME}  -C ${CODE_TMP_DIR}${CODE_VERSION}
EOF
    done
}

# =============== 4.清理临时文件 ===============
function clean_temp() {
    rm -rf ${CODE_TMP_DIR}${CODE_NAME}
}

function main() {
    package
    fenfa
    deploy
    clean_temp
}
main

#5.日志记录 

#6.通知

🚀提交新版本bird到git仓库

☕️开始构建

🔍查看构建结果

🌏浏览器查看

🔄版本回滚

🔍查看构建结果

🌏浏览器查看

🌟总结

  • jenkins代码发布流程
  • 准备好代码并上传到代码仓库
  • jenkins配置与操作
    • 配置gitlab密钥认证(公钥),jenkins(私钥)
    • jenkins配置调用shell命令
    • 打包
    • 分发
    • 部署
    • 通知/日志