DevOps

针对从事自动化测试,持续交付,服务集成和监控以及构建SDLC基础架构的软件工程师的问答

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

2
如何实施紧急修复的四眼原则?
考虑这种情况(与现实情况的任何比较纯属偶然): 凌晨3:07:即将到来的支持电话“ 生产中的某件故障,我需要您的帮助! ”。 凌晨3:12:已连接到系统(已接受登录)...而且没有时间喝咖啡。 凌晨3:15:很幸运,您可以立即通过某个错误消息在某处发现问题。 凌晨3:17:使用您的SCM工具箱获取代码,修复问题,对其进行测试,太好了……我的修复工作正常! 凌晨3:20:与Dev Ops团队取得联系,以发送修复程序并重新开始生产。 凌晨3:21:危险信号……“ 为了尊重四只眼睛,我们还需要2只眼睛才能获得此修复程序的批准 ”。 凌晨3:22:ggggrrrreat,现在呢,我们还能叫谁(=叫醒经理)? 如果您实施了类似于我对“ 四眼原则的可能实现方式(或示例)有什么答案?”的回答的批准程序,那么您很不走运……这是您的选择: 您的修补程序将被卡住(阅读:生产将下降),直到另外2只眼睛介入为止。 您想出一种方法来避开丢失的眼睛。 那么如何实施紧急修复的四眼原则呢?...这样您就可以尽快开始生产,即大约 凌晨3:25 ...并且还可以关闭该呼叫(并返回到您的来源)?

6
我的组织是否需要采用敏捷软件。开发人员 在采用DevOps之前?
敏捷软件开发是当今软件商店的首选方法。但是仍然有一些组织在软件开发方面没有实践敏捷,他们可能对采用DevOps感兴趣。 当我说敏捷软件开发时,我指的是敏捷软件开发宣言中的任何后代。如极限编程,Scrum,精益软件开发等。 敏捷软件开发是否是在组织级别采用DevOps的强制性先决条件?
13 culture  agile 


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 

4
是否有定期清除旧Docker映像的最佳实践和/或工具?
从Docker注册表中删除旧映像时,是否有一种优雅的方法或最佳实践? 我在这里看到很多请求/问题:https : //github.com/docker/docker-registry/labels/delete,但是没有找到一个很好的/受欢迎的解决方案。 那么,有没有工具或技术可以帮助我做到这一点? 另外,您在进行操作时是否遵循最佳做法?
13 docker  toolchain 

2
在连续交付结束时如何实施手动步骤?
关于“ 持续集成如何与持续交付/部署有何关系? ”这一问题的公认答案也解释了持续交付和持续部署之间的微小差异。它似乎与以下问题的答案有关:“您想如何将其部署到生产中,而这些(专有)选项是您可以从中选择的: 自动)。 手册。 我无法想象在DevOps墙的另一侧会有一个可怜的“操作员”,他将不得不做与“手动”所指的内容相对应的事情……我的问题: (在我的问题中)我对“分发”与“安装”的引用是否接近这种“手动”东西的可能实现?这是我相关问题的相关报价: 使用FTP之类的工具(如果标准副本无法弥合差距)将其分发到某些目标环境,但尚未在目标中激活它。那应该类似于/接近连续交付吗? 在某些目标环境中安装(或激活),并结合诸如绑定,停止/启动操作等内容。这应该类似于/接近于连续部署吗? 它还有其他可能的实现方式吗?


1
如何将基于队列的处理延迟传达给非技术团队成员?
我负责使用ApproximateNumberOfMessagesVisibleCloudWatch指标上的扩展策略执行一组SQS队列处理作业。由于多种原因,这些作业可能无法跟上所发送消息的数量: 服务降级会降低能够处理的消息的容量。 AutoScaling 队列深度持续增加时达到最大限制。 S3中断会影响AutoScaling队列处理作业用来满足需求的其他相关AWS服务(服务)。 在与非技术团队成员讨论中断时,我想传达特定的队列处理延迟,这些延迟可以转化为客户可见的降级。如何使用SQS队列执行此操作?

2
有哪些方法可以使部署与发布脱钩?
连续部署的一种方法是将部署与发布脱钩,即在不立即激活更改的情况下部署更新。 我知道可以使用功能切换,但是我想知道是否还有其他“非功能”技术。 例如,您会为错误修正构建功能切换吗?可能不是,而且有人可能会争辩说应该尽快部署错误修正,因为它只会变得更好。而且,在发布错误修正后,我当然不想再将其关闭。但是是这样吗?您想以受控方式发布可能是一项冒险的更改。如果有有意想不到的副作用,这是很好的能够回滚。那么,每项更改的功能标志? 视觉变化又如何呢?例如,您可以在CSS中实现类似功能标记的功能吗?有道理吗?

3
如何解决Prometheus数据库中丢失的数据?
我已逐渐将Prometheus集成到我的监视工作流程中,以便收集有关运行基础结构的详细指标。 在此期间,我注意到我经常遇到一个奇特的问题:有时候,一个应该被Prometheus提取数据的出口商变得毫无反应。可能是由于网络配置错误-它不再可访问-或仅仅是因为出口商崩溃了。 无论是什么原因,我都会发现我希望在Prometheus中看到的某些数据丢失了,并且在一定时间内该系列中没有任何数据。有时,一个出口商失败(计时?)也似乎导致其他出口商失败(第一次超时将整个作业推到了顶级超时之上?只是推测)。 我看到的只是该系列中的空白,如上面的可视化效果所示。发生这种情况时,日志中没有任何内容。普罗米修斯的自我指标似乎也很贫乏。我只是不得不手动尝试复制Prometheus所做的事情并查看它在哪里中断。真讨厌 一定会有更好的办法!尽管我不需要实时警报,但我至少希望能够看到导出器无法传递数据。即使是布尔值“嘿检查您的数据”标志也将是一个开始。 我如何获得有关普罗米修斯未能从出口商获得数据的有意义的信息?我如何理解为什么无需执行Prometheus数据收集的手动模拟而存在差距?在这方面有哪些明智的做法,甚至扩展到普罗米修斯(Prometheus)以外的总体监测数据收集方面?

2
设计蓝绿色部署如何将网络套接字流量从实时服务器发布到热插拔服务器
蓝绿色部署涉及将活动产品数据流(蓝色)泵入热交换非产品环境(绿色)中,以准备部署到绿色环境中,从而使绿色具有与先前产品蓝色环境的完整数据同步。 我想知道人们正在使用什么方式将正在进行的Websocket流量从蓝色实时复制到绿色,我是自己编写还是发布/订阅Websocket库,或者是否有其他方法可以实现蓝绿色? 我的应用程序具有nodejs REST服务器,该服务器还管理来自移动设备的websocket通信... mongodb服务器等...每个都在GCE / AWS上的容器中 我意识到我可以使mongodb从蓝色同步到绿色,但是这不会使绿色的Node.js服务器具有实时流量,这是我正在寻找的不错的回归合理性检查 如果我只转发HTTP流量,则运行在HTTP之上的基础websocket可能会自行处理,而不需要特定的蓝绿色设置

4
如何通过AWS CLI在EC2实例上运行脚本或命令?
根据New EC2 Run Command新闻文章,AWS CLI应该支持一个新的子命令来在远程EC2实例上执行脚本。 但是,我已经签入了aws ec2 help,但是找不到相关的命令。 我已经aws通过安装了apt-get: $ aws --version aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36 我应该寻找哪个子命令以及要运行的语法是什么,比如说ipconfig在远程EC2实例上的PowerShell中?

3
使用相同的项目列表执行多个Ansible任务
我正在使用ansible剧本来为站点列表配置Apache。剧本必须将每个站点的虚拟主机配置模板复制到位,然后使用a2ensite以下命令启用每个站点: - name: Install apache site conf template: src=apache-sites-{{item}}-conf.j2 dest=/etc/apache2/sites-available/{{item}}.conf mode=0644 with_items: - sitea - siteb - sitec - sited - name: Enable site apache conf command: a2ensite {{item}} args: creates: /etc/apache2/sites-enabled/{{item}}.conf with_items: - sitea - siteb - sitec - sited 我不想为每个任务重复相同的列表。如何配置剧本以执行具有相同项目列表的两个任务?
13 ansible 

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.