j.hudson&co_hudson正式更名为jenkins
1.如何设置jenkins服务器环境变量
2.持续集成Hudson/jenkins 能不能根据不同权限组显示不同 job
3.Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
4.,请问hudson中的插件在哪下载呀?比如findbugs,checkstyle,emma,clover和cobertura。
5.怎样设置Jenkins使之能通过Gitlab上的权限认证
6.如何修改jenkins配置权限
如何用Jenkins/Hudson创建真正的pipeline
这几天尝试用Jenkins/Hudson创建pipeline,发现网上的信息很少,所以写一篇跟大家分享。
在开始之前,得告诉你被我的标题给忽悠了,不是Jenkins/Hudson,只是Jenkins!如果你还在用Hudson,那么我建议你立即切换到Jenkins。理由就不说了,看看这个投票就行。(此中,我吃尽了苦头)
接下来,就让我们一步一步用Jenkins搭建真正的pipeline吧。
第一步
第一步,我们先创建一个最简单的pipeline。所谓pipeline,顾名思义,就是一个流水线,由多个步骤(steps)组成。每走完一步,就来到下一步。用Build Pipeline Plugin就可以很方便地实现。
实现的效果如下图:
上例中,UnitTest是我们的初始任务。UnitTest结束之后,自动触发AC Test。如果通过了AC Test,团队可以有选择地部署到任意测试环境。
在配置这个插件时,最重要的就是选择Initial Job。
然后,在每一个step(job)中选择downstream step。可以是自动触发(Build Other Projects),也可以选择手动触发(Manually Execute Downstream Project)。
第二步
第一步中我们实现了一个流水线,但这个只是看上去的流水线而已。在工厂的流水线中,历经流水线上游到下游的,应该是同一个产品。但上例中显然不是,Unit Test和Acceptance Test所运行的可能是不同版本的代码。
要让几个step的代码运行在同一个版本,可以使用一个叫做Parameterized Trigger Plugin。如下图:
选择把Subversion revision传到下面的steps,则接下来的Steps都会checkout同一个版本的代码。但这个也有限制,就是这些Steps必须有相同的subversion URL配置。
另外,你应该还注意到我们还传了另一个参数:PL_BUILD_NUMBER。这个参数会另有用途。
除了希望保持相同版本,我们很可能希望重用upstream step生成的artifact。比如,在AC Test step会生成一些artifacts,这些artifacts经过测试之后,希望可以用于Deploy步骤。一方面,这会节省重新构建artifact的时间;另一方面,这些artifact是已经经过测试的,是可用的,而重新构建生成的却是未经测试的,可用与否未知。(虽然他们应该是一样的,但谁知道呢。。)我们可以使用ArtifactDepolyerPlugin实现。
如何设置jenkins服务器环境变量
由KohsukeKawaguchi打造的Jenkins(最初被称作Hudson)Devops工具,转眼已经过去了十个年头。在Oracle/Sun收购引发的分叉之前,用Java编写的该平台在持续集成和交付领域相当受欢迎。最新消息是,Jenkins项目组刚刚表示,本周的2.357和即将于9月到来的LTS版本,都将需要在Java11的基础上运行。
虽然JenkinsLTS核心支持Java11已有一段时间,但作为一个“长期支持版本”(LTS),Java11本身已可追溯到2018年。
此外作为向2014年发布的Java8告别的一部分(供应商将持续支持到2030年),六月LTS也已经支持Java17(JavaSE的最新LTS)。
Jenkins团队指出,虽然项目会在可预见的一段时间内保留在Java8上,但这么做将是不够严谨的。
毕竟Jenkins使用的多个第三方库,都依赖于更高的Java版本,因而坚持使用Java8会导致上游项目的更新变得更少。
问题在于,从Java8/9向更高版本的转变,同时也会给诸多开发者带来各式各样的挑战——无论是语言/运行时等方面的技术支持、还是法律层面的许可政策问题。
痛定思痛之后,Jenkins最终还是在2018年开启了对Java11的支持工作,并随着本周的发布而正式提出了这一要求。
另外Jenkins也将带来对Java17的全新支持,只是目前尚未抵达可向社区快速推广开来的阶段。
好消息是,未来从Java11向Java17迁移的过程,肯定不会像从Java8向Java11迁移那样痛苦。
持续集成Hudson/jenkins 能不能根据不同权限组显示不同 job
启动Jenkins
1、 安装jdk
从略,建议1.6或以上版本,配置好环境变量。
2、 安装tomcat
从略,安装完调试下tomcat是否正常。
3、 安装ant
下载zip包,解压后配置好环境变量。
4、 安装jenkins
下载war包,命名为Jenkins,拷贝到tomcat/webapps目录下。
5、 安装Android SDK
下载安装,完成后配置好Android_SDK_HOME环境变量。此步骤主要用于进行android自动化测试,若不进行此项可略过。
安装完成后启动tomcat/bin/startup.bat文件(linux下是startup.sh),在浏览器输入http://localhost:8080/jenkins,8080为tomcat端口,即可访问jenkins服务器。
配置Jenkins
1、 JDK配置
新增JDK,指定JDK名字和JAVA_HOME
2、 ANT配置
新增ANT,指定ANT名字和ANT_HOME
3、 Maven配置
从略,本文未使用到Maven,具体配置方法参考Google。
4、 Subversion
选择1.6版本SVN,勾选Update default Subversion credentials cache after successful authentication
5、 邮件通知
填写SMTP server、Default user E-mail suffix、System Admin E-mail Address、Jenkins URL、勾选Use SMTP Authentication,填写User Name、Password、Use SSL、SMTP port、Chareset(UTF-8) 、Default Content Type(默认)、Default Recipients(默认收件人),配置完成后可进行测试邮件。
6、 Jenkins URL
配置该URL,用于别人访问。
插件管理
1、 Hudson Subversion Plug-in,jenkins的svn插件。
2、 Android Emulator Plugin,android模拟器插件。
3、 JUnit Attachments Plugin,junit测试报告附件插件。
4、 Email-ext plugin,邮件扩展插件。此处说明下,默认Jenkins只会发送构建失败的邮件,我们需安装此插件才能自定义不同场景。
5、 Deploy to container Plugin远程发布插件。
自动化测试
打包源工程
Android程序
本小节讲诉如何打包一个Android工程,当前使用的是ant进行编译源码。
1、 首先构建一个自由风格的Job。
2、 添加源码路径,选择所使用的版本控制器,输入源码路径。
3、 构建触发器可根据需要选择是否定时构建。
4、 构建环境,此处Jenkins安装了Android Emulator Plugin插件,可以启动已有模拟器或添加新的模拟器,本文案例中使用真机调试。
5、 构建,卸载手机中原程序 adb –s uninstall com.XXXXXX
6、 生成bulid.xml文件,-p后面跟工程所在的本地jenkins下路径
android update project -n *** c:\被测工程Job路径\workspace
7、 Ant进行编译程序,并安装到当前手机中
ant debug install -f c:\被测工程Job路径\workspace\build.xml
8、 构建后操作,本案例中构建完成后自动启动构建下一个测试Job
Bulid other projects,选择测试工程的Job.
打包测试工程
Android程序
本小节讲诉如何构建一个Android测试工程,包括邮件发送和测试报告展示。
1、 构建步骤1-7和Android程序章节一样,从略。
2、 本文案例中测试程序是通过命令行启动运行的,所以在此处增加一个批处理运行。P.S. adb shell am instrument -w -e class com.megafon.test.MegafonTest#testDeleteContact com.megafon.test/android.test.InstrumentationTestRunner ,此处是通过批处理来单独运行一个个的测试用例。避免了Junit3的无序执行的问题。
3、 删除Workspace中原来存在的测试报告文件,一般不删除也会覆盖。
如何让测试程序生成xml格式的测试报告,其他文章会重点介绍。
4、 从手机中拷贝测试报告,最终测试是在手机上运行,所以报告也生成在手机中,使用adb pull命令把测试报告全部拷贝到workspace下制定目录。
5、 构建后操作,发布测试报告,如果报告中包含附件,此处使用到JUnit Attachments Plugin插件。
6、 邮件通知,此处使用到Email-ext plugin插件,前面的默认,直接使用我们在系统管理里面设置的默认值。
7、 点击右下角高级按钮,可选择不同场景下发送邮件。
8、 测试结果展示,在本次构建的控制台可以显示当前所有的构建日志。
9、测试报告点击Test Result可以显示所有测试记录。
Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
可以的。
1.先在jenkins --->系统管理--->插件管理里面安装权限策略role-strategy.jpi插件,再注册几个用户。2.在系统管理--->Configure Global Security里统一用户权限配置,在这里配置的权限针对所有job有作用。
3.也可以在job 配置里面单独授权给用户。在这里配置的权限针对当前job有作用。比如这图上可以看到admin和zhangxxx有权限,那么当用wangxxx登录时,这个job就不会显示,视图上就看不到。
,请问hudson中的插件在哪下载呀?比如findbugs,checkstyle,emma,clover和cobertura。
上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》
CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,
Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。
CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程
关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章
拉取镜像,启动并设置开机自启
配置docker加速器
GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了
切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来
external_url '’
gitlab_rails[‘gitlab_ssh_host’] = '192.168.26.55’
gitlab_rails[gitlab_shell_ssh_port] = 222
修改完配置文件之后。直接启动容器
相关的git命令
下面我们要配置私有的docker镜像仓库,用到的机器为:
这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry
首先需要设置selinux、防火墙
安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具
解压harbor 安装包:harbor-offline-installer-v2.0.6.tgz,导入相关镜像
修改配置文件
harbor.yml:设置IP和用户名密码
./prepare && ./install.sh
查看相关的镜像
访问测试
这里因为我们要在192.168.26.55(CI服务器)上push镜像到192.168.26.56(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址
修改后的配置文件
加载使其生效
CI机器简单测试一下
push一个镜像,可以在私仓的web页面查看
镜像jenkins拉取
这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,
更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少
"" 替换为 ""
替换后查看
重启docker,获取登录密匙
需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock
修改镜像库启动参数后需要重启docker
后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"
添加 JVM 运行参数 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 运行跨站请求访问
这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端
然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章
命令测试没有问题
我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像
这里我们先用一个Nginx镜像来代替hexo博客的镜像
查看deployments和pod
访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK
我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址
这里所有的节点都需要设置后重启docker
访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化
下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab
同时需要编写Dockerfile文件来创建镜像
怎样设置Jenkins使之能通过Gitlab上的权限认证
hudson 安装后,在配置选项里有插件安装的,很方便的。下面是个hudson安装地址:
不过hudson改名为jenkins。后者我也没用过,具体什么情况不知道,你可以试试的哇
如何修改jenkins配置权限
进入JENKINS_HOME目录,找到config.xml文件,找到了<useSecurity>和<authorizationStrategy>节点。<useSecurity>节点代表是否使用用户权限,<authorizationStrategy>节点代表用户权限是怎么划分的。
下面提供2种方法:
1、恢复默认设置
直接删除<useSecurity>和<authorizationStrategy>节点
2、配置管理员权限
这种方法适用于已经存在一堆的权限,重新配置麻烦。
在<authorizationStrategy>节点中添加内容如下:
<permission>hudson.model.Hudson.Administer:anonymous</permission>
<permission>hudson.model.Hudson.ConfigureUpdateCenter:anonymous</permission>
<permission>hudson.model.Hudson.Read:anonymous</permission>
<permission>hudson.model.Hudson.RunScripts:anonymous</permission>
<permission>hudson.model.Hudson.UploadPlugins:anonymous</permission>
安装插件后,进入系统设置页面,配置如下:
官网上安全域设置为Servlet容器代理,实际操作发现Jenkins专有用户数据库也是可以的。
二、配置权限
在系统管理页面点击Manage and Assign Roles进入角色管理页面:
1、管理角色(Manage Roles)
选择该项可以创建全局角色、项目角色,并可以为角色分配权限。
如上图,分别创建了admin、anonymous两个全局角色,Online Program、test两个项目角色。
项目角色与全局角色的区别就是,项目角色只能管理项目,没有管理jenkins的权限配置。
添加项目角色时,需要制定匹配项目的模式,如上图中的Pattern,官方文档介绍该选项支持正则表达式,如“Roger-.”表示所有以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目并且不区分大小写,如以ABC开头的项目可以配置为“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多个项目。
2、创建用户
在分配角色之前需要先创建用户。
在系统管理页面,点击管理用户:
点击新建使用者可以创建新用户,如果之前有项目与scm版本管理系统(如svn、git等)连接并获取源码构建过,jenkins会从svn中读取到一些用户信息,可以在查看用户菜单中看到这些用户:
点击用户id或名称都可以修改用户信息。
3、分配角色(Assign Roles)
选择Assign Roles可以为用户分配所属角色,可以分配全局角色和项目角色。
如上图,将不同的用户分别分配给不同的角色,这样用户就可以具有角色所拥有的权限。
三、深入了解
该插件从2011年10月发布1.1.2版本后就不再维护了,因此会有一些小问题,但不影响使用,比如在分配角色后点击保存按钮时有可能会发生异常,浏览器点击后退按钮后重新提交就可以操作成功。
另外如果配置失败导致不能登录,可以通过修改配置文件恢复初始设置。
首先了解一下配置文件。
进入jenkins安装目录,用户配置信息和角色配置信息都以配置文件的形式存储。
上图中users目录存放了各个用户的配置信息,每个用户都会创建与用户名相同的文件夹,文件夹中包含config.xml文件,配置示例如下:
<?xml version='1.0' encoding='UTF-8'?>
<user>
<fullName>admin</fullName>
<properties>
<jenkins.security.ApiTokenProperty>
<apiToken>EfowsOP9H5arYxMmuFrbPjjITgu/fjtvHib5okFJ9DmPTu/088cvHxlE9RHwVv+S</apiToken>
</jenkins.security.ApiTokenProperty>
<hudson.model.MyViewsProperty>
<views>
<hudson.model.AllView>
<owner class="hudson.model.MyViewsProperty" reference=""/>
<name>All</name>
<filterExecutors>false</filterExecutors>
<filterQueue>false</filterQueue>
<properties class="hudson.model.View$PropertyList"/>
</hudson.model.AllView>
</views>
</hudson.model.MyViewsProperty>
<hudson.search.UserSearchProperty>
<insensitiveSearch>false</insensitiveSearch>
</hudson.search.UserSearchProperty>
<hudson.security.HudsonPrivateSecurityRealm_-Details>
<passwordHash>uAEYii:02e0cd0d78abf90e42b28e7d3d4fe64776ae8fa9500e379f2598cc65e1b0fb70</passwordHash>
</hudson.security.HudsonPrivateSecurityRealm_-Details>
<hudson.tasks.Mailer_-UserProperty>
<emailAddress>gaoliang@esrichina.com.cn</emailAddress>
</hudson.tasks.Mailer_-UserProperty>
</properties>
</user>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。