组织文化特点变现在_没有文化特色

组织文化特点变现在

什么是CI? (What is CI?)

You probably already know that CI stands for Continuous Integration, but what exactly are we integrating?

您可能已经知道CI代表持续集成,但是我们究竟要集成什么?

From Wikipedia:

维基百科

In software engineering, continuous integration (CI) is the practice of merging all developers’ working copies to a shared mainline several times a day.

在软件工程中,连续集成(CI)是每天将所有开发人员的工作副本合并到共享主线中的一种做法。

This practice saves us time and effort because the longer the development continues on a branch without merging back to the main repository, the greater the risk of multiple integration conflicts and failures when the developer branch is eventually merged back.

这种做法节省了我们的时间和精力,因为在分支上继续进行开发而不合并回主存储库的时间越长,当开发人员分支最终合并回去时,多重集成冲突和失败的风险就越大。

When changes are merged to the main repository, automatic tests are being run to ensure that these changes do not break functionality, and that our code is still stable. This automation allows us to detect conflicts early, thus saving time.

将更改合并到主存储库后,将运行自动测试以确保这些更改不会破坏功能,并且我们的代码仍然稳定。 这种自动化使我们能够及早发现冲突,从而节省了时间。

I suggest that this practice can be scaled up. Not only can we continuously integrate changes in our own code base, but we can continuously integrate changes in other code bases on which we depend.

我建议可以扩大这种做法。 我们不仅可以将更改不断集成到我们自己的代码库中,还可以将更改不断集成到我们所依赖的其他代码库中。

依赖关系,依赖关系,依赖关系 (Dependencies, dependencies, dependencies)

During code development we may depend on a plethora of different dependencies: a compiler, an interpreter, IDEs, test frameworks, linter, etc. In addition, let’s not forget about code dependencies. You must agree that sometime our code development may seem like building Lego made up of third-party code libraries.

在代码开发期间,我们可能依赖大量不同的依赖项:编译器,解释器,IDE,测试框架,linter等。此外,我们不要忘记代码依赖项。 您必须同意,有时我们的代码开发似乎就像构建由第三方代码库组成的Lego。

New versions of said dependencies come out all the time by their developers. When developing code over a period of time, we can benefit from continuously integrating those new versions with our code:

所述依赖关系的新版本一直在出现 由他们的开发商。 在一段时间内开发代码时, 我们可以从不断将这些新版本与我们的代码集成中受益

  • sometimes this can reflect in performance improvements;

    有时这可以反映出性能的提高;
  • in other times new features can be published which would ease our own code development;

    在其他时间可以发布新功能 这将简化我们自己的代码开发;

  • in better cases tiresome bugs are attended and fixes;

    在更好的情况下,会出现烦人的错误并进行修复;
  • and in the best case, we avoid losing support as certain versions can become deprecated. This is no joke — as critical security flaws could be discovered and never fixed.

    在最好的情况下,我们避免失去支持 因为某些版本可能会被弃用。 这不是开玩笑,因为可能会发现并且永远不会修复关键的安全漏洞。

As long as we refrain from upgrading our dependencies, we’d have to deal with more conflicts and failures just like if we delay the integration of our changes to the source code.

只要我们避免升级依赖项,就必须处理更多的冲突和失败 ,就像我们延迟将更改的集成集成到源代码中一样

In other words, we should be continuously integrating the latest versions of our dependencies in order for our code to be more feature-richer and more stable.

换句话说,我们应该不断集成依赖项的最新版本,以使我们的代码更丰富,更稳定。

自动化 (Automation)

As said in the introduction, when a change is made to the code base, tests are being run automatically to validate the integrity of the product. We can also run these tests when a new version of one of our dependencies is released.

如引言中所述,当对代码库进行更改时,测试将自动运行 验证产品的完整性。 当其中一个依赖项的新版本发布时,我们也可以运行这些测试。

We can also automate the process of packaging our product into an artifact which can be delivered to our user.

我们还可以自动化将产品包装到工件中的过程,该工件可以交付给我们的用户。

Image for post

持续交付 (Continuous Delivery)

Continuous delivery is an approach in which teams release new versions of their software in short cycles.

持续交付是团队在短周期内发布其软件的新版本的一种方法。

When a change is made to our code base — containing a feature or a bug fix — we’d want to release that change to our users as fast as possible. This allows us to gain feedback from the users about the change more quickly, which lets us focus our development on the next change.

当我们对代码库进行更改(包含功能或错误修复)时,我们希望将更改尽快发布给用户。 这使我们能够更快地从用户那里获得有关更改的反馈,从而使我们可以将开发重点放在下一个更改上。

That said, of course, regardless if our product is aimed for an end-user or a tool/library for other developers. If the latter is the case, that other developer could be you!

也就是说,当然,无论我们的产品是针对最终用户还是针对其他开发人员的工具/库。 如果是后者,那么其他开发人员可能就是您!

That operation can be automated in such a way in which we release a new version of our code automatically each time our CI infrastructure concluded that our code has passed all the necessary tests — validating that our code is ready for delivery.

该操作可以通过以下方式实现自动化:每次我们的CI基础架构断定我们的代码已通过所有必要的测试时 ,我们就会自动发布新版本的代码,从而验证我们的代码已准备好交付。

Image for post

我为人人人人为我! (One for all, all for one!)

Implementing both CI and CD in our product allows our users to get the latest features or bug fixes which helps us learn how our changes were accepted, but also helps them with their development, as they get our latest improvements.

在我们的产品中同时实施CI和CD,使我们的用户可以获得最新的功能或错误修复,这有助于我们了解如何接受更改,也有助于他们 随着他们的发展,因为他们得到了我们的最新改进。

Likewise, if each one of our dependencies would implement CI/CD, we’d benefit as well, as we get their (and their dependencies’) latest improvements.

同样,如果我们的每个依赖项都将实现CI / CD,那么我们也会从中受益,因为我们可以获得它们(及其依赖项)的最新改进。

So, if everyone were to continuously integrate better tools, improved their own libraries, and continuously deliver their upgraded products, everyone in the chain would benefit.

因此,如果每个人都要不断集成更好的工具,改进自己的库并不断交付升级的产品,那么链中的每个人都会从中受益。

结论 (Conclusion)

Implementing CI in our projects saves us time and effort by reducing the time needed to integrate new changes to our code.

在我们的项目中实施CI可以节省我们的时间和精力 通过减少将新更改集成到我们的代码中所需的时间。

Expanding on that notion, we may as well continuously integrate newer versions of our dependencies, allowing us to always work with their best version of the product.

在这个概念上扩展,我们还可以不断集成依赖项的较新版本,从而使我们能够始终使用其最佳版本的产品来工作。

Using continuous delivery for an automated release of your software is a good idea too: we’d benefit from faster feedback which will focus our development on the needs of our users. Also, our users would benefit as well by getting the latest, most improved version of your product.

使用连续交付 自动发布软件也是一个好主意:我们将从更快的反馈中受益,这些反馈将集中于我们的开发 根据我们用户的需求。 还有,我们的 用户也会受益 获得最新,最完​​善的产品版本。

A good CI/CD infrastructure benefits everyone in the chain of development — making everyone’s code more reliable and stable yet still very dynamic for changes.

好的CI / CD基础架构可以使开发链中的每个人受益 -使每个人的代码更可靠,更稳定,但对于更改仍然非常动态。

翻译自: https://medium.com/@nadavgoldenberg/ci-cd-its-a-culture-not-a-feature-42496116f2e9

组织文化特点变现在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值