新闻详情

新闻详情

首页 / 资讯中心 / 详情

DevOps-Bash-tools 的 Jenkins 运维脚本体系:Bash CLI 直跑 + Groovy Script Console 双通道实战指南

发布时间:2026/10/2 1:58:52来源:尧图网络
DevOps-Bash-tools 的 Jenkins 运维脚本体系:Bash CLI 直跑 + Groovy Script Console 双通道实战指南
DevOps运维CLICI/CD云原生【免费下载链接】DevOps-Bash-tools1200 DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..项目地址https://gitcode.com/GitHub_Trending/de/DevOps-Bash-tools点击查看免费下载导读本文围绕 jenkins/README.md 确立的核心用法展开DevOps-Bash-tools 仓库中所有 Jenkins 相关脚本分为两类——可直接从 git clone 目录执行的*.shBash 脚本以及必须粘贴进 JenkinsScript Console$JENKINS_URL/script运行的*.groovy脚本。读完本文你将掌握用一条命令在 Docker 中拉起 Jenkins 并自动加载流水线、通过jenkins_cli.sh与jenkins_api.sh完成认证与批量运维、用 Groovy 片段在 Script Console 中审计和清理全部作业以及凭据的增删改查全流程。一、脚本总览两种执行通道的分工jenkins/README.md 开宗明义地给出本模块的使用边界Bash 脚本jenkins_*.sh从 git clone 出的仓库目录直接执行即可它们封装了 Jenkins CLI、REST API 与 Docker Compose覆盖从拉起服务到批量管理作业的绝大多数日常操作Groovy 脚本*.groovy不能在 shell 里直接运行必须粘贴到 Jenkins 的 Script Console——浏览器访问$JENKINS_URL/script导航路径为Jenkins → Manage Jenkins → Script Console。所有*.groovy文件顶部都带有同样的注释约定例如 jenkins_count_jobs.groovy// Paste this into $JENKINS_URL/script // // Jenkins - Manage Jenkins - Script ConsoleScript Console 是 Jenkins 内置的 Groovy 解释器具备对jenkins.model.Jenkins.instance的完整访问权限适合做 Bash 脚本难以表达的遍历全部对象类操作如枚举作业、批量清历史、批量禁用。而 Bash 脚本则强在可脚本化、可管道、可复用两者互补构成完整的 Jenkins 运维工具箱。从 jenkins/ 目录结构看全部脚本可分为四组拉起与构建jenkins.sh、jenkins_cli.sh、API 与作业管理jenkins_api.sh、jenkins_jobs*.sh、jenkins_job_*.sh、凭据管理jenkins_cred_*、jenkins_creds_cli_xml_dump.sh、Script Console 维护脚本全部*.groovy。二、快速上手一条命令拉起 Jenkins 并构建当前仓库jenkins.sh 是本模块的入口脚本其内部注释清楚描述了完整流程Docker 中启动 Jenkins 容器 → 安装插件 → 打印管理员凭据 → 从$PWD/setup/jenkins-job.xml创建作业流水线取自$PWD/Jenkinsfile→ 启用作业 → 构建作业 → 打印并打开 Jenkins UI。# 拉起 Jenkins 并构建当前仓库 ./jenkins/jenkins.sh up # 停止 ./jenkins/jenkins.sh down # 仅打印 Jenkins Server URL 并自动在浏览器中打开 ./jenkins/jenkins.sh ui # 重启并重新走一遍 up 流程 ./jenkins/jenkins.sh restart脚本是幂等的注释明确标注 Idempotent, you can re-run this and continue from any stage可随时重跑从任一阶段继续。几个关键实现细节依赖docker-compose缺失时自动调用 install/install_docker_compose.sh 安装读取 setup/jenkins-plugins.txt 插件清单优先用容器内install-plugins.sh安装失败则回退到jenkins-plugin-cli源码见 jenkins.sh通过when_url_content轮询$JENKINS_URL/login等待 Jenkins 就绪再等待jenkins_cli.sh list-plugins有输出确认初始化完成若Jenkinsfile或setup/jenkins-job.xml不存在则跳过流水线加载提示从包含这两个文件的仓库根目录重跑加载流水线前先用declarative-linter校验 Jenkinsfile随后create-job/update-job、enable-job、build -f -v依次执行-f等待构建完成、-v打印构建输出。支撑的 Docker Compose 编排docker-compose/jenkins.yml 定义了jenkins-server服务关键配置services: jenkins-server: image: jenkins/jenkins:${VERSION:-lts} # 默认 lts 标签 ports: - ${JENKINS_PORT:-8080}:8080 - 50000:50000 # 代理/agent 通信端口 user: root:root healthcheck: test: ${DOCKER_HEALTHCHECK:-curl http://localhost:8080/login} interval: 30s start_period: 30s timeout: 10s retries: 5 restart: unless-stopped environment: JAVA_OPTS: -Dhudson.footerURLhttps://github.com/harisekhon文件注释中的经验值得注意官方jenkins镜像年代过久无法加载新插件jenkinsci/blueocean基于 Alpine 且与 Debian 系 Jenkinsfile 不匹配因此选用jenkins/jenkins:lts并在注释中提示开发环境可通过DOCKER_HEALTHCHECK/bin/true绕过健康检查。插件不再通过 volume 自动注入而是由jenkins.sh显式安装对应注释 doesnt auto-install, done explicitly by jenkins.sh now。三、连接与认证jenkins_cli.sh 与环境变量体系jenkins_cli.sh 是 Jenkins CLI 的完整封装首次运行自动从$JENKINS_URL/jnlpJars/jenkins-cli.jar下载 jar优先wget回退curl随后以java -jar方式调用将用户/密码以-auth (...)进程替换形式传入避免密码出现在命令行参数中。配置环境变量的优先级顺序脚本头部注释明确列出与 jenkins-cli.jar 行为一致用途变量优先级/默认行为服务地址JENKINS_URL最高优先级未设置时由JENKINS_HOSTJENKINS_PORT拼出服务地址JENKINS_HOST/JENKINS_PORT默认localhost/8080SSLJENKINS_SSL任意非空值即启用https前缀用户名JENKINS_USER_ID未设置时默认admin认证凭据JENKINS_API_TOKEN→JENKINS_TOKEN→JENKINS_PASSWORD依次降级全为空时最后调用jenkins_password.sh兜底额外开关JENKINS_CLI_ARGS透传给 jenkins-cli.jar一个重要实战提示源码注释原话若 Jenkins 位于 Kubernetes Ingress 等反向代理之后必须加-webSocket参数否则 CLI 会挂起。推荐通过JENKINS_CLI_ARGS一次性注入。常用子命令示例./jenkins/jenkins_cli.sh help # 查看全部 CLI 选项 ./jenkins/jenkins_cli.sh version # Jenkins 版本 ./jenkins/jenkins_cli.sh who-am-i # 当前认证用户 ./jenkins/jenkins_cli.sh list-plugins # 插件列表 ./jenkins/jenkins_cli.sh list-jobs # 作业流水线列表 ./jenkins/jenkins_cli.sh list-credentials system::system::jenkins # 默认凭据库 ./jenkins/jenkins_cli.sh list-credentials-as-xml system::system::jenkins # 以 XML 导出全部凭据配置密码自动发现jenkins_password.shjenkins_password.sh 按以下顺序自动定位管理员密码源码第 2847 行已设置JENKINS_PASSWORD则直接使用docker-compose 场景docker ps中出现jenkins-server容器时从容器内/var/jenkins_home/secrets/initialAdminPassword读取需注意COMPOSE_PROJECT_NAME与编排实例匹配如export COMPOSE_PROJECT_NAMEbash-toolsKubernetes 场景kubectl get secret -n jenkins jenkins存在时读取jenkins-admin-password字段并base64 --decode本地文件场景/var/jenkins_home/secrets/initialAdminPassword存在则直接读取。任一路径都失败则报错退出。脚本末尾以export JENKINS_PASSWORD导出因此既可作为子进程输出密码也可source进当前 shell 供后续脚本使用。四、REST API 层jenkins_api.sh 与作业批量操作API 封装要点jenkins_api.sh 封装 Jenkins REST API自动处理 CSRFJenkins-Crumb使用JENKINS_PASSWORD认证时先向/crumbIssuer/api/json发预请求取 crumb 并以Jenkins-Crumb头随请求发送而使用JENKINS_API_TOKEN/JENKINS_TOKEN时则无需 crumbToken 本身已豁免 CSRF 校验。认证变量同样支持JENKINS_USER_ID/JENKINS_USERNAME/JENKINS_USER三级用户名降级。兼容性注意源码注释Jenkins 2.176.2 起建议使用JENKINS_TOKEN而非密码可参考官方升级指南中关于 SECURITY-626 的说明。典型用法# 列出系统全局凭据库中的凭据 ID ./jenkins/jenkins_api.sh /credentials/store/system/domain/_/api/json?treecredentials\[id\] | jq . # 获取指定凭据haritest的 config.xml ./jenkins/jenkins_api.sh /credentials/store/system/domain/_/credential/haritest/config.xml # 删除名为 test 的作业/流水线 ./jenkins/jenkins_api.sh /job/test/ -X DELETE -i作业列表与遍历jenkins_jobs.sh 通过/api/json?treejobs\[name\]prettytrue拉取全部作业名jq提取后sort -f排序输出jenkins_foreach_job.sh 则在每个作业名上执行用户给定的命令模板模板中{job}占位符会被替换为实际作业名./jenkins/jenkins_foreach_job.sh echo job{job}脚本注释给出一个重要警示不要在遍历命令中读取标准输入否则会吞掉管道中的作业名、在第一次迭代后就退出。同一脚本家族还有作业启停、触发与配置导出jenkins_job_enable.sh、jenkins_job_disable.sh、jenkins_jobs_enable.sh、jenkins_jobs_disable.sh——单个或全部作业启停jenkins_job_trigger.sh、jenkins_job_trigger_with_params.sh——带参数触发构建jenkins_jobs_download_configs.sh、jenkins_jobs_download_configs_cli.sh——批量备份作业配置 XMLjenkins_job_config.sh、jenkins_job_description.sh——读取/修改作业配置与描述jenkins_builds.sh——构建记录查询。从源码结构可以推断API 通道脚本jenkins_api.sh起与 CLI 通道脚本jenkins_cli.sh起是两套平行实现前者依赖curl_auth.sh与jq后者依赖 Java 运行时与下载的 jar用户可按环境选择。五、凭据管理从创建到审计的完整闭环仓库中凭据相关脚本数量最多覆盖四种凭据类型与 CLI/API 两套通道cert证书、kubernetes_saK8s 服务账号、secret_file秘密文件、secret_text秘密文本、ssh_key、user_pass用户名密码每种都有add/set/update/delete/list/get操作及_cli_变体。以 jenkins_cred_add_secret_text.sh 为例说明调用方式# 创建 ID 为 aws-access-key-id、文本为 AKIA... 的凭据默认 system 库、全局域 _ ./jenkins/jenkins_cred_add_secret_text.sh aws-access-key-id AKIA... # 带描述位置参数依次为 id、secret、store、domain、description ./jenkins/jenkins_cred_add_secret_text.sh aws-access-key-id AKIA... My AWS Access Key ID # 从标准输入按 KEYVALUE 读取支持 export 前缀与空行过滤适合管道 echo AWS_ACCESS_KEY_IDAKIA... | ./jenkins/jenkins_cred_add_secret_text.sh # 与 aws_csv_creds.sh 联动批量导入 AWS 凭据 aws_csv_creds.sh ~/.aws/keys/downloaded_access_key_creds.csv | ./jenkins/jenkins_cred_add_secret_text.sh实现细节对应源码第 79113 行先经parse_export_key_value解析KEYVALUE若 value 指向一个存在的文件路径会先读取文件内容作为秘密然后构造StringCredentialsImpl的 XML 负载 POST 到/credentials/store/$store/domain/$domain/createCredentials。域名_会在日志中显示为GLOBAL。store 与 domain 也可通过环境变量JENKINS_SECRET_STORE/JENKINS_SECRET_DOMAIN覆盖stdin 模式必须用环境变量指定非默认库。凭据 ID 的消费方式在 jenkins_cred_list.sh 的注释中有明确指引——credentials(some-id)语法environment { MYVAR credentials(some-id) }即先jenkins_cred_list.sh拿到 ID → 写入 Jenkinsfile 的environment块 → 流水线内以$MYVAR引用。CLI 通道的 jenkins_cred_cli_add_*.sh 系列走jenkins_cli.sh的create-credentials-by-xml等命令适合无jq或希望统一走 CLI 的环境jenkins_creds_cli_xml_dump.sh 则用于凭据配置的 XML 全量审计与备份。六、Groovy Script Console 脚本详解这是 jenkins/README.md 强调的第二条通道。以下脚本均粘贴至$JENKINS_URL/scriptJenkins → Manage Jenkins → Script Console执行。1. 统计与枚举jenkins_count_jobs.groovy 输出全部作业数量items.findAll().sizejenkins_jobs.groovy 打印每个作业的 displayName 并返回总数jenkins_jobs_status.groovy 为每个作业输出disabled: true/false name: 作业名可快速定位被禁用/启用的作业jenkins_jobs_disabled.groovy 只列出被禁用的作业。2. 清空构建历史jenkins_clear_build_history.groovy 针对单个作业需把脚本顶部的jobName改成你的流水线名String jobName My Dev Pipeline def job Jenkins.instance.getItemByFullName(jobName) job.getBuilds().each { it.delete() } job.save()jenkins_clear_build_history_all_jobs.groovy 则遍历全部作业清理并重置nextBuildNumber 1。这两个脚本带有重要的生产事故警示源码注释原文引用清空历史会与Milestone 插件产生状态冲突导致后续构建报错Trying to pass milestone 0 Canceled since build #3814 already got here这正是 JENKINS-38641 问题作业恢复后从 #1 重新编号而 Milestone 残留了更高的构建号引用。源码给出的两种修复思路单作业场景将job.nextBuildNumber 3815抬高到已到过的构建号之上见 jenkins_clear_build_history.groovy多作业场景则需把编号设到高于所有作业曾达到的数值见 jenkins_clear_build_history_all_jobs.groovy。因此单作业版本特意注释掉了job.nextBuildNumber 1而全量版本保留重置但附带同样的警告。3. 禁用作业jenkins_job_disable.groovy 对指定作业执行job.setDisabled(true)并回读job.isDisabled()确认。与 Bash 通道的 jenkins_job_disable.sh 相比Groovy 版可直接在 Web 界面内完成无需额外认证配置适合临时快速止血。使用提示以上 Groovy 脚本均需按实际情况微调作业名、是否重置构建号且在清空构建历史类操作前请先确认备份或知悉 Milestone 插件的影响这属于 Jenkins 运维中典型的高风险低频率操作。七、仓库中的配套资源与延伸阅读围绕 Jenkins 模块仓库还提供了完整的配套文件可供查看与复用Jenkinsfile——本仓库自身的流水线定义可与jenkins.sh结合在本地拉起完整 CI 演练setup/jenkins-job.xml 与 setup/jenkins-plugins.txt——作业模板与插件清单是jenkins.sh一键构建的输入docker-compose/jenkins.yml——上文已详解的编排文件jenkins/lib/——从顶层脚本抽象出的公共函数库如git.sh、utils.sh供编写自定义 Jenkins 运维脚本复用交互式的.bash.d别名与函数则位于仓库顶层同名目录同仓库的 github、gitlab、bitbucket、buildkite 等模块展示了 Jenkins 脚本与各 CI/CD 平台脚本的组合用法可作为扩展参考。jenkins/模块内 60 脚本按jenkins_前缀统一命名配合--help输出所有脚本经help_usage统一处理即使脱离 README 也能自解释使用。总结DevOps-Bash-tools 的 Jenkins 模块给出了两条互补的自动化路径Bash 脚本通道适合在 CI 编排、终端管道、批量脚本化场景中使用覆盖拉起服务、CLI/API 双认证、作业与凭据全生命周期管理Groovy Script Console 通道适合需要直接操作 Jenkins 对象模型的运维动作枚举、清历史、禁用并以源码注释中的 Milestone 插件事故为戒提示了高风险操作的边界。以 jenkins/README.md 的两行定义为起点本文已将其扩展为可直接落地的完整实践手册。赞分享DevOps运维CLICI/CD云原生【免费下载链接】DevOps-Bash-tools1200 DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..项目地址https://gitcode.com/GitHub_Trending/de/DevOps-Bash-tools点击查看免费下载相关推荐DevOps-Bash-tools 全指南1200 DevOps Shell 脚本与高级 Bash 环境实战手册DevOps Bash tools 全指南1200 DevOps Shell 脚本与高级 Bash 环境实战手册 本文以开源仓库 DevOps Bash tDevOps运维CLICI/CD云原生DevOps-Bash-tools项目中的Azure CLI自动化安装脚本解析DevOps Bash tools项目中的Azure CLI自动化安装脚本解析 痛点多平台Azure CLI安装的复杂性 你是否曾经在不同操作系统上手动安装ADevOps运维CLICI/CD云原生Azure云原生自动化DevOps-Bash-tools脚本大全Azure云原生自动化DevOps Bash tools脚本大全 引言云原生时代的Azure自动化痛点与解决方案 你是否还在为Azure资源的手动管理而焦头DevOps运维CLICI/CD云原生上一篇Node-Redis过期策略完整指南键过期与持久化配置终极教程下一篇cann/cannbot-skills的fixpipe操作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

磁保持继电器与普通电磁继电器选型指南:避坑与实战 2026/10/2 2:48:35

磁保持继电器与普通电磁继电器选型指南:避坑与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于SpringBoot+Vue+MyBatis的医院网站前后端分离实战详解 2026/10/2 2:48:35

基于SpringBoot+Vue+MyBatis的医院网站前后端分离实战详解

前后端分离、SpringBoot、Vue、MyBatis、MySQL,这几个关键词组合在一起,就是当前中小型医院网站项目里最实用的一套技术栈。我最近把一个医院门户网站完整跑通,从数据库建模、接口开发、Vue页面搭建到服务器部署,整个过程踩了不少…

阅读更多 →
Mac上Pycharm集成Git完整指南:从安装配置到分支管理 2026/10/2 2:48:28

Mac上Pycharm集成Git完整指南:从安装配置到分支管理

1. 项目概述与核心价值1.1 为什么我建议你在Mac上把Git和Pycharm一起用先说结论:Git是每个写代码的人绕不过去的基础工具,而Pycharm是目前Mac上最顺手的Python IDE之一,两者配合起来,等于给你的代码上了一道“时间保险”。这个组合…

阅读更多 →
VSCode代码段不生效?从注册到Tab冲突的完整排查指南 2026/10/2 2:48:22

VSCode代码段不生效?从注册到Tab冲突的完整排查指南

可能很多人在群里见过这样的求助:“VSCode 里代码段写好了,为什么不生效?”“我照着教程配了一个用户片段,输入前缀按 Tab 半天没反应。”“同一个片段,在这台机器上能用,换台电脑就消失了。”这类问题看似…

阅读更多 →
车载Wi-Fi调试实战:频段信道天线与AX211驱动排查 2026/10/2 2:48:22

车载Wi-Fi调试实战:频段信道天线与AX211驱动排查

智能汽车里的Wi-Fi,写到现在已经是第五篇,我越写越觉得它是整套无线架构里最容易被低估的一环。车机OTA、诊断刷写、无线CarPlay、测试数据回传,甚至大学生智能车竞赛里的图像图传,全都压在Wi-Fi这条链路上。这一篇不讲空泛趋势&a…

阅读更多 →
Python实现单目2D/3D目标检测与BEV可视化:原理与源码解析 2026/10/2 2:48:22

Python实现单目2D/3D目标检测与BEV可视化:原理与源码解析

简介:基于Python实现单目2D与3D目标检测及BEV可视化的源码包,面向高校学生、毕业设计及课程设计人群,也适合对自动驾驶感知、多目标跟踪感兴趣的开发者学习借鉴。资源涉及KITTI数据集解析、3D目标检测、BEV鸟瞰可视化、多目标跟踪等核心环节&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉