Questions tagged «jenkins»

对于有关开源自动化服务器Jenkins的问题,以及将Jenkins用于诸如构建,测试和部署软件等主题的问题。对于有关Jenkins插件的特定问题,请使用jenkins-plugins标记。

2
多个iOS项目的持续集成基础架构
作为iOS开发人员,我一直在为迄今为止我们正在开发的iOS项目创建CI和CCQ(=连续代码质量)基础架构。我们已经将Jenkins和SonarQube用于几乎所有的Web和Android项目(使用VM foreach项目,自动安装和配置CI和CCQ),并且效果很好。但是对于iOS项目,Jenkins需要在运行macOS的计算机上进行构建,因此我不确定是否有完美的解决方案。 我正在寻找一种虚拟化macOS的解决方案。对于每个项目,要创建一个虚拟macOS并将Jenkins作为从站安装在那里,以处理构建。该解决方案看起来很完美,但似乎不合法的是要在macOS上运行两个以上的VM(当然,仅在Mac计算机上) http://images.apple.com/legal/sla/docs/macOS1012.pdf ->点2.B。所以这不是我的情况的解决方案。 我读过的另一种常见解决方案是有一台Mac计算机(也许是MacMini),它将处理所有项目的所有构建。您如何看待这种实施方式?它可以处理多少个项目?开发人员可能需要在自己的项目上进行一些配置(尤其是在SonarQube中),是否安全? 我们可以在同一台计算机上使用不同端口使用多个Jenkins和SonarQube实例吗?这甚至是要考虑的解决方案,还是我在胡说八道? 还有其他可行的解决方案,也许比上面的解决方案更好:)吗? 注意:我不坚持使用Jenkins + SonarQube组合,如果还有其他更适合iOS开发的工具,请与我分享。

3
在进行Jenkins构建的远程触发器时,如何不“开火”?
我正在尝试从Bamboo触发参数化的Jenkins构建,请执行以下操作: 开机自检- http://jenkins-url.com/job/jobname/buildWithParameters?ENVIRONMENT=dev&APPLICATION=hello-world 但是我会立即得到201,它告诉我该构建已创建。如何让这个请求等待并返回构建的成功状态,而不是一劳永逸? 根据Parameterized-Remote-Trigger-Plugin,这显然是可能的: 编辑:如果需要,最后创建它。 https://github.com/owenmorgan/jenkins-remote-builder

4
我应该使用哪个插件来开始使用Jenkins来管理PDS格式的大型机组件?
假设有人熟悉DevOps和大型机,但对Jenkins还是陌生的,想开始使用Jenkins,例如: 研究在大型机上管理存储在个人文件(PDS,即分区数据集)中的数据的可行性(因此,尚不存在任何用于管理大型机软件的典型SCM解决方案进行管理)。 在某些类型的个人开发环境中运行Jenkins,例如在Virtual Box的Linux环境中运行(如果可行)。 在完成某种(最少的)Jenkins 安装和配置后,实际的问题变为“ Which of the typical Jenkins plugins, if any, would be needed?”。从我看来似乎有意义的各种Jenkins插件看来,这些都是可能的候选对象(引号来自链接页面): IBM zOS连接器。 ...通过与IBM z / OS LPAR的FTP连接提供其功能。您可以在z / OS上配置SCLM项目,然后通过Jenkins检查更改。 功能包括: 提交用户JCL作业(完成时收集可选日志)。 将SCLM作为SCM引入您的项目,从而可以签出SCLM更改。 当前只能通过“提交zOS作业”构建操作来执行构建SCLM项目的功能。 Endevor,PDS和ISPW插件的Compuware源代码下载。 ...允许Jenkins用户将Endevor,PDS或ISPW成员从大型机下载到PC。然后可以在PC上访问源,例如进行SonarQube分析和报告。 由于第一个插件与SCLM有关(全部与PDSes有关),而第二个插件明确声明了对PDSes的支持(以其名义),因此我相信两者都是可能的选择。 因此,假设我的候选清单是完整的(是吗?),那么哪一个利弊都可以帮助我确定哪一个最适合我的情况? 附:似乎不存在“ Jenkins Kickstart”软件包之类的东西(至少我还没有找到它)。

2
如何在docker中运行的Jenkins构建从站中启用npm缓存?
我有一个Docker镜像,我们称它为frontend.imageJenkins构建奴隶。Jenkins Docker插件将从该映像启动一个容器,并在该容器内构建工件。这一切都很好。在这种情况下,frontend.image可使用来构建AngularJs应用。构建此Angular应用程序的一部分是安装应用程序所需的npm软件包。 npm安装这个过程似乎要花费很长时间,似乎3分钟,npm总是每次都安装每个软件包。 因此,我为从属服务器添加了一个卷,它是主机安装的卷,Docker插件每次运行前端容器时都会使用该卷: 执行命令的用户npm install是jenkins。npm保留了一个缓存,您可以使用npm config get cache输出命令来查找/home/jenkins/.npm 这就是为什么将主机卷/slaves/volumes/tsl.frontend:/home/jenkins安装到Web容器从属服务器的原因。 我使用Jenkins项目构建了Angular应用程序,构建没有问题,安装了许多npm软件包。如果ssh进入我的Docker主机并运行cmd,ls /slaves/volumes/tsl.frontend我会看到很多npm软件包。这意味着我的从服务器主机卷安装成功。 现在,我再次构建Jenkins项目,即使Docker从属构建容器正在使用卷主机安装,npm也会再次安装每个软件包。我什至可以通过先用cmd docker exec -it <some_clever_random_container_id> bash然后按cmd su jenkins然后按cmd 猛击到从属容器中来进行确认,npm cache ls其中列出了许多已缓存的npm软件包。 因此,即使我的主机安装卷具有权限chmod 777(因此没有权限问题),我也无法npm install使用缓存。 在运行Docker从属容器的Jenkins构建中,我运行的第一个cmd npm cache ls已经列出,并且列出了许多软件包,这是否意味着我的主机卷正在按预期工作并且npm缓存索引的完整性也未损坏? 我尝试了常规的npm installcmd,当我在localhost计算机上运行时,它会第一次安装所有软件包,而下次则几乎没有软件包。以及npm --cache-min 9999999 install从此SO答案以及cmd中获取的npm缓存“ hack”npm --skip-installed --cache-min 9999999 install 一个相关的问题发布在StackOverflow上。
13 docker  jenkins  npm 

2
如何检查Jenkins构建执行程序的可用内存?
在Jenkins中,单击“ 生成执行器状态”时,我只能看到与可用磁盘空间有关的统计信息(URI:)/computer。如何在Jenkins中监视空闲系统内存(RAM)? 我问,是因为有时候当我的执行者过多(尽管配置了交换空间,但下面没有)时,詹金斯却死机了或崩溃了很多。

1
从Slack将字符串传递给Jenkins工作
在理想的世界中,我们的技术知识程度较低的员工只需使用Slack命令来运行作业,并将结果轻松地反馈给他们,而无需使用Jenkins GUI。我发现在GitHub上使用Slack Command在Jenkins中开始构建,但是它有一些局限性,包括似乎要求Heroku实例与Jenkins作业的比例为1:1,这对我们的目的而言并不理想。 我的想法是让人们使用诸如的单数命令/jenkins,并在其后使用将由一项作业解析并用于在下游启动其他作业的参数。这使我们只能使用一个松弛命令/一个实例,但仍然为我们提供了所需的所有灵活性。 问题在于将参​​数传递给詹金斯。我在想像下面的工作流程; 用户类型/Jenkins job2 param1 param2为Slack。这正在调用一个伞形作业,它将解析参数以找出要运行的参数。 命令以某种方式发送到了伞式詹金斯的工作。Heroku实例,直接集成,带电子。 伞作业job2 param1 param2以字符串形式接收。(也许作为单个参数的值,也许预分割成多个字段) 如果尚未完成,Umbrella作业会拆分字符串,并job2使用参数param1和找出用户想要运行param2。 伞作业会执行一个buildjob来按要求运行下游作业,这会将Slack反馈给用户。 是第2-3步使我感到震惊。如何从Slack向我的Jenkins工作传递一个字符串(带空格!)? 如果我的前提不对,我也很乐意挑战自己的构架。
12 jenkins  slack 

2
使用Jenkins的sudo不好吗?
我使用“ 通过SSH发布”插件将我的应用程序部署Jenkins到不同的环境。一些部署作业会进行环境准备,诸如停止并重新启动应用程序服务器系统服务之类的事情。其中一些命令要求sudo。 我只是好奇在远程发布和执行Jenkins作业中要求sudo是否会是一种不良的安全做法。我们是否应该更改目标主机上的安全策略以允许执行所需功能而无需sudo?
11 jenkins  security 

3
Jenkins:使用Docker作为构建环境的权限问题
我在Ubuntu 16.04机器上安装了Jenkins。Jenkins本身不在容器中运行。我要做的只是yarn install使用节点图像进行调用。这是我的Jenkinsfile: pipeline { agent any stages { stage('install node modules...') { agent { docker 'node' } steps { sh 'cd /path/to/package.json; yarn install' } } } } 很简单吧? jenkins用户/组为112:116,节点容器的uid为1000,因此yarn进程(作为节点用户1000运行)无法执行其操作,例如mkdir /.config。 我试图旋转传入参数的节点容器-u 1000,在尝试创建持久目录时遇到了权限问题。 看起来像是另一种问题,我该如何解决? 詹金斯日志: 下面是构建开始和失败的地方。 [Pipeline] sh [Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2] Running shell script + docker inspect -f . node . …

1
詹金斯管道工作;正确引用slackSend步骤
这可能是100%用户错误,但是在slackSend步骤中,我无法获得管道作业来使用变量作为通道名称。 这同时使用了Slack插件和Build User Vars插件。我试图用来BUILD_USER_FIRST_NAME确定Slack退回到哪个渠道(即,开始构建的渠道应该是获取消息的渠道)。 这篇文章半路介绍了如何在管道作业中使用构建用户插件,但是替换变量让我大跌眼镜。 工作的相关部分如下所示; stage ('message') { wrap([$class: 'BuildUser']) { sh "printf '%s' ${BUILD_USER_FIRST_NAME} > name.txt" } archiveArtifacts artifacts: 'name.txt' name = readFile('name.txt') echo "name is $name" //works fine, I get Alex if ( "$output" != null ) { slackSend (channel: '@$name', color: '#36A64F', message: "Job succeeded") } …

2
在Jenkins Pipeline中运行Docker时正确的权限设置是什么?
我正在尝试建立一个新的jenkins管道,以测试对我们代码的新请求请求。我在ubuntu:14.04图像上使用docker 来模拟我们的生产环境。 这是一个最小的工作示例: #jenkinsfile stage('Checkout and provision'){ docker.image('ubuntu:14.04').withRun('-u root'){ checkout scm sh 'chmod -R 770 ./' sh './init-script.sh' } } 和 #init-script.sh sudo add-apt-repository ppa:ondrej/php sudo apt-get update -y sudo apt-get dist-upgrade -y sudo apt-get install \ apache2 \ php \ php-mysql \ php-xml \ libapache2-mod-auth-mysql \ libapache2-mod-php \ php5-curl …
11 jenkins  docker 

1
如何将job-dsl文件升级到Jenkins 2管道?
是否有将Jenkins job-dsl的大型存储库迁移到Jenkins2管道的常规做法?我正在寻找测试构建行为的方法,这比从相同代码库生成的工件进行比较要走得更远。 实际上,我们拥有通过Ansible部署的相当大的基础架构,并且我们获得了一个在拓扑上等效于生产环境的验证环境,因此这不是问题。我对我们可以自动化的验证实践更感兴趣,因为我们从300多个项目存储库中构建了更多信息,因此在Jenkins的几位大师中分布了数千个工作。


1
有没有一种方法可以禁用单个工作的Jenkins插件?
我使用“ 构建超时”插件来提醒作业卡住的时间。我有一个作业会触发此警报,因为它包含执行时间较长的步骤。我想禁用构建超时插件,但仅针对该工作,有没有办法做到这一点?我正在使用Jenkins v2.22。 我们不使用内置选项来使作业不会在超时时终止,而是使用sensu插件来监视possibleStuck变量的状态。

1
如何仅在完成时包括自定义Slack消息?
我们正在使用Slack Notification Plugin运行Jenkins 。有没有一种方法只能在完成时发送自定义消息,而不能在启动时发送自定义消息?需要明确的是,我不希望禁用的构建开始的消息,我只是想自定义文本,只显示在完成(成功)。 用例是删除堆栈之类的作业。我们使用自定义消息来明确说明删除作业的堆栈,但最终会出现松弛消息,例如(释义) Delete job started Deleted Alex stack Delete job finished Deleted Alex stack 显然,您可以看到引起混乱的地方。我宁愿得到 Delete job started Delete job finished Deleted Alex stack 如果是这样,“不能完成”是一个可以接受的答案。我知道我可以解决管道问题,但我希望快速解决尚未转换的工作。
11 jenkins  slack 

1
Elastic Beanstalk是否适合企业级CD?
我正在与一个使用Jenkins来构建微服务并将其部署到Elastic Beanstalk的项目一起工作。我们将集成分支部署到测试环境,将分支发布到暂存环境,然后将最终主版本构建到生产环境。我这样做有两个问题:首先,这意味着我们最终得到一个矩阵,该矩阵是每个项目每个环境一个构建的矩阵,需要重复的工作;第二,这意味着我们不会在生产中部署经过阶段验证的相同构建工件。 我倾向于放弃Beanstalk,而使用诸如Chef之类的东西迁移到普通的ASG。这将使我们每个项目只有一个构建,生成一个构建工件,并且我们可以将相同的工件部署到阶段中批准的生产中。但是,过渡的前期成本并不微不足道。有什么方法可以更好地使用Beanstalk,从而使CI / CD更可靠,更易于管理? 注意:推广相同的构建工件正是我想要做的,但是从文档中我看不到任何明确的方法;它说明了如何从您的应用程序源部署到EB,但没有说明如何将现有版本升级到另一个环境,除非我设法向右滚动。如果它可以在EB本身中使用,则Jenkins EB部署插件中可能会有一个限制,使其无法专门在Jenkins中完成,但是我还没有找到实现它的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.