
Jenkins
Chai Yingchao
心态有多开放,视野就有多宽广
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Jenkins 部署jar包到服务器并启动后的乱码问题
在java命令中加 参数 -Dfile.encoding=UTF-8export LANG=zh_CN.UTF-8; 是为了解决应用输出的日志中有乱码的问题。export LANG=zh_CN.UTF-8; nohup java -Dfile.encoding=UTF-8-jar test-1.0.0.jar --spring.profiles.active=dev > /dev/null 2>&1 &'...原创 2022-04-12 18:08:54 · 1268 阅读 · 0 评论 -
Jenkins pipeline中git push上传
git下载比较简单,不做介绍了。这里只介绍上传。首先需要创建一个username password类型的credentialspipeline内容 stage('test') { steps { script{ //使用 wrap([$class: 'BuildUser']) 是可以取出build用户信息你 wrap([$class: 'BuildUser']) { withCredentials([usernamePassword(cred原创 2022-01-18 13:17:31 · 2718 阅读 · 1 评论 -
jenkins pipeline 发邮件插件emailext 向body中传变量
pipeline { agent {label 'java'} environment { projectStatus = sh(script: "echo `date -Iseconds`", returnStdout: true).trim() } stages { stage('Test') { steps { writeFile file: 'env.properties', text: "projectStatus=${projectSt原创 2021-12-01 16:07:13 · 2821 阅读 · 0 评论 -
Jenkins pipeline 中读取yaml文件内容
server.yml文件内容serverConfig: name: test servers: ################### # Test Environment # ################### - deploymentName: test environment: release/test address: 192.168.0.2 dir: /tmp/apps ################## #原创 2021-11-09 15:51:46 · 3647 阅读 · 0 评论 -
Jenkins pipeline 中使用curl传json和credentials如何使用
这里主要是注意json用单引号括起来,json内的双引号需要用反斜线\转义pipeline { agent { label 'java' } options{ timeout(time:1,unit: 'HOURS') skipStagesAfterUnstable() disableConcurrentBuilds() buildDiscarder(logRotator(numToKeepStr: '70')) ti原创 2021-10-29 14:39:09 · 2094 阅读 · 0 评论 -
Jenkins parameters 在pipeline中的shell中使用
parameters中的参数在sh中是无法直接读取的。所以先通过environment读取,再在sh中使用。pipeline { agent { label 'java' } parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') } environment { unit_test = "$param原创 2021-10-26 09:32:09 · 2041 阅读 · 0 评论 -
maven+jacoco+sonarqube显示单元测试覆盖率
首先pom.xml中需要引入jacoco依赖<build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.8</version>原创 2021-08-10 13:07:21 · 1621 阅读 · 0 评论 -
Jenkins pipeline 中按行读文件
按行读文件pipeline { agent {label 'test'} stages { stage ("read file line"){ steps{ script { def data = readFile(file: 'Jenkins/services.csv') println(data) //按行读取 def lines = data.readLines()原创 2021-07-21 22:00:13 · 3708 阅读 · 2 评论 -
Jenkins Pipeline使用File parameter上传文件并保存到workspace
Jenkins Pipeline直接使用File parameter,无法将文件上传到当前job的workspace下面,需要通过调用第三方jenkinsci-unstashParam-library库实现,方法如下:sharedlibraries地址:https://github.com/janvrany/jenkinsci-unstashParam-library将vars目录放置在你自己定义的sharedlibraries git库的跟目录,如果已有vars目录,就将源码文件放置到vars目录。原创 2021-06-22 11:04:46 · 6678 阅读 · 9 评论 -
Jenkins pipeline 强制失败
steps { script { error "This pipeline stops here!" }} Jenkins job console outputERROR: This pipeline stops here!Finished: FAILURE原创 2021-05-13 21:58:08 · 1398 阅读 · 0 评论 -
在jenkins pipeline/docker jenkins中使用bash shell
某些情况,如jenkins的docker 镜像中,或者在pipeline中,默认的shell不是bash shell。可能是sh,或者其它shell。这有时候可能会导致有些shell命令不能被执行,如if 语句的双中括号 [[,还有数学计算。那我们就需要将shell切换成bash shell。在pipleine中可以这样写stage('Test Shell') { steps { sh '''#!/bin/bash echo $SHELL原创 2021-05-07 22:35:59 · 2228 阅读 · 0 评论 -
Jenkins 环境变量的作用范围及设置与获取,包括在Sharedlibraries与pipelin之间的传递
首先要注意的是单引号,双引号,3单引号,3双引号的使用区别。用def 在某个stage内定义的变量,仅在这个stage内有效。要想定义的变量在每个stage内都有效,就在pipeline首部定义全局变量。可以在任意stage修改这个全局变量,使用时需要使用双引号或者3双引号才行。使用单引号或者3单引号是不行的。示例见文末。1 Jenkins内置的环境变量Jenkins环境变量是通过env变量公开的全局变量,可以在Jenkins文件中的任何位置使用。存储在env变量中的任何值都存储为字符串类型。.原创 2021-04-29 10:45:11 · 9109 阅读 · 4 评论 -
Jenkins时区设置
Manage Jenkins ->Script Console运行如下命令System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')原创 2020-11-20 10:29:43 · 433 阅读 · 0 评论 -
Jenkins 配置agent环境变量的方法
1是直接在agent上配置2是在manage jenkins中配置manage Jenkins ->Config System -> Global properties 中Environment variables可以配置jenkins agent的环境变量,相当于在agent 中配置/etc/profile,如果同时在agent(包括docker类的agent)和这里配置了同名环境变量。则这里的会覆盖agent上的同名环境变量。...原创 2020-10-30 11:04:17 · 1667 阅读 · 0 评论 -
Jenkins 插件之HTTP Request Plugin
在使用Jenkins时经常需要通过http请求去操作service API。有几种办法可以实现,简单的两种包括通过curl命令和HTTP Request Plugin插件。今天介绍HTTP Request Plugin插件的使用。HTTP Request Plugin插件地址直接在pipeline中使用参照这个文档配合sharedlibraries使用src/org/devops/gitlab.groovypackage org.devops //封装HTTP请求def HttpReq(re原创 2020-09-09 15:19:51 · 4004 阅读 · 0 评论 -
Jenkins插件之AnsiColor 在彩色打印消息到控制台
插件地址一. 在pipeline中直接使用pipeline { agent any options { ansiColor('xterm') } stages { stage('Build') { steps { echo '\033[34mHello\033[0m \033[33mcolorful\033[0m \033[35mworld!\033[0m' }原创 2020-09-09 15:06:40 · 1706 阅读 · 1 评论 -
Role+Strategy+Plugin Jenkins收回用户权限API
/**API method to unassign group/user with a roleExample: curl -X POST localhost:8080/role-strategy/strategy/unassignRole --data “type=globalRoles&roleName=AMD&sid=USERSID”@param type (globalRoles, projectRoles, slaveRoles)@param roleName unas原创 2020-09-08 17:03:18 · 526 阅读 · 2 评论 -
jenkins agent 运行在kubernetes集群
使用 Jenkins Kubernetes Plugin创建PVC(可选)如果你的jekins agent需要持久化存储,可以通过创建PVC或者其它如hostpath方式实现。我的case中使用持久化存储作为maven仓库缓存,以避免每次都去中央仓库下载编译依赖。nfs-client是storageclass:的name,这里我使用了StorageClass作为动态存储kubectl create namespace jenkinskubeclt -n jenkins create -f jenk原创 2020-06-19 09:19:57 · 1786 阅读 · 0 评论 -
使用helm 在kubernetes集群上安装jenkins
#添加helm repo(使用bitnami源,使用stable/jenkins部署pod一直在init状态)helm repo add bitnami https://charts.bitnami.com/bitnami如果使用默认安装执行helm install jenkins bitnami/jenkins -n jenkins如果要自定义安装可以将repo下载然后修改value.yaml再安装,我选择使用这种方式。修改完value.yaml后执行安装命令。等待几分钟查看jenkinspo原创 2020-06-11 15:52:43 · 713 阅读 · 0 评论 -
Jenkins定时构建时间设置
每隔5分钟构建一次H/5 * * * *每两小时构建一次H H/2 * * *每天中午12点定时构建一次H 12 * * *每天下午18点定时构建一次H 18 * * *在每个小时的前半个小时内的每10分钟H(0-29)/10 * * * *每两小时45分钟,从上午9:45开始,每天下午3:45结束9-16/2 * * 1-5每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)H H(9-16)/2 * * 1-5..原创 2020-05-15 15:42:15 · 7338 阅读 · 0 评论 -
Jenkins 发送带附件的邮件pipeline写法
jenkins pipeline stage('email Alex!'){ steps{ emailext( body: 'your component is released', attachmentsPattern: '**/1.txt', from: '[email protected]', replyTo: '[email protected]', subject:原创 2020-05-13 09:38:13 · 3298 阅读 · 0 评论 -
Jenkins Pipeline:使用Git Parameter Plugin 实现参数化构建时选择分支和Tag
Plugin:Git parameterImportant:If you need use other type (other then branch) parameter, you must use git within checkoutImportant settings:It should be set a default value because initial build ...原创 2020-03-15 09:28:15 · 14362 阅读 · 0 评论 -
Jenkins Slave in Docker (Docker in Docker)
场景描述当我们将jenkins slave运行在docker中时,有时也需要在slave上执行docker build/push等docker命令,这就需要使用到docker in docker。有两个工作要做在build slave image时安装docker依赖#apt-get install -y libltdl7挂载/var/run/docker.sock和/usr/b...原创 2020-01-16 10:44:16 · 1786 阅读 · 0 评论 -
Jenkins 多种插件ssh连接远程服务器的环境变量问题
示例pipeline如下: steps { sshPublisher(publishers: [ sshPublisherDesc( configName: server01, transfers:[ sshTransfer( ...原创 2019-12-16 16:42:50 · 4120 阅读 · 3 评论 -
Jenkins pipeline 中转义反斜线和$符号
有时在使用文件名,用户名等参数时需要转义反斜线和$符号,语法如下: script { String ftp_username = env.ftpusername #转义反斜线 ftp_username = ftp_username.replaceAll('\\\\','\\\\\\\\') #转义$符号...原创 2019-12-10 12:06:37 · 4894 阅读 · 1 评论 -
Jenkins parameters trigger pipeline plugin 一个pipeline触发另外pipeline并传递参数
使用插件:parameters trigger pipeline plugin传参数pipeline:pipeline { agent {label 'java'} environment { branch = 'release/1.0' module = 'demo' } stages { stage ('Pull...原创 2019-12-05 11:13:44 · 2368 阅读 · 2 评论 -
Jenkins 去掉pipeline中shell命令的调试信息
在Jenkins的Console Output中有时会看到‘+’开头的shell命令调试信息,看起来比较混乱。原因是Jenkins默认用‘-xe’的选项去运行‘sh’命令。例如如下pipeline会产生后续的输出。pipeline { agent none stages { stage('Example') { steps { ...原创 2019-12-05 10:41:55 · 2908 阅读 · 1 评论 -
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
上一篇文章介绍了Jenkins 多分支类型pipeline与Bitbucket Branch source 插件集成的配置 Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (一)本篇文章是开发流程的一个case,也可以看成这个插件的一个最佳实践。Git分支策略:GitLab Flow本case使用GitLab Flow...原创 2019-10-21 16:11:06 · 1209 阅读 · 0 评论 -
Pull request 不支持排除某个文件的解决办法
Pull request 是不支持排除某个文件的。但有时候又需要排除某个文件,例如,包含数据库配置的项目配置文件,不同分支对应不同环境,连接的数据库信息也不同。网上能搜到一些解决办法(如下),但是比较复杂:You can’t ignore some files from a pull request selectively. Two workarounds for this can be -...原创 2019-10-18 14:39:48 · 955 阅读 · 0 评论 -
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (一)
Pipeline Multibranch Plugin此插件实现:当有新分支被推送到代码库,就会在jenkins中自动创建与分支对应的job。Bitbucket Branch Source Plugin此插件允许你用Bitbucket Cloud 或者Bitbucket server作为多分支project的源码库。具体有两种方法:单个仓库源: 监测指定的源码仓库,为分支和pull r...原创 2019-10-17 15:24:59 · 2044 阅读 · 0 评论 -
Jenkinsfile中 when语句的内置条件以及使用脚本方式判断
例1stage('Master Branch Tasks') { when { branch "master" } steps { sh '''#!/bin/bash -l Do some stuff here ''' }}例2 (not)...原创 2019-10-17 14:51:17 · 5468 阅读 · 0 评论 -
Jenkins build之后清理workspace
disableDeferredWipeout: true, 这个选项是关闭延时删除,立即删除。 stage('Clean') { steps { cleanWs( cleanWhenAborted: true, cleanWhenFailure: true, cleanWhenNotBuilt: true, ...原创 2019-02-27 13:51:19 · 7441 阅读 · 0 评论 -
Jenkins pipeline 中循环读取参数中的逗号分隔的字符串
Jenkins pipeline 中循环读取参数。应用场景:部署的目标服务器是可选的,如将构建结果,只部署到web-server-01服务器,或者同时部署web-server-01服务器和web-server-02服务器。实现步骤:第一步, 项目中选择“This project is parameterized”,参数类型选Choice Parameter。为用户提供下拉框,name为参...原创 2019-03-06 13:38:04 · 12286 阅读 · 0 评论 -
【转】Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
一、可用环境变量列表(以下来自google翻译):BRANCH_NAME对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从master而不是从特征分支部署到生产。CHANGE_ID对于与某种更改请求相对应的多分支项目,这将被设置为更改ID,例如拉取请求号。CHANGE_URL对于与某种更改请求相对应的多分支项目,这将被设置为更改URL。CHANGE_TITLE对于...原创 2018-11-26 08:27:29 · 453 阅读 · 0 评论 -
Jenkins pipeline 避免使用明文密码的方法
在Jenkins pipeline中,有时需要带用户名密码执行命令,如docker login,将用户名密码以明文方式放到pipeline中显然是不安全的。这时可以通过credential插件实现。下面介绍具体方法:第一步 安装Jenkins插件在Jenkins中安装 ‘Credentials Plugin’插件。第二步 配置用户名密码“Jenkins” -&amp;gt; “Credential...原创 2018-11-08 15:14:09 · 12779 阅读 · 0 评论 -
Docker in Docker
场景:jenkins slave运行在基于openshift或k8s的容器中,构建过程需要build 应用程序的docker image并push到docker 仓库,此时就需要docker命令。安装docker命令比较简单,但是运行docker build 命令需要启动docker服务。docker in docker 基本上有两种实现方式。一是挂载/var/run/docker.so...原创 2018-11-13 15:34:38 · 970 阅读 · 0 评论 -
DevOps 与 容器
Kubernetes Plugin of Jenkins原创 2018-11-04 15:47:50 · 366 阅读 · 0 评论 -
Bitbucket webhook触发Jenkins构建和curl触发Jenkins构建
持续集成时经常需要代码提交自动触发构建流水线。GitLab,svn,Bitbucket 都支持通过webhook方式触发jenkins构建。Jenkins甚至可以直接生成一个URL,使用curl命令访问URL即可触发。今天介绍一下Bitbucket触发Jenkins构建和curl命令触发构建的方法。使用curl命令触发Jenkins构建在项目的Build Triggers中勾选"Tri...原创 2018-11-09 15:42:05 · 3902 阅读 · 1 评论 -
Jenkins在目标服务器执行shell命令配置
Jenkins 服务器要在目标服务器执行命令(这里我们以Aserver代表目标服务器),首先需要配置ssh互信,在jenkins服务器执行ssh-keygen -f /root/.ssh/id_rsa -N ''生成密钥。然后执行ssh-copy-id -i ~/.ssh/id_rsa.pub Aserver 命令将密钥copy到Aserver。然后就可以在pipeline中通过ssh在远程服务...原创 2018-10-24 15:58:56 · 2901 阅读 · 0 评论 -
Jenkins 运行权限问题
yum安装的Jenkins 配置文件默认位置/etc/sysconfig/jenkins默认jenkins服务以jenkins用户运行,这时在jenkins执行ant脚本时可能会发生没有权限删除目录,覆盖文件等情况。可以让jenkins以root用户运行来解决这个问题。1.将jenkins账号分别加入到root组中gpasswd -a root jenkins2.修改/etc/syscon...原创 2018-10-24 15:56:06 · 8615 阅读 · 5 评论