@

Jenkins笔记

Jenkins笔记之新建任务:https://blog.csdn.net/weixin_42526326/article/details/119865834

Jenkins笔记之配置远程服务器:https://blog.csdn.net/weixin_42526326/article/details/119866221

Jenkins:参数化构建:多分支|多模块|回滚|打印日志:https://blog.csdn.net/weixin_42526326/article/details/121580465

根据自己的需求自定义构建不同的参数

多分支

安装Git Parameter Plug-In

同类型的插件不止一种,选择自己熟悉的即可

进入系统管理——插件管理——可选插件——直接搜——安装

配置参数

配置——Gods Webhook——参数化构建过程——添加参数——Git 参数——配置下面的参数:

名称:参数变量名

参数类型:选择分支/分支或者标签

默认值:设置为主分支或者其他的分支

源码管理——设定分支参数$mybranch 上一步骤中的参数名——其他在正确的情况下——保存

自动根据git地址解析版本

选择构建分支

分模块

前提

父项目和子项目必须添加build标签,这个分不分模块都是需要的

  • 父项目
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
  • 子项目
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

分模块build

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EW3doc2V-1638005232824)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122175236237.png)]

参数配置

Extended Choice Parameter —— Parameter Type—— 选择Check Boxes(多选框)

Number of Visible Items : 模块限制

Delimiter:分隔符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ji4bHXJI-1638005232825)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211127164143904.png)]

分模块shell脚本

maven根据pom分模块

shell执行流程:

  • 获取分支参数、模块参数、工作空间路径(使用默认值)
  • 遍历路径跳转模块目录——读取当前目录pom.xml ——读取setting.xml
  • clean——install(complie)
#!/usr/bin/env bash

echo "branch to deploy: " $mybranch
echo "modules to deploy: " $submodule
echo "workspace is: " $WORKSPACE # /, 转义符,获取,模块数组
array=(${submodule//,/ })
#遍历执行
for module in ${array[@]}
do
echo "Try to compile other module"
cd $WORKSPACE/${module} && mvn -B -f pom.xml -s /data/apache-maven-3.8.1/conf/settings.xml -gs /data/apache-maven-3.8.1/conf/settings.xml clean install -Dmaven.test.skip=true
done

mvn 的基本用法

用法:mvn [options] [<goal(s)>] [<phase(s)>]

选项:
-B,-批处理模式以非交互方式运行(批处理)模式(禁用输出颜色)
-D,-定义<arg>定义系统属性
-f,-file <arg>强制使用备用POM文件(或带有pom.xml的目录),pom文件路径必须紧跟在 -f 参数后面
-e,-errors产生执行错误消息
-X,-debug产生执行调试输出
-l,-log-file <arg>所有构建输出的日志文件会去(禁用输出颜色)
-q,-quiet安静的输出-仅显示错误
-v,-version显示版本信息
-h,-help显示帮助信息
-s --settings <arg> 用户配置文件的备用路径;
-gs --global-settings <file> 全局配置文件的备用路径;

分模块运行

运行SCP命令,SSH连接远程服务器,运行重启脚本,采用两种方式,

  • 一if ,else列出所有的服务

    !/usr/bin/env bash

    echo "modules to deploy: " $submodule

    array=(${submodule//,/ })

    for module in ${array[@]}

    do

    echo "Try to restart other module start"

    scp -P 2021 /data/jenkins/workdir/jobs/base-service/workspace/module/$module-service/target/$module-service.jar devops@xxx.9.134.177:/home/devops/$module/

    ssh -p 2021 devops@xxx.9.134.177 "/data/initsh/$module-restart.sh"
    
    echo "Try to restart other module end"

    done

  • for 遍历所有的模块,服务器所有的项目都要规整。通常采用这种方式,自定义参数:同一个服务器多个服务遍历,每个结点一个任务,每个结点多个服务,可以做一个分组的设置

#!/usr/bin/env bash

echo "modules to deploy: " $submodule

array=(${submodule//,/ })
for module in ${array[@]}
do
if [ "$module" == "module" ]; then echo "Try to restart other module start"
scp -P 2021 /data/jenkins/workdir/jobs/base-service/workspace/module/module-service/target/module-service.jar devops@xxx.9.134.177:/home/devops/module/ ssh -p 2021 devops@xxx.9.134.177 "/data/initsh/module-restart.sh" echo "Try to restart other module end" fi
done

项目回滚

原理:构建时可以选择是构建或者回滚字段,设置Choice字段的值,通过Choice设置项目build版本

参数配置

Gods Webhook——添加参数——Extended Choice Parameter

  • Extended Choice Parameter: 选择参数

  • Number of Visible Items:项目可见数

  • Delimiter:分隔符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gpxk94Ao-1638005232826)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122170156675.png)]

配置选择框内字段

构建后存档

记录文件的指纹用于追踪

需要记录指纹的文件:Jenkins 工作目录保存的jar

项目构建选择

打印日志

需要单独开一个任务,与build、run都要区分开,非常的不方便,

原理:服务器远程命令打印日志到Jenkis,

打印日志的命令:

tail -$LogRow logPath/log$Date.log

-N

-Date

这个是日志的后缀,根据服务器日志名打印指定的日志文件,最多查看15天以内的日志

查看某一天的日志,如果输入.2021-11-22,就是查看2021-11-22的日志,注意前面是有一个.符号不能省略,最多查看15天以内的日志

SSH命令

tail -$LogRow /data/project/yilucloud-analysis/logs/error$Date.log

取消build,run



参考文章:

https://www.cnblogs.com/dadonggg/p/8444366.html

Jenkins:参数化构建:分支|模块|回滚|打印日志的更多相关文章

  1. 2、jenkins+svn自动发布和回滚

    Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...

  2. Jenkins 利用Build With Parameters Plugin实现Jenkins参数化构建

    利用Build With Parameters Plugin实现Jenkins参数化构建   by:授客 QQ:1033553122 测试环境 Build With Parameters Plugin ...

  3. Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法

    上面虽然实现了项目的自动部署,但是有时部署失败的时候我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署.我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚 如 ...

  4. 八. jenkins参数化构建 git分支

    使用git管理代码时往往会有多分支开发,这时部署通过修改配置不试用.可以通过参数化构建. 1.通过字符参数方式 新建一个maven项目,选择参数化构建过程-字符参数,如下: 源码管理中配置如下: 其它 ...

  5. Jenkins+Ansible+Gitlab自动发布/回滚Spring项目

    一.实现方法流程图 流程图如下:代码托管在本地GitLab上(为了复现整套流水线,我直接使用了GitHub,懒得再搭建GitLab),开发完成后提交代码到代码仓库,[自动]触发Jenkins进行持续集 ...

  6. Jenkins参数化构建插件,实现构建前输入自定义参数

    插件: [Build with Parameters]:https://wiki.jenkins-ci.org/display/JENKINS/Build+With+Parameters+Plugin ...

  7. jenkins参数化构建过程

    http://www.cnblogs.com/meitian/p/5492457.html 1,首先增加Jenkisn插件 https://wiki.jenkins-ci.org/display/JE ...

  8. 使用插件实现Jenkins参数化构建

    一.插件安装 1.打开插件管理,在此界面可以安装插件 二.参数化 1.在“可选插件”中查找如下两个插件然后安装,安装后重启Jenkins Build With Parameters 输入框式的参数 P ...

  9. Jenkins参数化构建(七)

    一.配置参数化构建过程 主要用来区分分支,使用传参的方式,将分支名称传入脚本中进行拉取代码. 1.1 最常用的是:字符参数.文本参数.  1.2 添加字符参数和文本参数,并配置变量名称  1.3 配置 ...

随机推荐

  1. sed初理多行合并+sed之G、H、g、h使用+sed n/N使用说明

    转载:[shell]sed处理多行合并 - seyjs - 博客园 (cnblogs.com) 文件格式 table=t1 name owner address table=t2 id text co ...

  2. kail入侵xp实例

    Kali的IP地址是192.168.0.112 Windows XP的IP地址是192.168.0.108 本文演示怎么使用Metasploit入侵windows xp sp3. 启动msfconso ...

  3. WSL2学习和使用汇集

    接触WSL2过程中整理沉淀的一些知识点,大纲如下,内容比较多,详细内容参考https://www.yuque.com/wushifengcn/kb/mbg1b5 欢迎感兴趣者补充和提出问题,共同学习. ...

  4. 【python+postman接口自动化测试】(1)网络基础知识

    一.IP地址 就像每个人都有一个身份证号码 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址. 查看IP命令: Windows: ipconfig Li ...

  5. JetBrains IntelliJ IDEA汉化

    JetBrains IntelliJ IDEA汉化 开启 IntelliJ IDEA,点击右下角Configure菜单,选择 Plugins.在弹出的 Plugins窗口里,切换至 Marketpla ...

  6. 二.什么是Promise

    二.什么是Promise 1.理解 2.promise 的状态改变 3.promise的基本流程 4.promise的基本使用 1.理解 抽象表达: Promise 是JS 中进行异步编程的新的解决方 ...

  7. 使用Charles请求跳转可作为线上和线下环境的切换

    举个例子: 1.后端拿测试环境的客户端调试本地的代码 2.连接后端本地服务测试客户端和后端的交互 这样就可以改变客户端请求的测试环境换成其他的环境 一.配置 tools--Map remot... 这 ...

  8. 一看就懂的IdentityServer4认证授权设计方案

    查阅了大多数相关资料,总结设计一个IdentityServer4认证授权方案,我们先看理论,后设计方案. 1.快速理解认证授权 我们先看一下网站发起QQ认证授权,授权通过后获取用户头像,昵称的流程. ...

  9. Django笔记&教程 6-2 表单(Form)基础操作

    Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...

  10. vue开发中的一些简单骚操作

    在开发过程中,我们可以定义很多参数,这时需要通过不同的操作来改变不同的参数,这就比较复杂了, 虽然不难,但是代码多了也不好看,这时我们就可以通过简单的操作就行简化: 1.对象使用方括号 let obj ...