前言 Docker 与 Jenkins 经常会放到一起构建 CI (持续集成)系统 这里结合Docker Registry 分享一下在Docker中构建 Jenkins 容器的相关操作,详细可以参阅 官方文档...Tip: 当前的最新版本为 Docker 1.10 Released on January 15, 2016 ---- 概要 ---- 自定义Jenkins镜像 准备构建环境 在构建环境中准备相应的证书文件和插件信息...27 13:52 docker.key -rw-r--r-- 1 root root 20 Jan 27 13:51 plugins [root@docker build]# Tip: 这里我使用的自签名证书
通过镜像运行容器 [root@h104 ~]# docker run -p 1973:1973 --name jenkins01 docker:5000/ci/jnkns-img Running from...: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") Jan 27, 2016 1:27..._main(Main.java:293) at Main.main(Main.java:98) Caused by: java.io.FileNotFoundException: /var/lib/jenkins
再次构建,构建前要使用 docker rm 删掉之前构建失败的容器,或者新容器换个名字,否则会有冲突 [root@h104 ~]# docker run -p 8080:8080 --name jenkins01...docker:5000/ci/jnkns-img2 Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get...("JENKINS_HOME") Jan 27, 2016 1:45:57 PM winstone.Logger logInternal INFO: Beginning extraction from...home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") Jan 27, 2016 1...all plugins Jan 27, 2016 1:46:20 PM jenkins.InitReactorRunner$1 onAttained INFO: Started all plugins
报错 出现了报错 通过官方的文档,和docker hub中的说明没有找到根本原因 通过google,有人使用keystore解决了这个bug 暂时不使用https,降级构建Dockerfile (去掉https...会丢失安全性,之后再回头慢慢研究原因) 注释掉https的相关配置,然后再构建镜像 [root@docker build]# vim Dockerfile [root@docker build]# cat...Dockerfile FROM jenkins #New plugins must be placed in the plugins file COPY plugins /usr/share/jenkins.../var/lib/jenkins/pk #Configure HTTP off and HTTPS on, using port 1973 #ENV JENKINS_OPTS --httpPort=...-1 --httpsPort=1973 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk [
拉取镜像 可以使用其它的机器通过 docker pull 来测试一下上传的镜像 [root@h104 certs]# docker pull docker:5000/ci/jnkns-img Using...localhost:5000/ubuntu latest 8693db7e8a00 7 days ago 187.9 MB jenkins
/bin/tini -- /usr/lo" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins01...tcp6 0 0 :::8080 :::* LISTEN [root@h104 ~]# ---- 访问Jenkins...通过下面步骤进入已安装插件列表 [系统管理]->[管理插件]->[已安装] 可以看到 Role-based Authorization Strategy 插件,版本和我们指定的一样 [root@docker...docker push docker:5000/ci/jnkns-img docker pull docker:5000/ci/jnkns-img docker run -p 1973:1973 --name jenkins01...jnkns-img docker:5000/ci/jnkns-img2 docker push docker:5000/ci/jnkns-img2 docker run -p 8080:8080 --name jenkins01
613ef35ff2fff0a26bab66dd9213463b034d4e536e9a6d52cbaeacb767fdf828 size: 87506 [root@docker certs]# 推送过程中要注意的地方...: 确保Registry地址没错,如果有问题可以使用 docker tag 来调整 确保有证书,如果没有,要先导入,然后重启docker 确保进行了基础认证,如果没有要进行认证(在没有基础认证的Registry...中不必关心这一点)
创建Dockerfile [root@docker build]# vim Dockerfile [root@docker build]# cat Dockerfile FROM jenkins #...key and cert to image COPY docker.crt /var/lib/jenkins/cert COPY docker.key /var/lib/jenkins/pk #Configure...=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk [root@docker build]# ll total 20 -rw---...docker build]# Note: Dockerfile plugins 还有两个证书文件 (docker.crt and docker.key) 必须在同一个目录里,包含 Dockerfile 的目录叫作构建环境...,文件只有放在构建环境中才能在构建过程中被集成进去
构建镜像 [root@docker build]# docker build -t ci-infrastructure/jnkns-img ....Sending build context to Docker daemon 9.728 kB Step 1 : FROM jenkins ---> fc39417bd5fb Step 2 : COPY...plugins /usr/share/jenkins/plugins ---> 0139ec49d08d Removing intermediate container a9f6f1ead720 Step...3 : RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins ---> Running in 1cab523a28c9 Downloading...=-1 --httpsPort=1973 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk
这篇文章详细的记录了在 ubuntu 中安装 Jenkins 的一步又一步,因为找了很多 Linux 下安装 Jenkins 的教程,不是很满意 所以决定自己写一篇以备后用(终于让我找到了Java...8080 开放指定端口 ps:在腾讯云的主机中默认防火墙是关闭的(sudo ufw status查看) Jenkins的配置 至此,可以通过 http://ip:8080 访问 Jenkins 了,.../bin/bash -ilex,此为我安装 nvm 后在终端可以访问, Jenkins 构建 shell 脚本时无法访问的解决方案 通过-i 参数和-l 参数让 bash 为 login shell...总结 在使用过程中,还有很多需要记录的,后续再逐步总结。...最近十分不容易的用Jenkins+Docker把项目部署到服务器了,在找资料的过程中,发现很难一下就找到自己想要的,果然,还是得自己动手总结了。
日常编写pipeline的时候,有时候会遇到针对参数作出处理(联动,校验值格式等)。一开始想到的是能不能针对build按钮作出改变,比如我在提交的时候校验下参数是否填写,是否符合要求。...但是那样就需要修改 jenkins 源码,针对 build 按钮作逻辑判断。考虑到这不是简单的功能,而且有可能会破坏原有的设计,并且没有大量的测试覆盖的话,出现幺蛾子的概率很大,所以最终还是放弃了。...还有位同学提出job开始做出判断,但是这种不好的地方在于用户在触发job后,必须到log中才能看到失败的原因,而且这种做法比较被动,易产生大量的error记录,不友好。 ?...思考再三,加上看到 Jenkins 官网上有个属性是: ? 决定尝试一下。这个属性的作用是可以根据依赖控件选择的值,返还本控件用户期望的值。...综上,通过这种方式能达到原先得需求,但是本身使用起来还是有点瑕疵的,比如它的提示和容错能力还是存在问题的(需要将不同flow的参数都要列举在页面,容易迷惑用户)。
简介 都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,刚开始的时候大家谁都不必在意,毕竟一次构建比原项目也大不了多少,所以说没有人会关心磁盘的占用问题。...但是随着时间的推移,要构建的项目越来越多,而构建的历史版本同样也越来越多,这过多的项目外加每个项目的过多的版本,其最终的结果就是磁盘被占用的空间越来越大,直至磁盘空间被占用完为止,最终可怕的结果可想而知...配置 1.在【配置】页面中,将页面向下拉,找到【丢弃旧的构建】复选框,选中该复选框,在显示出的【丢弃旧的构建】面板中,点击右下角的【高级】按钮 2.在这里我们需要填写自定义的丢弃旧的构建设置,这里我们将...“保持构建的天数”以及“发布包保留天数”均设置为7天,将“保持构建的最大个数”设置为10条,而我们每次取用jar包或war包时都只想获取最新版本,所以说我们这里只保存最新版的软件版本信息,因而在“发布包最大保留...#个构建”中填写1,填写完之后,点击【保存】按钮即可使新的设置生效。
1.Jenkins配置 实现动态生成的Slave节点并调用,解决构建项目出现slave节点任务堵塞或者是slave宕机问题。容器平台采用openshift。...35851 jnlp配置: 2.Kubernetes配置 名称: 默认使用Kubernetes即可 Kubernetes地址: 填写paas平台地址 Kubernetes证书: 填写paas平台中名称空间中的jenkins...的secret中的token,选择ca.crt内容。...Kubernetes命名空间: 填写jenkins的项目空间 。 凭据: 通证书一样的获取方式,只不过获取的不再试ca.crt内容,而是token。...复制创建jenkins的凭据,凭据选择secret text格式。 3.JenkinsSlave Dockerfile 4.Jenkins slave 启动脚本 ?
是的,我的意思是对于 Jenkins 完全可复制的配置,以及基础架构、插件、凭据、任务以及代码中的其他东西。另外,这篇文章你将解惑下面的疑问: 我们的 Jenkins 已经变得更加稳定了吗?...AMI 由完美集成了 Terraform 和 Vault 的 Packer 构建。...我们之前在升级 Jenkins 插件时遇到了很多问题,所以主要目标就是为它们固定版本。 这个时候 Docker 帮了我们大忙。我们使用事先构建好的 Jenkins 镜像用它作为我们安装的基础镜像。.... └── job2.sh 这里,我们可以在一个 Job1.yaml 的文件里描述任务的定义,任务步骤在脚本中(比如 job1.sh)。...conf config.ini test -r jobs/ $ jenkins-jobs --conf config.ini update -r jobs/ 在 jenkins 任务升级命令中它应该会被很轻松的运行
在《不断进化的分支和需求管理》一文的最后提到会引入 release 分支和 tag,实际也这么做了,但效果并不理想,原因是执行的不严格,没有做到位,具体原因如下: 发布时是对分支进行构建发布,发布后再在...实际操作 原来在 jenkins 中对分支进行发布,需要设置特定的分支,现在需要对 tag 进行发布,tag 是不断进行创建的,就需要用到 jenkisn 的参数化功能。...jenkins 的参数化需要用到 Git Parameter 插件,可以在 jenkins 的插件管理界面中直接安装,如果安装失败,可以在这个地址进行下载:http://mirror.xmission.com...设置完成后,可以看到在构建界面中由原来的 Build Now 变成了 Build with Parameters 。 ?...按照 tag 进行构建搞定后,剩下就是需要在构建脚本中获取到最新的 tag 名称,并作为参数设置到容器的环境变量和镜像的 tag 中: 首先进入到 jenkins 配置的程序目录,使用 git describe
目录: (1).准备jenkinsfile (2).创建测试任务完成构建 (3).参考资料 (1).准备jenkinsfile 先要开一个git工程存放jenkinsfile,我在码云上建了个工程: https...def label = "jenkinsfile-pod-template" #cloud:是之前文章中在jenkins中配置的k8s-cloud的名称。...test-just-test'){ container('just-test'){ echo 'hello, I am just-test container.' } } } } (2).创建测试任务完成构建...脚本路径是jenkinsfile在git中的路径。 然后执行构建:发现报错。 因为没有给node打标签,podTemplate中的nodeSelector找不到可以执行的节点。...kubectl label nodes future jenkins-jnlp=yes 再次执行构建,OK。
大家好,又见面了,我是你们的朋友全栈君。...前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository...URL 代码仓库地址 Credentials git仓库登陆的账号和密码凭证 指定分支(为空时代表any)分支默认*/master 构建shell脚本 执行shell,先pip3安装requirements.txt...root@3be4b6cd9b8c]# pytest --version pytest 6.2.1 构建job 上面需要的环境都安装完成后,执行shell的时候,直接输入pytest命令就可以执行自动化的脚本了...构建成功 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165898.html原文链接:https://javaforall.cn
缓存是现代应用服务器中非常常用的组件。除了第三方缓存以外,我们通常也需要在java中构建内部使用的缓存。那么怎么才能构建一个高效的缓存呢? 本文将会一步步的进行揭秘。...使用HashMap 缓存通常的用法就是构建一个内存中使用的Map,在做一个长时间的操作比如计算之前,先在Map中查询一下计算的结果是否存在,如果不存在的话再执行计算操作。...calculate方法中,实际上调用了封装的Calculator的calculate方法。...虽然这样的设计能够保证程序的正确执行,但是每次只允许一个线程执行calculate操作,其他调用calculate方法的线程将会被阻塞,在多线程的执行环境中这会严重影响速度。...,但是当有两个线程同时在进行同一个计算的时候,仍然不能保证缓存重用,这时候两个线程都会分别调用计算方法,从而导致重复计算。
pipeline中的全局变量,默认是不支持获取当前构建任务的构建人的,要想获取构建人的信息,只能通过插件来帮助我们获取 插件:build-user-vars-plugin 插件下载地址:https://...github.com/jenkinsci/build-user-vars-plugin 下载插件的源码 wget https://github.com/jenkinsci/build-user-vars-plugin.../archive/build-user-vars-plugin-1.5.zip 打包构建` ` 进入到解压后的插件目录中 执行mvn打包命令 mvn install 打包完成后,会生成一个target目录...,目录中会生成一个build-user-vars-plugin.hpi文件,然后拿到这个.hpi结尾的文件后,jenkins上手动上传插件即可 结合pipeline 声明式语法的写法 pipeline
简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构建java项目。今天本文将会详细的讲解如何在gradle中构建java项目。...构建java项目的两大插件 安装java项目的目的不同,构建java项目有两大插件,一个是application,表示构建的是java应用程序;一个是java-library,表示构建的是java库,供别的项目使用...两者在build.gradle中的不同在于plugins的不同,application的plugin是: plugins { id 'application' } 而library的plugin...在构建libary的时候,还可以自定义manifest的信息: tasks.named('jar') { manifest { attributes('Implementation-Title...我们需要将这些配置文件拷贝到特定的目标目录中。 默认情况下,gradle会拷贝src/[sourceSet]/resources 中的文件到目标文件夹中。
领取专属 10元无门槛券
手把手带您无忧上云