How do you contribute a health check?
TL;DR don’t
But for the realistic explanation: ArgoCD is a mature Project which is used by a dozen of big players in the industry. Therefore, it tends to have a high bureaucracy. After implementing our health check, we found that out through experience. ArgoCD defines a set of guidelines in order to manage contributions to their rather large project.
Firstly, you have to create a discussion for everything that is not a chore task. A chore task is, for example, a dependency bump from Dependabot. But in our case, we opened an enhancement. We included a summary, our motivation and a possible solution of the underlying problem. We crafted this proposal to be able to follow up with our implementation of the fix. After the enhancement proposal, we continued with our Pull request. We had to integrate our code into the existing structure. Our work had to be put into “resource_customizations/argoproj.io/EventBus/”. This repository requires some tests too. So, we added a degraded and a healthy Event Bus definition for integration tests.
We naively tried to just push our commits to a fork and created a pull request. This is where we met the DCO. DCO stands for Developer Certificate of Origin and is actually a quite simple check that requires all commits of the PR to include a “Signed-off-by” line in the message. Furthermore, ArgoCD only trusts “verified” commits. We struggled a bit and after 3 retries of creating a fork and creating a PR for it, we finally got green lights from DCO. After a brief period of excitement, we noticed that the end-to-end tests were failing.. After.. 45 min. ArgoCD tests E2E for 4 different Kubernetes versions. And the tests were failing because of a bug not introduced by us, but already built into the main branch.
Somehow we came across pull request again and merged the new master into it and ZACK all tests a green. We pinged a reviewer and are currently writing this in the ArgoCD lifecycle to get merged by a final review.