Skip to content

Commit

Permalink
Automatic build triggered by last commit
Browse files Browse the repository at this point in the history
  • Loading branch information
gardener-robot-ci-1 committed Jun 6, 2024
1 parent 6021f78 commit df0b232
Show file tree
Hide file tree
Showing 8 changed files with 215 additions and 215 deletions.
File renamed without changes
2 changes: 1 addition & 1 deletion docs/_print/docs/contribute/code/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/docs/contribute/code/>Return to the regular view of this page</a>.</p></div><h1 class=title>Contributing Code</h1><div class=content><p>You are welcome to <strong>contribute code</strong> to Gardener in order to fix a bug or to implement a new feature.</p><p>The following rules govern code contributions:</p><ul><li>Contributions must be licensed under the <a href=http://www.apache.org/licenses/LICENSE-2.0>Apache 2.0 License</a></li><li>You need to sign the Contributor License Agreement. We are using <em><a href=https://cla-assistant.io/>CLA assistant</a></em> providing a click-through workflow for accepting the CLA. For company contributors additionally the company needs to sign a corporate license agreement. See the following sections for details.</li></ul></div></div><div class=td-content style=page-break-before:always><h1 id=pg-991e3171b94991ddd230a30fbf7f2016>1 - Contributing Bigger Changes</h1><h2 id=contributing-bigger-changes>Contributing Bigger Changes</h2><p>Here are the guidelines you should follow when contributing larger changes to Gardener:</p><ul><li><p>Avoid proposing a big change in one single PR. Instead, split your work into multiple stages which are independently mergeable and create one PR for each stage. For example, if introducing a new API resource and its controller, these stages could be:</p><ul><li>API resource types, including defaults and generated code.</li><li>API resource validation.</li><li>API server storage.</li><li>Admission plugin(s), if any.</li><li>Controller(s), including changes to existing controllers. Split this phase further into different functional subsets if appropriate.</li></ul></li><li><p>If you realize later that changes to artifacts introduced in a previous stage are required, by all means make them and explain in the PR why they were needed.</p></li><li><p>Consider splitting a big PR further into multiple commits to allow for more focused reviews. For example, you could add unit tests / documentation in separate commits from the rest of the code. If you have to adapt your PR to review feedback, prefer doing that also in a separate commit to make it easier for reviewers to check how their feedback has been addressed.</p></li><li><p>To make the review process more efficient and avoid too many long discussions in the PR itself, ask for a &ldquo;main reviewer&rdquo; to be assigned to your change, then work with this person to make sure he or she understands it in detail, and agree together on any improvements that may be needed. If you can&rsquo;t reach an agreement on certain topics, comment on the PR and invite other people to join the discussion.</p></li><li><p>Even if you have a &ldquo;main reviewer&rdquo; assigned, you may still get feedback from other reviewers. In general, these &ldquo;non-main reviewers&rdquo; are advised to focus more on the design and overall approach rather than the implementation details. Make sure that you address any concerns on this level appropriately.</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-4a215fa9f7c2464597fdf64c0c0639ff>2 - CI/CD</h1><h1 id=cicd>CI/CD</h1><p>As an execution environment for CI/CD workloads, we use <a href=https://concourse-ci.org>Concourse</a>.
We however abstract from the underlying &ldquo;build executor&rdquo; and instead offer a
<code>Pipeline Definition Contract</code>, through which components declare their build pipelines as
required.</p><p><img src="/__resources/overview_c029e2.png?raw=true" alt=Overview></p><p>In order to run continuous delivery workloads for all components contributing to the
required.</p><p><img src=/__resources/overview_2a165b.png alt=Overview></p><p>In order to run continuous delivery workloads for all components contributing to the
<a href=https://github.com/gardener>Gardener</a> project, we operate a central service.</p><p>Typical workloads encompass the execution of tests and builds of a variety of technologies,
as well as building and publishing container images, typically containing build results.</p><p>We are building our CI/CD offering around some principles:</p><ul><li><em>container-native</em> - each workload is executed within a container environment. Components may customise used container images</li><li><em>automation</em> - pipelines are generated without manual interaction</li><li><em>self-service</em> - components customise their pipelines by changing their sources</li><li><em>standardisation</em></li></ul><p><strong>Learn more on our: <a href=https://gardener.github.io/cc-utils/>Build Pipeline Reference Manual</a></strong></p></div><div class=td-content style=page-break-before:always><h1 id=pg-cf394069a680a36278b73b0fe5f5249e>3 - Dependencies</h1><h1 id=testing>Testing</h1><p>We follow the BDD-style testing principles and are leveraging the <a href=https://onsi.github.io/ginkgo/>Ginkgo</a> framework along with <a href=http://onsi.github.io/gomega/>Gomega</a> as matcher library. In order to execute the existing tests, you can use</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>make test <span style=color:green># runs tests</span>
</span></span><span style=display:flex><span>make verify <span style=color:green># runs static code checks and test</span>
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/_print/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -17789,7 +17789,7 @@
Environments</a>.</p></li></ul><h3 id=steps-to-contribute>Steps to Contribute</h3><p>Should you wish to work on an issue, please claim it first by commenting on the GitHub issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue.</p><p>If you have questions about one of the issues, with or without the tag, please comment on them and one of the maintainers will clarify it.</p><p>We kindly ask you to follow the <a href=/docs/contribute/#pull-request-checklist>Pull Request Checklist</a> to ensure reviews can happen accordingly.</p><h3 id=pull-request-checklist>Pull Request Checklist</h3><ul><li><p>Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn&rsquo;t merge cleanly with master you may be asked to rebase your changes.</p></li><li><p>Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests).</p></li><li><p>Test your changes as thoroughly as possible before your commit them. Preferably, automate your testing with <a href=/docs/gardener/testing/>unit / integration tests</a>. If tested manually, provide information about the test scope in the PR description (e.g., “Test passed: Upgrade K8s version from 1.14.5 to 1.15.2 on AWS, Azure, GCP, Alicloud, Openstack.”).</p></li><li><p>When creating the PR, make your <a href=/docs/contribute/pr-description/>Pull Request description</a> as detailed as possible to help out the reviewers.</p></li><li><p>Create <em>Work In Progress [WIP]</em> pull requests only if you need a clarification or an explicit review before you can continue your work item.</p></li><li><p>If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on our <a href=https://groups.google.com/forum/?fromgroups#!forum/gardener>mailing list</a>.</p></li><li><p>If you add new features, make sure that they are documented in the <a href=https://github.com/gardener/documentation>Gardener documentation</a>.</p></li><li><p>If your changes are relevant for operators, consider to update the <a href=https://github.com/gardener/ops-toolbelt>ops toolbelt image</a>.</p></li><li><p>Post review:</p><ul><li>If a review requires you to change your commit(s), please test the changes again.</li><li>Amend the affected commit(s) and force push onto your branch.</li><li>Set respective comments in your GitHub review to resolved.</li><li>Create a general PR comment to notify the reviewers that your amendments are ready for another round of review.</li></ul></li></ul><h3 id=contributing-bigger-changes>Contributing Bigger Changes</h3><p>If you want to contribute bigger changes to Gardener, such as when introducing new API resources and their corresponding controllers, or implementing an approved <a href=https://github.com/gardener/gardener/tree/master/docs/proposals>Gardener Enhancement Proposal</a>, follow the guidelines outlined in <a href=/docs/contribute/code/contributing-bigger-changes/>Contributing Bigger Changes</a>.</p><h3 id=adding-already-existing-documentation>Adding Already Existing Documentation</h3><p>If you want to add documentation that already exists on GitHub to the website, you should update the central manifest instead of duplicating the content. To find out how to do that, see <a href=/docs/contribute/documentation/adding-existing-documentation/>Adding Already Existing Documentation</a>.</p><h2 id=issues-and-planning>Issues and Planning</h2><p>We use GitHub issues to track bugs and enhancement requests. Please provide as much context as possible when you open an issue. The information you provide must be comprehensive enough to reproduce that issue for the assignee. Therefore, contributors may use but aren&rsquo;t restricted to the issue template provided by the Gardener maintainers.</p><p>ZenHub is used for planning:</p><ul><li>Install the <a href=https://chrome.google.com/webstore/detail/zenhub-for-github/ogcgkffhplmphkaahpmffcafajaocjbd>ZenHub Chrome plugin</a></li><li>Login to <a href=https://www.zenhub.com/>ZenHub</a></li><li>Open the <a href=https://app.zenhub.com/workspace/o/gardener/gardener>Gardener ZenHub workspace</a></li></ul><h2 id=security-release-process>Security Release Process</h2><p>See <a href=/docs/contribute/code/security-guide/>Security Release Process</a>.</p><h2 id=community>Community</h2><h3 id=slack-channel>Slack Channel</h3><p><a href=https://kubernetes.slack.com/messages/gardener>#gardener</a>, sign up <a href=http://slack.k8s.io/>here</a>.</p><h3 id=mailing-list>Mailing List</h3><p><a href=https://groups.google.com/forum/?fromgroups#!forum/gardener>gardener@googlegroups.com</a></p><p>The mailing list is hosted through Google Groups. To receive the lists&rsquo; emails, <a href=https://support.google.com/groups/answer/1067205>join the group</a> as you would any other Google Group.</p><h3 id=other>Other</h3><p>For additional channels where you can reach us, as well as links to our bi-weekly meetings, visit the <a href=/community/>Community page</a>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-9dd3a2e4fb4cdd1937d8a89c888e78bd>11.1 - Contributing Code</h1><p>You are welcome to <strong>contribute code</strong> to Gardener in order to fix a bug or to implement a new feature.</p><p>The following rules govern code contributions:</p><ul><li>Contributions must be licensed under the <a href=http://www.apache.org/licenses/LICENSE-2.0>Apache 2.0 License</a></li><li>You need to sign the Contributor License Agreement. We are using <em><a href=https://cla-assistant.io/>CLA assistant</a></em> providing a click-through workflow for accepting the CLA. For company contributors additionally the company needs to sign a corporate license agreement. See the following sections for details.</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-991e3171b94991ddd230a30fbf7f2016>11.1.1 - Contributing Bigger Changes</h1><h2 id=contributing-bigger-changes>Contributing Bigger Changes</h2><p>Here are the guidelines you should follow when contributing larger changes to Gardener:</p><ul><li><p>Avoid proposing a big change in one single PR. Instead, split your work into multiple stages which are independently mergeable and create one PR for each stage. For example, if introducing a new API resource and its controller, these stages could be:</p><ul><li>API resource types, including defaults and generated code.</li><li>API resource validation.</li><li>API server storage.</li><li>Admission plugin(s), if any.</li><li>Controller(s), including changes to existing controllers. Split this phase further into different functional subsets if appropriate.</li></ul></li><li><p>If you realize later that changes to artifacts introduced in a previous stage are required, by all means make them and explain in the PR why they were needed.</p></li><li><p>Consider splitting a big PR further into multiple commits to allow for more focused reviews. For example, you could add unit tests / documentation in separate commits from the rest of the code. If you have to adapt your PR to review feedback, prefer doing that also in a separate commit to make it easier for reviewers to check how their feedback has been addressed.</p></li><li><p>To make the review process more efficient and avoid too many long discussions in the PR itself, ask for a &ldquo;main reviewer&rdquo; to be assigned to your change, then work with this person to make sure he or she understands it in detail, and agree together on any improvements that may be needed. If you can&rsquo;t reach an agreement on certain topics, comment on the PR and invite other people to join the discussion.</p></li><li><p>Even if you have a &ldquo;main reviewer&rdquo; assigned, you may still get feedback from other reviewers. In general, these &ldquo;non-main reviewers&rdquo; are advised to focus more on the design and overall approach rather than the implementation details. Make sure that you address any concerns on this level appropriately.</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-4a215fa9f7c2464597fdf64c0c0639ff>11.1.2 - CI/CD</h1><h1 id=cicd>CI/CD</h1><p>As an execution environment for CI/CD workloads, we use <a href=https://concourse-ci.org>Concourse</a>.
We however abstract from the underlying &ldquo;build executor&rdquo; and instead offer a
<code>Pipeline Definition Contract</code>, through which components declare their build pipelines as
required.</p><p><img src="/__resources/overview_c029e2.png?raw=true" alt=Overview></p><p>In order to run continuous delivery workloads for all components contributing to the
required.</p><p><img src=/__resources/overview_2a165b.png alt=Overview></p><p>In order to run continuous delivery workloads for all components contributing to the
<a href=https://github.com/gardener>Gardener</a> project, we operate a central service.</p><p>Typical workloads encompass the execution of tests and builds of a variety of technologies,
as well as building and publishing container images, typically containing build results.</p><p>We are building our CI/CD offering around some principles:</p><ul><li><em>container-native</em> - each workload is executed within a container environment. Components may customise used container images</li><li><em>automation</em> - pipelines are generated without manual interaction</li><li><em>self-service</em> - components customise their pipelines by changing their sources</li><li><em>standardisation</em></li></ul><p><strong>Learn more on our: <a href=https://gardener.github.io/cc-utils/>Build Pipeline Reference Manual</a></strong></p></div><div class=td-content style=page-break-before:always><h1 id=pg-cf394069a680a36278b73b0fe5f5249e>11.1.3 - Dependencies</h1><h1 id=testing>Testing</h1><p>We follow the BDD-style testing principles and are leveraging the <a href=https://onsi.github.io/ginkgo/>Ginkgo</a> framework along with <a href=http://onsi.github.io/gomega/>Gomega</a> as matcher library. In order to execute the existing tests, you can use</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>make test <span style=color:green># runs tests</span>
</span></span><span style=display:flex><span>make verify <span style=color:green># runs static code checks and test</span>
Expand Down
Loading

0 comments on commit df0b232

Please sign in to comment.