随笔分类 - 持续交付CI/CD
摘要:问题复现 解决办法 在git bash中直接执行如下命令 git config --global core.quotepath false 原因 通过 git config --help 可以查看到以下内容: core.quotePath Commands that output paths (e.
阅读全文
摘要:问题复现 近期升级了 Git v2.37.0,发现在git bash进入git目录执行git命令时出现错误:Fatal error "unsafe repository ('git目录名' is owned by someone else)",无法使用git做一些操作。 问题解决 两个方法:降级到v
阅读全文
摘要:def plaintext = "测试字符" def encode = java.net.URLEncoder.encode(title, "UTF-8") println 'encode='+encode def decode = java.net.URLDecoder.decode(encode
阅读全文
摘要:问题说明 最近在调整公司项目的公共脚本,需要根据多个变量是否存在来判断是否引入相应的bom,伪代码如下: gradle.properties中 xBomVersion=1.0.0 构建脚本片段: configure(allprojects) { apply plugin: 'java' apply
阅读全文
摘要:问题现象 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':common-base:uploadArchives'. > Could not publish configur
阅读全文
摘要:写在前边 经常使用Gradle的都知道 Gradle有两个发布制品到Maven仓库的插件:maven 与 maven-publish,其中 maven 插件是比较老的插件,而新版本是 maven-publish,官方文档推荐使用 maven-publish 插件。 接下来说问题 Gradle 6.x
阅读全文
摘要:楔子 上篇文章解决了提交/合并请求自动触发的需求,但所有前端模块都在同一个代码仓库里,如何获取变更文件路径确定要发布哪个模块呢?本文将带你解决这个问题。 思路 分别解决 3 个问题: 获取变更的文件列表 根据文件列表判断所属模块 构建与发布脚本 过程 GitLab 事件触发 Jenkins 构建只是
阅读全文
摘要:楔子 最近公司推行统一构建平台(基于 Jenkins + Kubernetes 插件创建 slave),原来部门自建的 Jenkins 不让用了。 迁移上统一构建平台的最大阻力是前端模块发布的问题: 前端单仓库全量构建/发布,安装依赖有缓存在小型机上跑着效率还行,如果迁到公司平台上性能相对低些,又没
阅读全文
摘要:场景 使用Jenkins的流水线时,有时明明某些Python或Shell执行结果错误,但仍会继续运行下去,甚至于最终提示成功。这并不合我们的预期——出现错误及时停止。当然,还有那种小错误不影响构建的,希望继续执行下去的情况。 所以,场景有两个: 希望发现错误,及时中止执行的情况。 希望错误发生时,脚
阅读全文
摘要:写在前边 自Gradle 5开始添加了Maven中 BOM 的支持。然而Gradle 6 以前,想使用BOM,需要使用 Maven 定义并发布 pom.xml 才可以。 好在 Gradle 6 开始,官方提供了一个名为 java-platform 插件,无需复杂配置,即可生成 BOM 并发布,本文就
阅读全文
摘要:写在前边 简单介绍下:如何在Jenkins等CI环境中使用Npm访问需要认证的仓库。 使用 npm login 交互式的输入用户名、密码、邮箱的方式不适合CI环境,使用延迟输入、管道重定向、expect 命令等方式,需要对安装软件或者在仓库响应慢的情况下,也容易登录失败。 本文将带你使用 authT
阅读全文
摘要:写在前边 写这篇文章主要是记录下,很久之前读《重构-改善既有代码的设计》时,看到过作者讲过Git可以实现多个细碎操作commit合并为一个有意义的提交,当时查过一些中文信息,写得不是很清晰。正巧有一个Git管理的脚本仓库需要大量修改,尝试践行下书中的内容:完成一小部分功能就作一次本地commit,直
阅读全文
摘要:【k8s实战一】Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程。 为了简化流程与容易重现文中效果,做出如下操作: 使用 VBox 创建两台虚拟机 使用 Minikube 初始化简单的k8s集群 使用
阅读全文
摘要:00.简介 Gradle 是一种开源自动化构建工具,支持多语言环境,受 Ant、Maven 思想的影响,集二者之大成,相比 Ant 的不规范,Maven 的配置复杂、生命周期限制严重,Gradle 既规范也更灵活,可以使用DSL (领域特定语言,如Groovy 或 Kotlin)编写构建脚本,脚本更
阅读全文
摘要:主旨 实践 Jenkins 流水线使用SSH方式操作 Git 仓库,包含基于 SSH 私钥认证的服务器 准备 需要提前安装 SSH Agent Plugin,可以通过 Manage Jenkins-> Manage Plugins-> Installed 使用 filter 搜索查看是否安装,如没有
阅读全文
摘要:主旨 本文主要记录了下Jenkins升级插件过程中出现的场景,一次加班经历,事发时没有截图,有兴趣可以看看。 起因 需求 最近有个需求:在Jenkins流水线中完成下载Git上的文件简单修改并提交的功能 起初找到了相关的插件用法,即使用 SSH Agent Plugin 来完成这个功能 插件不生效
阅读全文
摘要:简记: 查看当前gradle项目中指定依赖模块被哪些jar包依赖 gradle :dependencyInsight --dependency <依赖名> --configuration compile
阅读全文
摘要:本文目标 不使用Jenkins官方提供的镜像,从最简系统镜像搭建一个最新稳定版的Jenkins镜像 ,自定义镜像内有的工具如jdk、gradle、node等,使用Dockfile与Shell脚本搭建而成 自定义的原因是官方镜像不能满足我们对于镜像内部工具的需求 本文面向 面向对象:smile: ——
阅读全文
摘要:问题复现 官方给的写法,以创建远程分支举例 curl --request POST --header "PRIVATE-TOKEN: ${私钥}" ${gitlab地址}/api/v4/projects/${目录名}%2F${仓库名}/repository/branches?branch=${新分支
阅读全文
摘要:写在前 之前使用Jenkins pipeline的时候发现拿不到日志,使用multiple scms插件对应是日志变量获取日志的方式失效了, 但是查看流水线Pipeline Syntax发现checkout竟然有包含提交日志的选项, 这里一定有办法获取到日志 ,苦于之前时间紧任务重,就先当它不能获取
阅读全文