基础设施

概述

作为一个独立的开源项目,Jenkins项目维护了它自己的大部分基础设施,包括帮助保持项必威国际有限公司目运行的服务。属于“基础设施”的内容可以从操作虚拟机、容器、配置网络或开发和维护特定于项目的应用程序,从而使Jenkins核心和插件的开发更加高效。必威国际有限公司

因为我们坚信开源原则,所以我们也将它们应用到我们的基础设施中。因此,我们认为自己是一个开放的基础设施项目,每个人都被邀请去学习、分享和贡献。

概述

团队

必威国际有限公司Jenkins基础架构由Jenkins基础架构团队维护。这个团队由Jenkins贡献者和志愿者组成,必威国际有限公司他们根据可用性和其他承诺提供最大努力的支持。我们一直在寻找有兴趣改善Jenkins服务并帮助维护它们的贡献者。必威国际有限公司

团队结构

这一节正在开发中

会议

必威国际有限公司Jenkins Infra团队在周五14:00 UTC有一个每周会议。该活动是一个定期安排的会议,用于同步Jenkins项目中正在进行的各种基础设施计划。必威国际有限公司这个会议对所有感兴趣的人开放。看到事件日历会议链接。

您可以找到Infra团队会议议程和会议记录必威国际有限公司jenkins-infra /文档

基础设施

供应

Jenk必威国际有限公司ins项目的大部分基础设施都在Azure上运行,由持续交付的基础.此基础设施由存储库提供必威国际有限公司jenkins-infra /天蓝色使用Terraform和AKS图表

虽然我们试图坚持使用Azure,但我们仍然有不同组织赞助的机器,比如OSUOSL、AWS、Rackspace或CloudBees。

配置管理

基础设施

Jenk必威国际有限公司ins项目的基础设施是通过一个名为必威国际有限公司jenkins-infra / jenkins-infra使用傀儡。我们还使用了Kubernetes集群必威国际有限公司jenkins-infra /图表使用Helm & Helmfiles。

监控

基础设施通过Datadog进行监控。Datadog配置自动与Terraform必威国际有限公司jenkins-infra / datadog

我们还提供不同的仪表板来共享我们系统的健康状况。

状态页

融合

报告

Pagerduty是用来报告由Datadog检测到的问题,我们有一个遵循太阳政策,我们试图只在我们的“可用”时间随叫随到。

服务

詹金斯基础设施项目的另一个主要方面是维护我们或第三方提供必威国际有限公司的所有服务。以下是我们所提供和维护的服务的非详尽列表。

Kubernetes中的自托管服务

服务 JIRA组件(年代) 库和链接

账户

账户accountapp

代码执掌图表

聊天机器人

ircbot

代码执掌图表

Infra CI - https://infra.ci.必威国际有限公司jenkins.io/

下文

发布CI - https://release.ci.jenkin必威国际有限公司s.io/

ci.必威国际有限公司jenkins.ioci

代码执掌图表

私人文物- https://repo.private.jenkins.io/必威国际有限公司

执掌图表

Javadoc

javadoc

代码执掌图表

Keycloak身份管理

执掌图表

LDAP

ldap

码头工人执掌图表

SSL证书更新

执掌图表

主要的网站

必威国际有限公司jenkins.io

代码执掌图表

插件的网站

plugins.必威国际有限公司jenkins.io

代码执掌图表

插件站点API后端

plugins.必威国际有限公司jenkins.io

代码执掌图表

民意调查网站

执掌图表

报告的网站

执掌图表

上行

上行

代码执掌图表

Wiki出口国

GitHub的问题

代码执掌图表

自托管服务

服务 JIRA组件(年代) 库和链接

档案

archives.必威国际有限公司jenkins-ci.org

木偶的代码

核心和插件CI

ci.必威国际有限公司jenkins.ioci

用户文档部署脚本

镜子

get.必威国际有限公司jenkins.io

Mirrorbits执掌图表镜子列表镜像数据运行一个镜子

古老的镜子

mirrors.必威国际有限公司jenkins.io

old mirrors.必威国际有限公司jenkins.io Puppet脚本(搜索mirrorbrain),老镜脚本老状态页

下载

pkg.必威国际有限公司jenkins.io

木偶的脚本

统计数据

代码发布与GitHub页面

更新中心

updates.必威国际有限公司jenkins.io

代码

VPN

vpn

代码

维基(弃用)

维基

码头工人

SaaS

服务 提供者 JIRA组件(年代) 存储库

Artifactory

JFrog

artifactory

-

GitHub

GitHub

github

-

监控

Datadog

datadog

代码

Pagerduty

Pagerduty

-

git聊天系统

GitLab

-

内容分发网络

急剧

-

域名注册商

Namecheap上

-

Jira

Linux基金会

Linux基金会的支持

-

子项目/团体服务

必威国际有限公司Jenkins基础设施还为子项目和特殊兴趣小组提供一些服务:

服务 主人子项目/团体 JIRA组件(年代) 存储库

网站在中国

中国本地化

cn.必威国际有限公司jenkins.io

代码

代码和存储库签名

发布团队

释放

DigiCert

贡献

我们的基础设施是一个开放的基础设施项目,由Jenkins社区创建并为其服务。必威国际有限公司换句话说,它是一个贡献者驱动的项目。虽然我们不能公开所有东西,比如秘密、证书……但我们仍然尽量做到透明,这样每个人都可以在没有特权访问的情况下理解并改进我们的基础设施。如果你有任何可以帮助基础设施或引起社区兴趣的想法,请随时提出建议。

在进一步讨论之前,我们假设:

贡献的工作流

为了对基础设施项目做出贡献,我们要求人们遵循以下步骤

选择任务=>沟通=>实施=>部署=>回顾

完成一项任务

为了跟踪Jenkins基础设施项目中需要完成的工作,我们使用了“INFRA”项目必威国际有限公司Jira.因此,在做出任何贡献之前要做的第一件事是找到正确的票,分配给你,然后就它进行沟通。

如果您找不到合适的票据,请创建一个新的票据,并明确说明需要做什么以及为什么要做。一些jen必威国际有限公司kins-infra git库引用可以帮助理解上下文。您还可以指定组件,最后您可以使用下一节的建议进行交流。

备注

虽然一个票据可以有不同的组件分配给它,但我们也使用标签newbie-friendly确定可以由新参与者完成的任务。

沟通

在任何实现之前,首先验证(仍然)需要某些实现,然后验证过去没有做过任何工作,这一点很重要。最好的方法是查看类似的Jira票,在IRC或邮件列表上询问。你也可以参加我们的每周会议来讨论和协调这些变化。

当主题太宽泛或难以在几行内解释时,我们就写等电位点这个文件的目的是解释我们为什么需要某些东西,我们想如何解决它,以及我们为什么作出最后决定。最后,一旦你有了车票id,你就可以开始寻找知识渊博的人了。

无论如何,记住,信息太多总比信息太少好,最终你可能会成为处理你的案子的最佳人选。

简而言之
+----------------------------------+ | | | 接或创建下文票  | | | +----+----+------------------------+ | | 如果没有反应后几天| |促进  | | +------------------------------------------+ | | | | | +--------------------> IRC:利比里亚聊天# jenki必威国际有限公司ns-infra  <----+ | | | | | | | +------------------------------------------+ | | | +------------------------------------------+ | | | | | | | +--------------------> 邮件:必威国际有限公司jenkins-infra@googlegroups.com  <----+ | | | | | +------------------------------------------+ | | 如果这个话题太大了  | | | | +-------------------------------------------+ | | | | | +--------------------> 掌握:https://github.com/jenkins-infra/iep  |--------+ | | +-------------------------------------------+

实现

一旦对方法达成一致,在做出任何改变之前,我们要求贡献者遵守以下规则。

这些规则正是我们认为贡献者驱动的项目的“最佳实践”,可以根据特定的git存储库进行调整。

规则1:所有内容都在git仓库中必威国际有限公司jenkins-infra组织。

这样每个人都更容易发现/审查/审计更改并提出改进建议。

规则2:所有更改都由至少一个常规的基础架构贡献者通过Pull Request进行验证。

所以我们总是有不同的人来理解基础设施的变化。

Rem:我们非常欢迎非定期贡献者分享他们的专业知识,或者只是提出问题,这也有助于发现不连贯的地方。

代码评审的目的:

  • 告诉作者和团队代码的变化

  • 发现测试未涵盖的逻辑或安全问题

  • 收集关于代码可读性或效率的改进建议

    规则3:对所有更改进行测试ci.必威国际有限公司jenkins.io

    所以当合并PRs时,我们感觉更舒服,我们避免了回归问题。

    规则4:一切都是自动化的。

    所以我们只有一个真相来源我们不会破坏别人的工作。如果这是不可能的,那么就需要很好地沟通和记录,参照规则1。

    规则5:所有的变化都遵循Github工作流。
分叉项目->创建特性分支-> Open Pull Request -> Ask Review -> Merge

部署

部署步骤是我们唯一需要得到高度许可的人批准的时刻。如前所述,即使我们试图尽可能地开放,我们也不想与每个贡献者共享特权访问,即使我们信任他们,这主要是出于安全原因。

在查看Jenkins基础设施项目时可以帮助的各种链接必威国际有限公司