CI/CD
择思
专注技术积累
展开
-
Jenkins Pipeline 手记(8)—— 踩坑 Docker + MSBuild + SonarScanner
问题最近工作中有这样的需求,需要针对MSBuild的项目,在pipeline中使用SonarQube进行静态代码分析。这就需要用到 SonarScanner For MSBuild 这个版本的扫描工具。如果直接在Jenkins的虚拟机节点上运行Build和Sonar Scan,没有问题。不过我们的Build是在Docker container中运行的,pipeline会启动一个windows container,其中包含了MSBuild和msbuld-sonarscanner等工具。在Sonar阶段就会遇原创 2020-09-29 19:35:37 · 1056 阅读 · 0 评论 -
Jenkins Pipeline 手记(7)—— 发现 SonarQube Plugin 的 Bug
今天跟大家分享一个Bug的发现之路,由于这个应用场景比较特殊,其中的分析过程我觉值得记录下来。背景我们知道,SonarQube 是常用的静态代码扫描工具,可以帮助我们发现各种编程语言编写的项目中的代码问题。针对MSBUILD的项目,SonarQube还提供了专门的扫描工具sonarscanner-msbuild。想要在Jenkins Pipeline中使用这个工具,我们当然可以直接在命令行中调用,并传入需要的参数。但由于参数中有一些常用变量比如server的地址、项目名称等,写死在命令行中不是好办法,原创 2020-09-14 16:45:47 · 572 阅读 · 0 评论 -
Jenkins Pipeline 手记(6)—— 使用 Azure VM 作为动态节点
在Jenkins Pipeline实践中,有时需要分配并连接动态的build agent完成CI任务。相比于静态的VM节点,这样做的好处是可以优化资源的使用,动态地分配和释放所需要的物理资源,既不让资源闲置,也不会导致某些节点负载过重。Jenkins支持通过Cloud的方式配置动态节点,比如Kubernetes和Azure VM。本文就来分享一下如何配置并使用Azure VM来构建CI任务。准备工作首先,你要有一个Azure Subscription和Service Principal。使用Azure原创 2020-09-07 15:32:21 · 534 阅读 · 0 评论 -
Jenkins Pipeline 手记(5)—— Docker In Docker 那些事儿
引言在定义Jenkins CI Pipeline时,我们难免会用到Docker。将复杂Build/Test/Deploy的过程放到容器中,既可以重用环境设置和工具集,也能高效地使用资源。不过我们可能遇到如下场景:在build过程中需要使用Docker命令来启动新的容器或者build新的imageJenkins的master或者slave本身就是在容器中运行的无论哪种情况,本质都是在Docker容器内部运行Docker命令,即所谓的**Docker-In-Docker(DIND)**场景。本文简单原创 2020-08-14 17:39:30 · 977 阅读 · 0 评论 -
Jenkins Pipeline 手记(4)—— 远程Powershell权限困局
背景在Jenkins Pipeline里面,我们经常会使用powershell脚本执行一些必要操作,比如Build项目、部署Service、配置网络等等。有时候我们还需要进行远程的操作,比如当目标机器是另一台虚拟机,或者是一个K8S的节点。本文探讨一个在远程执行powershell命令时遇到的小问题。问题重现我的项目里有一个需求是,将build出来的service部署到远端的server上。部署的过程其实就是文件拷贝的过程,在部署前需要调用Get-Service 判断service是否存在,以及用St原创 2020-07-28 14:59:03 · 893 阅读 · 0 评论 -
Jenkins Pipeline 手记(3)—— 自定义Checkout的陷阱
引言最近在pipeline中checkout代码时遇到了无法序列化的问题。这个问题只在特定的场景下能重现,虽然影响不大,但如果深入研究一下,可以加深对Jenkins Pipeline的理解。问题我们知道,在使用Multi-branch pipeline时,可以在job的配置中指定源代码的来源,如git url,credentials,clone options,submodule options等等。然后在pipeline中,可以直接调用:checkout scm下载代码。这个scm对象对象由J原创 2020-07-27 18:11:48 · 12693 阅读 · 1 评论 -
Jenkins Pipeline 手记(2)—— 调试小技巧
引言最近的工作中使用Jenkins进行CI的开发和维护,经常需要调试写好的Jenkinsfile。然而,每次小的改动都需要提交代码,然后push到远端,Jenkins master读取新版本的Jenkinsfile,查看效果。这样做一来比较麻烦,尤其是频繁改动或者加一些测试代码的时候。另外,有一些feature branch是大家共同开发维护的,经常提交改动会触发不必要的job build,浪...原创 2020-05-01 14:42:42 · 2351 阅读 · 0 评论 -
Jenkins Pipeline 手记(1)—— 什么是CPS编程
引言最近在工作中使用Jenkins进行持续集成任务,遇到这样一个问题:java.io.NotSerializableException: java.util.regex.Matcher经过调查发现这是Jenkins的CPS插件报出的,原因是在使用正则表达式相关操作的函数时,代码写法不规范,导致不能序列化。那么什么是CPS呢, Jenkins为什么又需要做序列化的操作呢?什么是CPS在函...原创 2020-04-10 09:00:37 · 2421 阅读 · 0 评论 -
《持续交付》(六)总结
引言本文是《持续交付》一书学习总结的最后一篇。主要内容是结合实际中的一些工具和实践,对持续交付这个话题做个总结。总结:工具和实践持续交付的核心是构建一个部署流水线,这个流水线起始于源代码,终止于用户界面,并长期地、反复地、持续地运行。我们采用持续交付的目的是,更加频繁地发布软件中最新的改动,增加产品迭代的次数,在适应快节奏需求的同时,保证产品的质量。对于源代码管理,我在项目中经常使用Gi...原创 2020-04-10 08:42:35 · 398 阅读 · 0 评论 -
《持续交付》(五)数据管理与版本控制实践
引言本文是《持续交付》一书学习总结的第五篇。主要内容涉及数据管理以及Git分支管理的实践。数据管理软件代码的部署可以简单地用新的版本替换旧的版本,但是数据可不是如此。自从产品上线后,数据就一直在增长,每个版本发布时,数据可能都是全新的。然而,有时我们的确有这样的需求,去改数据的结构或者内容。这就要求我们在做出修改的同时,保证产品运行和部署的可靠性。首先,数据库的部署也需要脚本化。与代码部...原创 2020-04-10 08:39:29 · 418 阅读 · 0 评论 -
《持续交付》(四)部署发布与基础架构管理
引言本文是《持续交付》一书学习总结的第四篇。主要内容涉及部署发布和基础架构管理的实践。部署和发布(一)这次我们来看看软件持续交付的最后一个步骤:部署和发布。在项目开始的时候,我们就要想好软件最终发布时要面临的问题,以此制定发布计划和策略。要考虑的问题包括但不限于:确定部署需要的技术。比如基于Azure平台的应用,部署时就需要微软的Powershell脚本来实现自动化。如何实现部署流...原创 2020-04-09 10:42:00 · 636 阅读 · 0 评论 -
《持续交付》(三)部署流水线与构建脚本
引言本文是《持续交付》一书学习总结的第三篇。主要内容涉及部署流线和部署脚本的设计实践。部署流水线(一)要实现持续交付,一般会定义一条部署流水线(deployment pipeline)。我们之前讨论过的持续集成过程,就是这个流水线的一部分。总的来说,部署流水线就是一套将代码从版本控制工具最终交付到用户手中的自动化流程。我们在前面看到了自动化的持续集成,以及验收测试。除此之外,部署...原创 2020-04-09 10:40:49 · 1484 阅读 · 0 评论 -
《持续交付》(二)持续集成与测试
引言本文是《持续交付》一书学习总结的第二篇。主要内容涉及持续集成以及持续交付中的测试实践。持续集成(一)关于持续集成(CI),我想程序员朋友都很熟悉了,现在很少有项目不采用持续集成了。我们来看一下其中的原则和实践。持续集成要达到的目的是,每当有开发者提交了改动,整个应用程序需要重新构建,并运行足够广泛的测试来保证质量,以使得应用程序始终处于能够正常工作的状态。一个典型的CI过程如图所示。...原创 2020-04-09 10:39:10 · 921 阅读 · 0 评论 -
《持续交付》(一)概念与配置管理
引言最近一段时间阅读了《持续交付》这本书,打算用几篇文章的篇幅总结一下阅读的收获。此为第一篇。我看的是英文原版的,书名是 Continuous Delivery,作者是 Jez Humble,由人民邮电出版社出版。概念:持续交付软件交付,就是软件从源代码形态到最终形成可交付的软件产品,并发布给用户的过程。那持续交付(Continuous Delivery)是什么意思呢?你可能听过持续集成(...原创 2020-04-09 10:36:36 · 722 阅读 · 0 评论