DevOps

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

3
是否在美国托管了iOS版CI / CD?
TL; DR:您是否知道iOS的托管CI / CD提供商,它们的数据中心/构建盒位于亚洲或至少在欧洲?(如果他们提供构建和部署,则奖励点,但是构建是MVP。) 幕后故事: 我们正在针对iOS和Android大规模运行CI / CD:我们同时运行10多个版本,以测试/验证我们的Merge-Request分支,并将主干版本部署到测试人员和涉众。我们正在使用我们非常满意的SaaS /云提供商...除了它们的位置。 我们在亚洲,正如我们的消息来源一样。客户处于一个受到严格监管的行业中,并且为使源保持在本地状态而进行了艰苦的努力,因为他们认为他们的监管者尚无法处理云中的源。请接受这个前提。我了解为什么他们需要放手。但是现在……假设他们做不到。 这意味着:来源在亚洲,但是构建它的CI / CD提供者似乎都在美国(Circle,Buddybuild等)。跨太平洋的带宽很低,尤其是在亚洲工作日。在大多数工作日中,每个克隆在每次构建之前花费的时间会超过60分钟。 对于CI / CD而言,在docker容器上进行Android构建非常容易。但是iOS是问题所在。您要么需要自己去教别人管理OSX并保持大量的构建盒正常运转,要么需要让专家为您解决该问题。 笔记: 我不是在寻求建议,SE社区!这是一个实际的技术问题:在特定的地理位置是否提供满足某些技术要求的某些服务? 我们知道MacStadium可以在爱尔兰提供裸MacOS VM。但这意味着您必须管理自己的整个CI流程,以及我们宁愿避免的许多低级系统管理任务。当然,这也意味着将构建与部署分开。但是延迟似乎是可以接受的。 我们知道其他人拥有更接近我们的云CI / CD平台...但是没有iOS / MacOS支持。 我们知道浅层克隆需要较少的带宽,这可以缓解问题,但是它们还具有其他复杂性,这意味着我们当前的提供商尚不支持它。而且它们在任何情况下都不能完全解决问题。 我们已经尝试过使用非本地GitHub镜像,该镜像解决了一些问题,但没有解决监管问题。它也不适用于许多Webhook,特别是对于我们的CI管道中的新代码至关重要的Merge-Request Webhook。我们可以创建一个代理来监视webhooks,然后将API命令强制中继给其他服务提供者...但这确实是一个难题,而且我们还创建了许多新代码来维护。

4
终止DevOps工作流程的利弊?
我正在尝试评估从devops风格的工作流程转到传统的dev-then-ops(不确定该怎么称呼)是否是一个好主意。 我们是一个由5人组成的小型部门,隶属于4000名员工的传统媒体(例如非软件)公司。两年前,我们开始构建软件,以使我们的部门能够显着扩大生产规模。我们已经取得了很大的成功,更大的公司开始注意到这一点。迄今为止,我们已全权负责已成为约10个服务的AWS微服务平台的设计,开发和部署。我们的团队并没有将其识别为DevOps,但是毫无疑问,我们过着DevOps的生活,每个开发人员都非常熟悉代码及其运行的系统。 我们不久将面临的问题之一是我们与母公司的IT部门之间共享什么“效率”。我们的项目所有者通常更喜欢外包而不是内部学习,因此,在我们的案例中,这些效率可能意味着尽可能多地利用IT工作。目前,我想说我们的团队在编码经验和基础架构经验之间占70/30%的比例。IT部门扎根于IT领域,没有明显的过渡到软件开发的过程。 我们的项目负责人(非技术人员)希望通过将尽可能多的工作交给IT团队,我们将在每个小时的工作中看到生产率提高1:1左右。我对此表示怀疑。我们的产品仍处于测试阶段(尽管已经是一项重要的业务资产),并且根据我们在IT部门的有限经验,通常会发生诸如文件系统权限更改之类的简单事情的严重延迟。 目前,我理想的解决方案是让IT部门“采用”我们并允许我们继续部署自己的工作,同时确保我们满足IT部门的标准和要求。我不确定那有多现实。另外,这几乎是我们项目所有者提倡的相反方法,因为它会在短期内增加其他操作工作。 在我们的情况下,坚持使用DevOps方法与交付IT相比可能有什么利弊?

3
无法在多机器无所事事的环境中使用ssh
我创建了一个三节点多机无业游民的环境,并且遇到了从一个无业游民的虚拟机切换到另一个无人值守的虚拟机的问题。 这是Vagrantfile: Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.define "master" do |master| master.vm.hostname = "master.local" master.vm.network "private_network", type: "dhcp" end config.vm.define "node1" do |node1| node1.vm.hostname = "node1.local" node1.vm.network "private_network", type: "dhcp" end config.vm.define "node2" do |node2| node2.vm.hostname = "node2.local" node2.vm.network "private_network", type: "dhcp" end end 主机文件(在每个节点上相同): $ cat /etc/hosts 172.28.128.3 …
9 vagrant 

2
如何在詹金斯同时重建多个工作?
我正在使用Jenkins 重建插件通过一个“ 重建”按钮执行参数化的构建。但是,当我需要重新运行数十个参数化的作业(无论是选择的作业,还是来自同一文件夹的作业)时,它仍然效率不高。 有没有更简单的方法(最终使用不同的插件)来使用上次使用的参数同时重新运行多个作业?


1
由于AutoScaling组状态下的扩展策略,如何管理所需容量的更改?
由于Terraform中AutoScaling组状态下的缩放策略,如何管理所需容量的变化? 具体来说,假设我提供了一个Terras的aws_autoscaling_group资源,desirable_capacity为4,并且在高CPU利用率上采用了扩展策略。后来,自动缩放组已通过缩放策略更新为所需容量6,但是在我的terraform .tfstate中未捕获此状态。 如果我想通过terraform对我的自动缩放组状态进行后续更改,该如何在不重置desirable_capacity的情况下进行更改(因为它在.tf中没有更改)?我可以以某种方式自动更新desirable_capacity以匹配当前组的大小,还是应该根本不设置desired_capacity?

2
如何在外部发布Jenkins工作图标?
我正在使用Promoted Builds Plugin在某些条件下将某些图标分配给Jenkins作业,我想发布这些促销图标。 如何为每个作业生成指向这些图标的外部链接,以便可以从外部访问它们? ————— 例如,我想README.md在GitHub上创建表,例如: Job 1 | ![](link_to_icon_of_job_1) Job 2 | ![](link_to_icon_of_job_2) Job 3 | ![](link_to_icon_of_job_3)
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.