Jenkins使用过程遇到的问题记录

Jenkins使用过程遇到的问题记录

2023年6月30日发(作者:)

Jenkins使⽤过程遇到的问题记录Jenkins管理员账号“登录信息⽆效请重试”的处理办法刚开始安装的时候没有问题,去 jenkinssecrets下找到initialAdminPassword这个⽂件 输⼊⾥⾯的密码就⾏隔了⼀段时间登陆,登陆不上去了,这时候,可以去jenkinsusersadmin 这个⽬录下找到 可以看到⾥⾯的⽤户名是admin,密码还是jenkinssecrets的initialAdminPassword这个⽂件

1. 在jenkins系统设置中,点击“系统管理” -> configure global security。2. 点击“启⽤安全”,如果不启⽤的话,下列设置⽆法进⾏设置。3. 在安全域中选中“jenkins专有⽤户数据库”,并选中允许⽤户注册(也可以不进⾏选中)。4. 对需要相关内容,对匿名⽤户进⾏权限相关设置,⼀般只设置读的权限功能设置。5. 回到⾸页就有注册功能了,在没有启⽤安全设置,是没有注册的功能。6. 在授权策略中选择“项⽬矩阵授权策略”,可以添加该注册成功⽤户并设置相关权限。注意!初次设置矩阵权限时记得添加admin账号且给admin账号授权管理员权限(或者将默认的授权⽤户组设置成管理员权限),否则admin账号将⽆法登录系统

Jenkins构建Python项⽬失败定位原因:

不在jenkins执⾏⽤户的PATH⾥⾯解决⽅法⼀:构建的时候Python命令加上的路径,如:c: e:解决⽅法⼆:可在“系统管理 -> 管理节点 -> 选择⼀个节点 -> 配置从节点”配置环境变量,直接使⽤ python 命令

1 引⾔1.1 编写⽬的指导质量管理部,业务测试组同事进⾏Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不⼀致等问题。1.2 使⽤对象质量管理部、基础研发部,集成部署部及EMT

⽬标受众:本⽂的预期受众是从事持续交付或持续⾃动测试⼯作的软件⼯程师。要想按照本⽂中的步骤进⾏操作,您应该理解:脚本开发。软件开发流程。1.3 持续集成概述1.3.1 什么是持续集成随着软件开发复杂度的不断提⾼,团队开发成员间如何更好地协同⼯作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件⼯程领域越来越红⽕,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。持续集成正是针对这⼀类问题的⼀种软件开发实践。它倡导团队开发成员必须经常集成他们的⼯作,甚⾄每天都可能发⽣多次集成。⽽每次的集成都是通过⾃动化的构建来验证,包括⾃动编译、发布和测试,从⽽尽快地发现集成错误,让团队能够更快的开发内聚的软件。持续集成的核⼼价值在于:1. 持续集成中的任何⼀个环节都是⾃动完成的,⽆需太多的⼈⼯⼲预,有利于减少重复过程以节省时间、费⽤和⼯作量;2. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换⾔之,任何时间点都能第⼀时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;3. 持续集成还能利于软件本⾝的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进⾏有效决策,同时建⽴团队对开发产品的信⼼。1.3.2 持续集成的原则业界普遍认同的持续集成的原则包括:1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常⽤的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;2)开发⼈员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;3)需要有专门的集成服务器来执⾏集成构建。根据项⽬的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个⼩时构建⼀次;4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最⾼的⼯作。⼀旦修复,需要⼿动启动⼀次构建。1.3.3 持续集成系统的组成⼀个完整的构建系统必须包括:1. ⼀个⾃动构建过程,包括⾃动编译、分发、部署和测试等。2. ⼀个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。3. ⼀个持续集成服务器。本⽂中介绍的 Jenkins 就是⼀个配置简单和使⽤⽅便的持续集成服务器。1.4 Jenkins 简介Jenkins 是⼀个开源项⽬,提供了⼀种易于使⽤的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的⽇志⽂件和提醒功能,还能⽤图表的形式形象地展⽰项⽬构建的趋势和稳定性。主要⽤于:持续、⾃动地构建/测试软件项⽬。监控⼀些定时执⾏的任务。Jenkins拥有的特性包括:易于安装-只要把部署到servlet容器,不需要数据库⽀持。易于配置-所有配置都是通过其提供的web界⾯实现。集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。⽣成JUnit/TestNG测试报告。分布式构建⽀持Jenkins能够让多台计算机⼀起构建/测试。⽂件识别:Jenkins能够跟踪哪次构建⽣成哪些jar,哪次构建使⽤哪个版本的jar等。插件⽀持:⽀持扩展插件,您可以开发适合⾃⼰团队使⽤的⼯具。部署⼀个CI系统的最低要求是,⼀个可获取源代码的仓库,⼀个包含构建脚本的项⽬。下图概括了CI系统的基本结构图:CI系统的基本结构

2 Jenkins环境部署部署2.1 Jenkins安装2.1.1 Java -jar安装1. 从Jenkins官⽹下载⽂件。官⽹地址:/,注意选择最新版本的Long-Term Support Release2. 运⾏ java -jar (可添加命令 --httpPort=$HTTP_PORT,⽤来设置jenkins运⾏时的web端⼝)注意:Jenkins 最新war包需要运⾏ Java 7以及以上的版本。2.1.2 servlet 安装2.2 Jenkins配置2.2.1 系统管理在已运⾏的Jenkins主页中,点击左侧的系统管理进⼊如下界⾯:图:Jenkins系统管理

2.2.2 系统设置在已运⾏的Jenkins主页中,点击左侧的系统管理 —> 系统设置进⼊如下界⾯:图:系统设置页⾯

2.2.2.1 JDK、Maven,SVN配置2.2.2.1.1 JDK,Maven配置配置⼀个JDK、Maven实例,请在每⼀节下⾯单击Add(新增) 按钮,这⾥将添加实例的名称和绝对地址。JDK别名:命名标⽰,可随意取名。建议同安装根⽬录名保持⼀致JAVA_HOME:本机JDK的安装路径(绝对路劲)⾃动安装:不推荐这个选项,会出现需要oracle⽤户名,VPN等要求后⾯Maven的配置是⼀样的,JDK去oracle官⽹下载, Maven去apache官⽹下载Ps:每个⽂本框后⾯都有个问号,点击问号就会出现帮助信息下图描述了以上两个部分。图:JDK配置界⾯

2.2.2.1.2 SVN配置因为我们的SVN使⽤的1.8的客户端版本,所以需要对Jenkins的SVN插件进⾏升级。l 点击系统管理 - > 管理插件。图:插件管理视图

l 找到Subversion Plug-in插件,点击下载并安装。l 下载插件,如下图,检测⽹络连接是⽤的google的地址,因为没有FQ,所以访问不到是正常的,但是不影响下载安装。图:Subversion Plug-in下载安装界⾯l 下载完成重启JenkinsSubversion Plug-in插件安装完成后,在系统设置中找到对应模块:图:SVN配置视图

Subversion Workspace Version:Subversion 的版本号,选择您对应的版本号就⾏了(1.8向下兼容)2.2.2.2 邮件通知配置l 配置发件⼈

System Admin e-mail address:Jenkins邮件发送地址。(必须配置,否则报错 )l 配置邮件通知注意:SMTP认证邮箱必须与系统管理员邮件地址保持⼀致。⼩技巧:可配置默认邮件后缀,以后您填写邮件地址只需要输出@之前内容就⾏了图:邮件通知配置视图

2.2.3 Configure Global Security(安全设置)在已运⾏的Jenkins主页中,点击左侧的系统管理—>Configure Global Security进⼊如下界⾯:图:安全设置界⾯ 设置如上图,保存后系统管理中就出现管理⽤户的选项。页⾯右上⾓也会出现登录/注册的选项。2.2.4 管理⽤户设置在右上⾓点击注册图:⽤户注册界⾯

注册点击sign up按钮,提⽰您现在已经登录.返回⾸页. 登录后和匿名账号看到的⾸页有⼏点不同,如下图红框所⽰:图:⽤户登录页⾯

2.2.5 管理插件设置前⽂进⾏SVN配置时,已经接触了相关插件安装的内容。Jenkins提供了⼤量的插件,插件管理器允许您安装新的插件,和更新您Jenkins服务器上的插件。管理者将连接到联机资料库,检索可⽤的和已更新的插件。如果您的Jenkins服务器 ⽆法直接连接到外部资源,您可以从Jenkins⽹站上下载。点击“管理插件”进⼊插件安装界⾯。Jenkins的插件安装管理配置都很简单,通过web直接全能搞定。插件管理界⾯如下图所⽰:图:插件管理视图 它包含四个标签:l 可更新:清单中列⽰了Jenkins为某些插件搜索到了可⽤的更新。列出的每个插件可以被选择并应⽤更新。l 可选插件:清单中列⽰了可⽤于安装(⽽不是⽬前已安装的)的所有插件。列出的每个插件都可以被选择并安装。l 已安装:清单中列⽰了已经安装的插件。l ⾼级:允许您通过设定HTTP代理的⽅式使Jenkins与在线插件库建⽴连接。此外,还提供了⼀个上传设备,可以安装您在Jenkins以外已下载的那些插件。

各种Jenkins插件根据之前所记述的类型进⾏分门别类。可勾选任意想安装的Jenkins插件,到页⾯最下⾯有两个按钮“Install without restart” “Download now and install after restart”,根据需要点选提交开始安装。安装后,所有插件以hpi作为后缀名放置在plugins⽂件夹下。如果是⾼级⽤户还可以⾃⾏开发插件⽅便具体项⽬使⽤。

注意:安装完成后需要重启Jenkins部署的容器。这样才能使⽤新装的插件。

2.3 监控当任务⼀旦运⾏,您将会看到这个任务正在队列中的仪表板和当前⼯作主页上运⾏。这两种显⽰如下。图:左图构建历史,右图构建执⾏列表

⼀旦构建完成后,完成后的任务将会有三个地⽅进⾏显⽰。您可以在Jenkins的控制⾯板上看到它,如下图。图:主页⾯项⽬列表 在上⾯展⽰的截图中,您将注意到有两个图标描述当前作业的状态。S栏⽬代表着“最新构建状态”,W栏⽬代表着“构建稳定性”。Jenkins使⽤这两个概念来介绍⼀个作业的总体状况:构建状态:下图中分级符号概述了⼀个Job新近⼀次构建会产⽣的四种可能的状态:

l Successful:完成构建,且被认为是稳定的。l Unstable:完成构建,但被认为不稳定。l Failed:构建失败。l Disabled:构建已禁⽤。图:构建状态界⾯

构建稳定性: 当⼀个Job中构建已完成并⽣成了⼀个未发布的⽬标构建,如果您准备评估此次构建的稳定性,Jenkins会基于⼀些后处理器任务为构建发 布⼀个稳健指数 (从0-100 ),这些任务⼀般以插件的⽅式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分 析(FindBugs)。分数越⾼,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。图:构建稳定性界⾯

您也可以在当前Job主界⾯上看到它,如下图左下部分图:项⽬构建界⾯

当前作业主页上还包含了⼀些有趣的条⽬。左侧栏的链接主要控制Job的配置、删除作业、构建作业。右边部分的链接指向最新的项⽬报告和构件。通过点击构建历史(Build History)中某个具体的构建链接,您就能跳转到Jenkins为这个构建实例⽽创建的构建主页上。如下图图:构建历史界⾯

如果您想通过视图输出界⾯来监控当前任务的进展情况。您可以单击Console Output(控制台输出)。如果⼯作已完成,这将显⽰构建脚本产⽣的静态输出;如果作业仍然在运⾏中,Jenkins将不断刷新⽹页的内容,以便您可以看到它运⾏时的输出。如下图:图:控制台输出界⾯

3 Jenkins内置环境变量l BUILD_NUMBER, 唯⼀标识⼀次build。例如23;

l BUILD_ID,基本上等同于BUILD_NUMBER,但是是字符串,例如2011-11-15_16-06-21;l JOB_NAME, job的名字,例如AppScan_mall_essence_test;l BUILD_TAG, 作⽤同BUILD_ID,BUILD_NUMBER,⽤来全局地唯⼀标识⼀此build,例如jenkins- AppScan_mall_essence_test-23;l EXECUTOR_NUMBER, 例如0;l NODE_NAME,slave的名字,例如Master;l NODE_LABELS,slave的label,标识slave的⽤处,例如Android打包;l JAVA_HOME, java的home⽬录,例如C:Program FilesJavajdk1.8.0_45;l WORKSPACE,job的当前⼯作⽬录,例如c:jenkinsworkspace AppScan_mall_essence_test;l SVN_REVISION,svn 的revison注意:项⽬可配置多个SVN变量说明:The Subversion SCM plugin exports the svn revisions and URLs of the build's subversion modules as environmentThe Subversion SCM plugin exports the svn revisions and URLs of the build's subversion modules as environmentvariables. These are $SVN_REVISION_n and $SVN_URL_n, where n is the 1-based index of the module in backwards compatibility if there's only a single module, its values are also exported as $SVN_REVISION and$SVN_URL.

4 Jenkins 其他配置4.1 Slave配置Jenkins有个很强⼤的功能:分布式构建,分布式构建能够让同⼀套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。⽽且Jenkins构建的代码和产物最后⾃动拷贝到主节点。注意:注意:如果节点主机上不存在JDK,Jenkins会去⾃动下载,但Oracle对程序⾃动下载做了限制,会导致下载失败,然后⼀直循环这个问题。建议:所有Unix/Mac/Linux或者Windows机器的环境路径统⼀(如:JDK、Maven),便于管理、不易出现奇葩问题。

Jenkins版本:1.6.20(不同版本的配置可能不同)l 进⼊节点配置界⾯:系统管理→管理节点→新建节点(左上⾓)图:Slave配置页⾯

l 节点名称:建议使⽤字母、数字或字母和数字的组合。最好见名知意。不建议使⽤标点符号和中⽂(中⽂命名没有问题,但Job中⽆法引⽤)l Dumb Slave:新建⼀个节点l 复制现有节点:从已存在的节点中复制⼀份配置(存在节点才会显⽰)l 点击ok进⼊下⼀步配置图:Slave 节点配置l Name:节点名称l Description:节点描述,⽀持中⽂l # of executors:最⼤同时构建数量(根据机器的性能定,单颗四核cpu建议不要超过5)【必须为数字】l Remote FS root:节点的根⽬录(注意:如果⽬录不存在,会⾃动创建⽬录。你必须对该⽬录有读写权限,不然会报错:ption2: Failed to copy xxxx)l Labels:标记(⼜叫做标签)⽤来对多节点分组,标记之间⽤空格分隔.例如'refression java6'将会把⼀个节点标记上 和'java6'.举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运⾏,那么你可以配置所有的Windows系统节点都标 记为'windows', 然后把Job也标记为'windows'.这样的话你的Job就不会运⾏在除了Windows节点以外的其它节点之上了.l ⽤法:尽可能的使⽤这个节点/只允许运⾏绑定到这台机器的Job(根据你的需求,⼆选⼀)l Launch method:运⾏⽅式有四个选项。建议选择第1、2种⽅式配置。详细如下:n 【推荐】Launch slave agents on Unix machines via SSH 在Unix(包括Linux)机器上通过SSH通道连接节点 (适⽤于Unix和Linux)u Host:节点主机的ip地址u Credentials:凭据(如果为空或者不可选择,请在系统管理→Manage Credentials中配置。Manage Credentials的配置⾮常简单,这⾥就不在描述了。Manage Credentials配置完成后,需刷新节点配置页⾯才会显⽰。)u Port:端⼝默认22u JavaPath:[可选]JDK路径,默认和master节点相同。路径必须指定到Java程序,如:/path/bin/javau JVM Options:[可选]JVM可选参数u Prefix Start Slave Command:[可选]不知道⼲什么⽤的参数u Suffix Start Slave Command:[可选]不知道⼲什么⽤的参数u Connection Timeout in Seconds:[可选]链接超时设置u Maximum Number of Retries:[可选]失败重连数u Seconds To Wait Between Retries:[可选]重连间隔时间u 测试可以使⽤Unix命令,会⾃动拼接在[SSH] Starting slave process:[Prefix Start Slave Command] cd '/path' &&/path/bin/java -jar [Suffix Start Slave Command]n 【推荐】Launch slave agents via Java Web Start 通过Java Web Start连接节点 (适⽤于所有⽀持Java程序的系统)u Tunnel connection through:[可选]在端⼝转发这种情况下使⽤u JVM options:[可选]JVM可选参数u 这种⽅法的缺点:如果该节点宕机了,主节点⽆法⾃动重启它。

n Launch slave via execution of command on the Master 通过主节点的控制台连接节点u Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界⾯配置,那么升级版本之类的操作会很⿇烦。所以允许u Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界⾯配置,那么升级版本之类的操作会很⿇烦。所以允许你使⽤shell脚本去配置管理节点(貌似很⽅便的样⼦)。具体的脚本需要你⾃⼰写。u Launch command:Unix运⾏脚本的命令,如:sh 【不建议使⽤】Let Jenkins control this Windows slave as a Windows service 让Jenkins节点添加到Windows服务中u 这个选项⽐Launch slave agents via Java Web Start添加为服务更加稳定(帮助⽂档描述)。采⽤这种运⾏⽅式,那么这个系统不能登录任何⽤户。这种配置⽅式是⾮常的⿇烦和折腾。u Administrator user name:域管理员账号u Password:密码u Host:节点主机IP或者域名u Run service as:u Use Local System User:使⽤本地系统⽤户u Log on using a different account:使⽤不同的⽤户登录u User name:账号u Password:密码u Use Administrator account given above:使⽤上⾯的⽤户登录u Path to java executable:[可选]JDK路径。必须指定到Java程序,如:C: JVM options:[可选]JVM可选参数l Availability:u Keep this slave on-line as much as possible:尽可能保持节点在线【推荐】u Take this slave on-line according to a schedule:根据时间表在线(类似于Linux的定时任务)l Startup Schedule:类似于Linux定时任务的时间,如下:

l # every fifteen minutes (perhaps at :07, :22, :37, :52)l H/15 * * * *l # every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)l H(0-29)/10 * * * *l # once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)l H 9-16/2 * * 1-5l # once a day on the 1st and 15th of every month except Decemberl H H 1,15 1-11 *l 如果使⽤ H Jenkins会⾃动提前⼀段时间连接节点,避免出现同⼀时间⾼并发的问题

l Scheduled Uptime:超过任务时间后延迟多少分钟离线。如果此数值⼤于在线总时间(单位:分),就会⼀直保持在线【必须为数字】l Keep on-line while jobs are running:当有Job在构建时(到达离线时间了)继续保持在线u Take this slave on-line when in demand and off-line when idle:让Jenkins根据需求⾃动连接或者离线l In demand delay:告诉Jenkins如果有Job需要在此节点构建,需要在任务队列等待多长时间才会进⼊任务状态进⾏构建【必须为数字】l Idle delay:告诉Jenkins多少分钟内如果没有Job需要构建就离线【必须为数字】l Node Properties:u Environment variables:配置环境变量(可以在脚本中引⽤)u Tool Locations:⼯具的⽬录【推荐】。说明:可以替换系统设置的各种⼯具⽬录。如:JDK⽬录、Ant⽬录、Maven⽬录等。好处就是在不更改Job配置的情况下,不同环境(如:Windows和Linux) Job配置通⽤。4.1.1 Windows Slave4.1.1.1 Launch slave agents via Java Web Start相应配置选择完成后,进⼊需要控制的远程机器上,⼀定要进⼊远程的slave机器,⽽不是你的master机器。输⼊对应的你的jenkins的地址,例如这⾥:点击进⼊对应的该slave机器的图标进⼊:图:Launch slave agents via Java Web Start配置完成界⾯

如上图所⽰,有两种⽅式可以启动节点(都是JNLP⽅式。JNLP连接需要端⼝,默认连接端⼝是随机的,端⼝更改 系统设置→Configure Global Security→JNLP节点代理的TCP端⼝)你以下⼏种⽅式启动:l Launch agent from browser on slave 下载⽂件⽂件,双击打开。n ⼀般⽤在Windows系统上,需要(在Java的bin⽬录中可以找到)程序才能打开。如果提⽰错误,请卸载JDK后重新安装。u 注意事项:u 确认 是⽤javaws来运⾏的,⽽不是 或者是来运⾏,因为⼀般的机器默认是采⽤启动的。u 将⽤notepad打开后,确认其中的URL是可⽤的Jenkins地址。其中的配置可能是这样的:u 将⽤notepad打开后,确认其中的URL是可⽤的Jenkins地址。其中的配置可能是这样的:

确认其中的url地址是正确的地址,⽽不是localhost或者127.0.0.1。以上的配置完成后,如果点击lanch按钮,可能会报⼀下的错误:Slave nection was Exception: Connection resetat (:168)at (:218)at (:237)at InputStream$(:2252)at InputStream$(:2545)at InputStream$te(:2555)at ject0(:1294)at ject(:348)at om(:92)at (:72)at onousCommandTransport$(:48)Connect slave to Jenkins one of these ways: Launch agent from browser on slaveRun from slave command line:Or if the slave is headless:如果出现上⾯的问题,我们就不要在点击launch按钮起启动了,采⽤命令⾏去启动也是⼀样的,这个时候选择下⾯的启动⽅式

如果启动成功,成功启动如下图所⽰:图:windows Slave Launch slave agents via Java Web Start 节点连接 点击左上⾓的File选择Install as a service就可以添加为Windows的服务了(默认开机⾃动启动)。将当前的slave设置成⼀个服务,每次机器重启的时候都⾃动启动slave服务,这样就不⽤每次都去启动这个slave agent了。

注意:如果上⾯的窗⼝中显⽰Connected,可是⼀会有出现了Terminated的状态,那么很可能是因为你的jenkins配置权限的时候没有给匿名⽤户启动slave的权限。具体操作是进⼊jenkins主界⾯,然后进⼊Manage Jenkins -> Configure Global Security ,勾选其中的anonymous⽤户的slave部分的权限。图:anonymous Slave 启动权限配置界⾯

4.1.1.2 Let Jenkins control this Windows slave as a Windows service

4.1.2 MAC/Linux Slave(待添加)4.1.2.1 Launch slave agents on Unix machines via SSHl 在jenkins上增加节点图:Jenkins增加节点配置界⾯l 在Mac系统中将ssh的服务打开,在偏好设置-互联⽹与⽆线 -共享中图:互联⽹与⽆线配置界⾯ l 使⽤mac root⽤户修改sshd-config的鉴权⽅式⾸先获取到root⽤户登录,然后vi /etc/ssd_config,修改PasswordAuthentication no 为PasswordAuthentication yesl 此时在jenkins节点中点击salve节点,Lauch。注意:节点机器上必须配置好java环境,建议⼿⼯在Environment variables指定JAVA_HOME路径信息图:Environment variables JAVA_HOME配置

2.命令⾏调⽤code sign时报错:User interaction is not allowedn ⽹上找了⼀些命令来⽤:$security list-keychains$unlock-keychain "-p" "keychainpassword" "/Users/bixiaopeng/Library/Keychains/in”但⽆法解决

于是乎⽤下⾯的⽅法解决了:1.在应⽤程序⾥搜索Keychain Access,中⽂叫钥匙串访问权限2.找到你的证书,右击 — 显⽰简介 — 访问控制 — 选中【允许所有应⽤程序访问此项⽬】 — 存储更攺 — 输⼊密码后保存更攺,解决问题。n 如果上⾯的都⽆法解决,那就使⽤jenkins的Xcode插件吧图:Xcode配置界⾯ 除了以上的连接⽅式,也可以采⽤私钥的形式进⾏链接:SSH Username with private key4.2 Manage and Assign Roles配置Jenkins的默认权限控制过于简单,⽤户进⾏管理配置这块推荐使⽤“Role-based Authorization Strategy”4.2.1 Role-based Authorization Strategy安装点击“系统管理”- > “管理插件” 进⼊插件安装界⾯,按照上⽂“管理插件设置”选择Role-based Authorization Strategy进⾏安装4.2.2 “Role-based Authorization Strategy”的启⽤点击“系统管理”点击“系统设置”,如下图所⽰:“授权策略”选择使⽤“Role-Based Strategy”。配置完成save后在“系统管理”下新增选项“Manage and Assign Roles”。点击“管理⽤户”新建账户后即可进⾏账户,群组的安全策略配置。图:Role-Based Strategy配置界⾯

4.2.3 管理组权限设置,构建权限设置:点击“Manage and AssignRoles”,先选择“Manage Roles”如下图所⽰,在Global roles这⾥创建权限分组,如admin是最⾼管理员权限,拥有所有权限,guest只有读权限等,这⾥可以根据具体情况设置多个分组,不同权限;然后设置“Projectroles”,Role to add 填写分组名称,Pattern填写分组的规则。例如这个分组叫TEST,他的规则就是构建名为“TEST.*”的所有构件,然后在“Job”区⾥勾选相关权限。设置完成点保存即可。图:Global roles设置界⾯

图:Project roles设置界⾯

4.2.4 ⽤户权限分配点击“Assign Roles”如下图所⽰,在“Global roles”下“User/group to add”栏中输⼊添加的⽤户名,然后勾选管理组。记得把默认的匿名⽤户“Anonymous”的默认admin权限去掉,在添加管理员之后,否则不需登录就能控制整个Jenkins的权限;在“Project roles”下“User/group to add”栏中输⼊添加的⽤户名,然后勾选对应构建权限名。设置完保存即可。图:Assign Roles配置界⾯

4.3 E-mail Notification配置Jenkins默认提供了⼀个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本⾝有很多局限性,⽐如它的邮件通知⽆法提供详细的邮件内容、⽆法定义发送邮件的格式、⽆法定义灵活的邮件接收配置等等。在这样的情况下,我们找到了。该插件能允许您⾃定义邮件通知的⽅⽅⾯⾯,⽐如在发送邮件时您可以⾃定义发送给谁,发送具体什么内容等等。4.3.1 配置E-mail Notification配置包含两个部分:全局配置和项⽬配置。4.3.2 全局配置在⼀个项⽬中应⽤E-mail Notification插件之前,您必须做⼀些全局的配置。现在先跳转到Jenkins的“系统设置”页⾯。找到标题为“Extended E-mail Notification”的⽚段,你就能配置⼀些全局的E-mail Notification属性。这些属性必须匹配你SMTP邮件服务器的设置。这⼀节不仅能配置成Jenkins原有邮件通知的镜像(虽然有很多配置是⼀样的,但这是个不同的扩展点),⽽且还增加了⼀些额外的功能。输⼊框中名为 Default Subject 和 Default Content 的项允许你在全局级别配置邮件的内容。这样做的话,可以使您为所有的项⽬按您的需求做更好的、更简单的配置。如下图。图:Extended E-mail Notification配置 释放默认配置:Default Subject:构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!Maximum Attachment Size:20Default Content:(本邮件是程序⾃动下发的,请勿回复!)项⽬名称:$PROJECT_NAME构建编号:$BUILD_NUMBERSVN版本号:${SVN_REVISION}构建状态:$BUILD_STATUS触发原因:${CAUSE}构建⽇志地址:${BUILD_URL}构建地址: $BUILD_URLAPP⽂件下载地址(Android/IOS):${JOB_URL}ws/version/变更集: ${JELLY_SCRIPT,template="text"}$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:Check console output at $BUILD_URL to view the results.4.3.2.1 E-mail Notification全局属性详解E-mail Notification全局属性详解:l Override Global Settings:如果不选,该插件将使⽤默认的E-mail Notification通知选项。反之,您可以通过指定不同于( 默认选项)的设置来进⾏覆盖。l Default Content Type:指定构建后发送邮件内容的类型,有Text和HTML两种.l Use List-ID Email Header:为所有的邮件设置⼀个List-ID的邮件信头,这样你就可以在邮件客户端使⽤过滤。它也能阻⽌邮件发件⼈⼤部分的⾃动回复(诸如离开办公室、休假等等)。你可以使⽤你习惯的任何名称或者ID号,但是他们必须符合如下其中⼀种格式(真实的ID必须要包含在<和>标记⾥):<>Build Notifications <>“Build Notifications” <>l Add 'Precedence: bulk' Email Header:设置优先级.l Default Recipients:⾃定义默认电⼦邮件收件⼈列表。如果没有被项⽬配置覆盖,该插件会使⽤这个列表。您可以在项⽬配置使⽤$DEFAULT_RECIPIENTS参数包括此默认列表,以及添加新的地址在项⽬级别。添加抄送:cc:电⼦邮件地址例如,CC:*********************l Reply To List:回复列表, A comma separated list of e-mail addresses to use in the Reply-To header of the email. Thisvalue will be available as $DEFAULT_REPLYTO in the project configuration.l Emergency reroute:如果这个字段不为空,所有的电⼦邮件将被单独发送到该地址(或地址列表)。l Excluded Recipients:防⽌邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展的账户名(如:@),并且使⽤逗号分隔l Default Subject:⾃定义邮件通知的默认主题名称。该选项能在邮件的主题字段中替换⼀些参数,这样你就可以在构建中包含指定的输出信息。l Maximum Attachment Size:邮件最⼤附件⼤⼩。l Default Content:⾃定义邮件通知的默认内容主体。该选项能在邮件的内容中替换⼀些参数,这样你就可以在构建中包含指定的输出信息。l Default Pre-send Script:默认发送前执⾏的脚本。l Enable Debug Mode:启⽤插件的调试模式。这将增加额外的⽇志输出,构建⽇志以及Jenkins的⽇志。在调试时是有⽤的,但不能⽤于⽣产。l Enable Security:启⽤时,会禁⽤发送脚本的能⼒,直接进⼊Jenkins实例。如果⽤户试图访问Jenkins管理对象实例,将抛出⼀个安全异常。l Content Token Reference:邮件中可以使⽤的变量,所有的变量都是可选的。4.3.2.2 全局邮件变量E-mail Notification插件允许使⽤变量来动态插⼊数据到邮件的主题和内容主体中。变量是⼀个以$(美元符号)开始,并以空格结束的字符串。当⼀个邮件触发时,主题和内容主体字段的所有变量都会通过真实的值动态地替换。同样,变量中的“值”能包含其它的变量,都将被替换成真实的内容。⽐如,项⽬配置页的默认主题和内容分别对应的是全局配置页⾯的DEFAULT_SUBJECT和DEFAULT_CONTENT,因此它会⾃动地使⽤全局的配置。同理,触发器中的Subject和Content分别对应的是项⽬配置页⾯的DEFAULT_SUBJECT和DEFAULT_CONTENT,所以它也会⾃动地使⽤项⽬的配置。由于变量中的“值”能包含其它的变量,所以就能为变量快速地创建不同的切⼊点:全局级别(所有项⽬),专属级别(单⼀项⽬),触发器级别(构建结果)。如果你要查看所有可⽤的变量,你可以点击配置页的Content Token Reference的问号获取详细的信息。所有的变量都是可选的,每个变量可以如下表⽰,字符串类型使⽤name=“value”,⽽布尔型和数字型使⽤name=value。如果{和}标记⾥⾯没有变量,则不会被解析。⽰例:$TOKEN,${TOKEN},${TOKEN,count=100},${ENV,var=”PATH”}提⽰:⽤英⽂逗号分隔变量的参数。

⼀些常⽤的属性:l ${FILE,path="PATH"} 包括指定⽂件(路径)的含量相对于⼯作空间根⽬录。n path⽂件路径,注意:是⼯作区⽬录的相对路径。l ${BUILD_NUMBER} 显⽰当前构建的编号。l ${JOB_DESCRIPTION} 显⽰项⽬描述。l ${SVN_REVISION} 显⽰svn版本号。还⽀持Subversion插件出⼝的SVN_REVISION_n版本。l ${CAUSE} 显⽰谁、通过什么渠道触发这次构建。l ${CHANGES } -显⽰上⼀次构建之后的变化。n showPaths 如果为 true,显⽰提交修改后的地址。默认false。n showDependencies 如果为true,显⽰项⽬构建依赖。默认为falsen format 遍历提交信息,⼀个包含%X的字符串,其中%a表⽰作者,%d表⽰⽇期,%m表⽰消息,%p表⽰路径,%r表⽰版本。注意,并不是所有的版本系统都⽀持%d和%r。如果指定showPaths将被忽略。默认“[%a] %mn”。n pathFormat ⼀个包含“%p”的字符串,⽤来标⽰怎么打印路径。l ${BUILD_ID}显⽰当前构建⽣成的ID。l ${PROJECT_NAME} 显⽰项⽬的全名。(见lDisplayName)l ${PROJECT_DISPLAY_NAME} 显⽰项⽬的显⽰名称。(见playName)l ${SCRIPT} 从⼀个脚本⽣成⾃定义消息内容。⾃定义脚本应该放在"$JENKINS_HOME/email-templates"。当使⽤⾃定义脚本时会默认搜索$JENKINS_HOME/email-templatesdirectory⽬录。其他的⽬录将不会被搜索。n script 当其使⽤的时候,仅仅只有最后⼀个值会被脚本使⽤(不能同时使⽤script和template)。n template常规的simpletemplateengine格式模板。l ${JENKINS_URL} 显⽰Jenkins服务器的url地址(你可以再系统配置页更改)。l ${BUILD_LOG_MULTILINE_REGEX}按正则表达式匹配并显⽰构建⽇志。n regex n ⽣成正则表达式匹配的构建⽇志。⽆默认值,可为空。n maxMatches 匹配的最⼤数量。如果为0,将匹配所有。默认为0。n showTruncatedLines 如果为true,包含[...truncated ### ]⾏。默认为true。n substText 如果⾮空,就把这部分⽂字(⽽不是整⾏)插⼊该邮件。默认为空。n escapeHtml 如果为true,格式化HTML。默认为false。n matchedSegmentHtmlStyle 如果⾮空,输出HTML。匹配的⾏数将变为 html escapedmatched line 格式。默认为空。l ${BUILD_LOG} 显⽰最终构建⽇志。n maxLines ⽇志最多显⽰的⾏数,默认250⾏。n escapeHtml 如果为true,格式化HTML。默认false。l ${PROJECT_URL} 显⽰项⽬的URL地址。l ${BUILD_STATUS} -显⽰当前构建的状态(失败、成功等等)l ${BUILD_URL} -显⽰当前构建的URL地址。l ${CHANGES_SINCE_LAST_SUCCESS} -显⽰上⼀次成功构建之后的变化。n reverse在顶部标⽰新近的构建。默认false。n format遍历构建信息,⼀个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build#%nn%cn”。n showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。l ${CHANGES_SINCE_LAST_UNSTABLE} -显⽰显⽰上⼀次不稳固或者成功的构建之后的变化。n reverse在顶部标⽰新近的构建。默认false。n format遍历构建信息,⼀个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build#%nn%cn”。n showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。l ${ENV} –显⽰⼀个环境变量。n var– 显⽰该环境变量的名称。如果为空,显⽰所有,默认为空。l ${FAILED_TESTS} -如果有失败的测试,显⽰这些失败的单元测试信息。l ${JENKINS_URL} -显⽰Jenkins服务器的地址。(你能在“系统配置”页改变它)。l ${HUDSON_URL} -不推荐,请使⽤$JENKINS_URLl ${PROJECT_URL} -显⽰项⽬的URL。l ${SVN_REVISION} -显⽰SVN的版本号。l ${JELLY_SCRIPT} -从⼀个Jelly脚本模板中⾃定义消息内容。有两种模板可供配置:HTML和TEXT。你可以在$JENKINS_HOME/email-templates下⾃定义替换它。当使⽤⾃动义模板时,”template”参数的名称不包含“.jelly”。n template模板名称,默认”html”。l ${TEST_COUNTS} -显⽰测试的数量。n var– 默认“total”。u total -所有测试的数量。u fail -失败测试的数量。u skip -跳过测试的数量。4.3.3 项⽬配置要想在⼀个项⽬中使⽤email-ext插件,你⾸先必须在项⽬配置页激活它。在构建后操作——“增加构建后操作步骤”选项中勾选”Editable Email Notification”标签。图:E-mail Notification项⽬配置界⾯ 4.3.3.1 项⽬基本配置当插件激活后你就能编辑如下字段(只列出常⽤的字段):

l Project Recipient List:这是⼀个以逗号(或者空格)分隔的收件⼈邮件的邮箱地址列表。允许您为每封邮件指定单独的列表。Ps:如果你想在默认收件⼈的基础上添加收件⼈:$DEFAULT_RECIPIENTS,<新的收件⼈>n Default Subject:允许你配置此项⽬邮件的主题。n Default Content:跟Default Subject的作⽤⼀样,但是是替换邮件内容。n Attach Build Log:附件构建⽇志。u Compress Build Log before sending:发送前压缩⽣成⽇志(zip格式)。4.3.3.2 项⽬⾼级配置要查看插件的⾼级配置,请点击“ ”按钮。该选项允许您各种类型的邮件触发器指定接收者。默认情况下,是没有配置的触发器,所以默认情况下不会发送邮件。要增加更多的触发器,选择“Add a Trigger”旁边下拉列表中的类型,它会增加到控件上⾯的列表中。配置说明:l Send to Recipient List:如果勾选,邮件将发送到”Project Recipient List”中的所有邮件地址。l Send to Committers:该邮件会发给上次构建时检查过代码的⼈员,该插件会基于提交者的ID和追加Jenkins配置页⾯的(defaultemail suffix)默认邮件后缀来⽣成⼀个邮件地址。譬如,上次提交代码的⼈是””, 默认的电⼦邮件后缀为“@”,那么电⼦邮件将被发送到“************************”。l Send To Requester:如果勾选,邮件将发送给构建触发者。l Include Culprits:如果勾选,⽽且 “Send To Committers”勾选,邮件将包含最后成功构建的提交者。l More Configuration:通过单击”+(expand)”链接您能为每个邮件触发器作更多单独的设置。n Recipient List:这是⼀个以逗号(或者空格)分隔的可接受邮件的邮箱地址列表。如果触发就发送邮件到该列表。该列表会追加在”Global Recipient List”⾥。n Subject:指定选择邮件的主题。注意:⾼级选项中的邮件触发器类型可覆盖对它的配置。n Content:指定选择邮件的内容主体。注意:⾼级选项中的邮件触发器类型可覆盖对它的配置。l Remove通过单击指定触发器当前⾏的“Delete”按钮,你可以删除该触发器。4.3.3.3 触发器类型配置发送需⾸先确定触发器注意:所有的触发器都只能配置⼀次l Failure:即时发送构建失败的邮件。如果”Still Failing”触发器已配置,⽽上⼀次构建的状态是”Failure”,那么”StillFailing”触发器将发送⼀封邮件来替代(它)。l Unstable:即时发送构建不稳固的邮件。如果”Still Unstable”触发器已配置,⽽上⼀次构建的状态是”Unstable”,那么”StillUnstable”触发器将发送⼀封邮件来替代(它)。l Still Failing:如果两次或两次以上连续构建的状态为”Failure”,发送该邮件。l Success:如果构建的状态为”Successful”发送邮件。如果”Fixed”已配置,⽽上次构建的状态为“Failure”或“Unstable”,那么”Fixed”触发器将发送⼀封邮件来替代(它)。l Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。l Still Unstable:如果两次或两次以上连续构建的状态为” Unstable “,发送该邮件。l Before Build:当构建开始时发送邮件。4.3.3.4 项⽬邮件变量注意:这⾥只解释全局配置页⾯中缺少的变量。

l ${DEFAULT_SUBJECT}:这是Jenkins系统配置页⾯默认配置的邮件主题l ${DEFAULT_CONTENT}:这是Jenkins系统配置页⾯默认配置的邮件内容主体l ${PROJECT_DEFAULT_SUBJECT}:这是项⽬的默认邮件主题。⾼级配置中使⽤该令牌的结果要优先于Default Subject字段。警告:不要在Default Subject 或者Default Content中使⽤该令牌,它会产⽣⼀个未知的结果。l ${PROJECT_DEFAULT_CONTENT}:这是项⽬的默认邮件内容主体。⾼级配置中使⽤该令牌的结果要优先于Default Content字段。警告:不要在Default Subject 或者Default Content中使⽤该令牌,它会产⽣⼀个未知的结果。4.3.4 E-mail Notification邮件效果展⽰图:E-mail Notification邮件效果图 5 Jenkins 使⽤流程持续交付需要快速且⾃动地部署各种更改集。完成部署或交付⼯作需要多个步骤。标准的流程是:开发⼈员交付各种更改源代码控制⼯具进⾏构建⼯作运⾏⾃动的测试⼯作安装构建内容6 Jenkins框架的部署拓扑结构(当前)l 开发部署:开发⼈员向诸如 Subversion(SVN)等的源代码控制服务器提交更改集l 持续集成:添加 Jenkins 以后,会有⼀个 Jenkins 主机器。Subversion构建⼯具包已安装在该服务器上。Jenkins使⽤该构建⼯具包并通过 Subversion下载源代码,同时触发构建⼯具包⽣成构建版本。所有的项⽬都在在 Jenkins 主机器上进⾏管理。Android打包,AppScan扫描,Web项⽬开发环境发布在Jenkins master机器上运⾏,IOS打包(192.168.1.90_Darwin_IOS)作为Jenkins 从机器提供服务。它们由 Jenkins 主机器控制,并运⾏安装项⽬。图.Jenkins框架的部署拓扑结构

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688079698a77298.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信