{"id":4803,"date":"2023-06-07T09:59:31","date_gmt":"2023-06-07T09:59:31","guid":{"rendered":"https:\/\/staging.elixirrdigital.com\/us\/?p=4803"},"modified":"2025-03-17T13:11:30","modified_gmt":"2025-03-17T13:11:30","slug":"github-enterprise-overview-and-best-practices","status":"publish","type":"post","link":"https:\/\/staging.elixirrdigital.com\/us\/2023\/06\/07\/github-enterprise-overview-and-best-practices\/","title":{"rendered":"GitHub Enterprise Overview and Best Practices"},"content":{"rendered":"<p class=\"intro\"><a href=\"https:\/\/github.com\/enterprise\" target=\"_blank\" rel=\"noopener\">GitHub Enterprise<\/a>\u00a0is a self-hosted version of\u00a0<a href=\"https:\/\/docs.github.com\/en\/get-started\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\u00a0that provides organizations with the flexibility to manage their own development environment. In this blog, we will cover the basics of setting up a repository, including branch protection rules and other security settings, as well as how to integrate GitHub Enterprise with\u00a0<a href=\"https:\/\/aws.amazon.com\/\" target=\"_blank\" rel=\"noopener\">Amazon Web Services<\/a>(AWS) using\u00a0<a href=\"https:\/\/docs.github.com\/en\/actions\" target=\"_blank\" rel=\"noopener\">GitHub Actions<\/a>.<\/p>\n<h2>1. Introduction to GitHub Enterprise<\/h2>\n<p>To get started with GitHub Enterprise, the first step is to set up a new repository. A repository is essentially a container for your project, including all the code, documentation, and other files that you need to develop and maintain your software.<\/p>\n<p>When setting up a new repository in GitHub Enterprise, it is important to consider the security settings you will use to protect your code. This can include things like branch protection rules, which prevent unauthorized changes to certain branches of your repository. You can also configure other security settings like two-factor authentication and access controls to ensure that only authorized users have access to your code.<\/p>\n<h2>2. Setting up a Repository in GitHub Enterprise<\/h2>\n<p>Developers can often end up working in a GH Enterprise since it offers a closed space to the owners of the project. Specifically, when project owners choose to adopt GitHub Enterprise, they are required to create an organization. This organization serves as a container for all repositories associated with the project. In this blog, we will focus on setting up a repository within the organization, without covering organizational settings that developers are less likely to encounter.<\/p>\n<p><strong>2.1 Creating a New Repository in GitHub Enterprise<\/strong><\/p>\n<p>At the organization home page navigate to the Repositories tab and click New Repository.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4805 \" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1.png\" alt=\"\" width=\"1612\" height=\"459\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1.png 1612w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-300x85.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-1024x292.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-768x219.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-1536x437.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-200x57.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-220x63.png 220w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_1-140x40.png 140w\" sizes=\"auto, (max-width: 1612px) 100vw, 1612px\" \/><\/p>\n<p>Proceed with choosing a name for the repository. Visibility of the repository should be Internal, but that depends on the use case of the repository. Click on Create repository and follow instructions to locally initialize the repository.<\/p>\n<p><strong>2.2 Adding and Managing Collaborators<\/strong><\/p>\n<p>To add collaborators or teams to your specific repository, navigate to the Settings tab and click on Collaborators and teams on the sidebar. It is important to adhere to the principle of least privilege (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Principle_of_least_privilege\" target=\"_blank\" rel=\"noopener\">POLP<\/a>). That means that we should limit collaborator\u2019s access rights to only those that are strictly required to do their jobs. In the example below, Marin is a developer so that means he only needs the \u2018Write\u2019 role to be able to do his job.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4806 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2.png\" alt=\"\" width=\"994\" height=\"875\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2.png 994w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2-300x264.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2-768x676.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2-200x176.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2-114x100.png 114w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_2-45x40.png 45w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><strong>2.3 Branching Strategy<\/strong><\/p>\n<p>Standard practice for branching strategy is to use certain branches as environments. These environments should correspond to \u2018Production\u2019, \u2018Stage\u2019 and \u2018Development\u2019. However, it all depends on the project\u2019s use case. For this blog, we will use \u2018production\u2019, \u2018stage\u2019 and \u2018development\u2019 branches.<\/p>\n<p>The \u2018development\u2019 branch is used to test a recently developed feature; if tests are successful on the \u2018development\u2019 branch, then the feature can proceed to the \u2018stage\u2019 branch.<\/p>\n<p>The \u2018stage\u2019 branch is a second stop for a feature to be tested. Typically, the \u2018stage\u2019 branch is a replica of the \u2018production\u2019 branch, with the same configurations and infrastructure, allowing developers and testers to test their changes in an environment that closely resembles the production environment. If the tests are successful on the \u2018stage\u2019 branch, then the feature can proceed to the \u2018production\u2019 branch.<\/p>\n<p>The \u2018production\u2019 branch is where the feature gets officially deployed. At this point, the feature is stable and safe for the production environment.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4807 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3.png\" alt=\"\" width=\"1799\" height=\"672\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3.png 1799w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-300x112.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-1024x383.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-768x287.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-1536x574.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-200x75.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-220x82.png 220w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_3-107x40.png 107w\" sizes=\"auto, (max-width: 1799px) 100vw, 1799px\" \/><\/p>\n<p>A branching strategy impacts how we can integrate the repository with AWS. In this case, we can designate one account for each environment branch in our repository. For example, let\u2019s say that in this repository developers are developing CloudFormation templates which are used for deployment through GitHub Actions. If they push a feature to the \u2018development\u2019 branch, that\u00a0<a href=\"https:\/\/aws.amazon.com\/cloudformation\/\" target=\"_blank\" rel=\"noopener\">CloudFormation<\/a>\u00a0template would get deployed to the development AWS account; if the feature were pushed to the \u2018stage\u2019 branch, it would get deployed to the stage AWS account, etc.<\/p>\n<p><strong>2.4 Development Strategy<\/strong><\/p>\n<p>We have covered environment branches so far, now it\u2019s time to see how we will develop new\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Feature-oriented_programming\" target=\"_blank\" rel=\"noopener\">features<\/a>. The best practice for feature development would be to create a separate branch that could be called \u2018feature\/description-of-the-feature\u2019 (we\u2019ll refer to this branch as feature branch throughout the blog). Feature branches such as this one should be created from one of the environment branches, in some cases that might be \u2018production\u2019 or \u2018development\u2019 \u2013 this is usually defined along with the branching strategy, since this depends on the use case.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4808 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4.png\" alt=\"\" width=\"1741\" height=\"847\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4.png 1741w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-300x146.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-1024x498.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-768x374.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-1536x747.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-200x97.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-206x100.png 206w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_4-82x40.png 82w\" sizes=\"auto, (max-width: 1741px) 100vw, 1741px\" \/><\/p>\n<p>Let\u2019s say we have created a feature branch and we have developed a feature on it. Now it is time to push to the \u2018development\u2019 branch. We should do that by creating a pull request from the feature branch to the \u2018development\u2019 branch.<\/p>\n<p>A\u00a0<a href=\"https:\/\/docs.github.com\/en\/pull-requests\/collaborating-with-pull-requests\/proposing-changes-to-your-work-with-pull-requests\/about-pull-requests\" target=\"_blank\" rel=\"noopener\">pull request<\/a>\u00a0(PR) is the best practice because it provides an overview of the feature that we are trying to merge to the environment branch. It also contains an overview of test results for that feature. We will cover more of this later.<\/p>\n<p><strong>2.5 Secrets and Variables<\/strong><\/p>\n<p><a href=\"https:\/\/docs.github.com\/en\/codespaces\/managing-codespaces-for-your-organization\/managing-encrypted-secrets-for-your-repository-and-organization-for-github-codespaces\" target=\"_blank\" rel=\"noopener\">Secrets<\/a>\u00a0and\u00a0<a href=\"https:\/\/docs.github.com\/en\/actions\/learn-github-actions\/variables\" target=\"_blank\" rel=\"noopener\">variables<\/a>\u00a0come in several types.<\/p>\n<p>Organization secrets and variables are accessible by all repositories within an organization. Repository secrets and variables are only accessible by the repository where they are defined (though they can also be passed to other repositories). That will not be covered in this blog.<\/p>\n<p>Environment secrets and variables, on the other hand, are specific to a particular environment, and we will cover them in the next section.<\/p>\n<p><strong>2.6 Environment Setup<\/strong><\/p>\n<p>Located in Settings, there is an \u2018<a href=\"https:\/\/docs.github.com\/en\/actions\/deployment\/targeting-different-environments\/using-environments-for-deployment\" target=\"_blank\" rel=\"noopener\">Environments<\/a>\u2019 tab. Environments are useful because we can create a set of rules, secrets, and variables for a specific environment.<\/p>\n<p>For example, we can create three environments called \u2018development\u2019, \u2018stage\u2019, \u2018production\u2019. Let\u2019s say that we want to have a variable called AWS_ROLE which is different across environments, and we want to avoid having three variables in code where each would have the same purpose but different value. In that case we can specify AWS_ROLE in all three environments and assign a different value for each environment.<\/p>\n<p>This is useful when GitHub workflows are created, then we can specify in which environment job is running, so when we use a variable, it will use the value from the specified environment. For example, if we define that the job is running in the \u2018production\u2019 environment, then if we use the AWS_ROLE variable in that job, the workflow will know that it should grab the value from the \u2018production\u2019 environment.<\/p>\n<p>Furthermore, Environments are also useful when we want to specify which branch can deploy to the environment. If we define that only \u2018feature\/*\u2019, meaning, branches starting with \u201cfeature\/\u201d can deploy to the environment, it will automatically deny any other branches which would try to deploy to it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4809 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5.png\" alt=\"\" width=\"1741\" height=\"871\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5.png 1741w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-300x150.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-1024x512.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-768x384.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-1536x768.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-200x100.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_5-80x40.png 80w\" sizes=\"auto, (max-width: 1741px) 100vw, 1741px\" \/><\/p>\n<p><strong>2.7 CODEOWNERS<\/strong><\/p>\n<p>In GitHub,\u00a0<a href=\"https:\/\/docs.github.com\/en\/repositories\/managing-your-repositorys-settings-and-features\/customizing-your-repository\/about-code-owners\" target=\"_blank\" rel=\"noopener\">CODEOWNERS<\/a>\u00a0is a feature that lets you define individuals or teams responsible for code within a repository. This feature is particularly useful in large projects where many contributors are working on the codebase. Code owners can be defined for any file or folder within a repository. When a pull request is opened that modifies a file or folder that has a CODEOWNERS file associated with it, the individuals or teams defined in the CODEOWNERS file will be notified and asked to review the pull request.<\/p>\n<p>Code owners can be defined in the file CODEOWNERS in the root of the repository or any subdirectory. The CODEOWNERS file follows a simple syntax where each line represents a file or folder path, followed by a space or tab, and then the list of code owners (GitHub usernames or team names) for that file or folder.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4810 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6.png\" alt=\"\" width=\"1738\" height=\"848\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6.png 1738w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-300x146.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-1024x500.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-768x375.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-1536x749.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-200x98.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-205x100.png 205w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_6-82x40.png 82w\" sizes=\"auto, (max-width: 1738px) 100vw, 1738px\" \/><\/p>\n<p>In this example, user \u2018sukyca\u2019 is the owner of \u201c.github\/workflows\u201d directory and if any change occurs, that user will be asked to review that change in a pull request.<\/p>\n<p><strong>2.8 Branch Protection Rules<\/strong><\/p>\n<p>GitHub\u00a0<a href=\"https:\/\/docs.github.com\/en\/repositories\/configuring-branches-and-merges-in-your-repository\/managing-protected-branches\/managing-a-branch-protection-rule\" target=\"_blank\" rel=\"noopener\">branch protection rules<\/a>\u00a0are a powerful tool for ensuring that the code in your repository is of high quality and adheres to the team\u2019s standards. These rules can be applied to specific branches and can enforce a wide variety of requirements. Some common examples of branch protection rules include requiring pull requests to be reviewed by multiple team members, preventing force pushes to a branch, and requiring certain status checks to pass before changes can be merged.<\/p>\n<p>If we have a branch named \u2018production\u2019 and we want to protect it by using Branch Protection Rules, we need to navigate to Settings and click on Branches. Click \u2018Add rule\u2019 and make sure that the rule name is the same as the name of the branch, otherwise the rule will not apply to the branch. In this case, we would create a rule called \u2018production\u2019.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4812 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7.png\" alt=\"\" width=\"1738\" height=\"473\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7.png 1738w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-300x82.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-1024x279.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-768x209.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-1536x418.png 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-200x54.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-220x60.png 220w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_7-147x40.png 147w\" sizes=\"auto, (max-width: 1738px) 100vw, 1738px\" \/><\/p>\n<p>It is a good idea to check \u201cRequire a pull request before merging\u201d rule as it will enforce developers to use pull requests instead of pushing directly to the branch.<\/p>\n<p>We can also specify how many approvals we require before the pull request can be valid. This will force responsible users (Codeowners) to check the code before it is released into the environment.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4813 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8.png\" alt=\"\" width=\"1293\" height=\"860\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8.png 1293w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-300x200.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-1024x681.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-768x511.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-276x184.png 276w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-200x133.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-150x100.png 150w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-696x464.png 696w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-450x300.png 450w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_8-60x40.png 60w\" sizes=\"auto, (max-width: 1293px) 100vw, 1293px\" \/><\/p>\n<p>Furthermore, we can check \u201cRequire status checks to pass before merging\u201d rule, which will disable the pull request from being merged until the specified jobs are ran successfully.<\/p>\n<p>For example, we have a \u2018pr_opened.yml\u2019 workflow which has \u2018build\u2019 job in it, if we specify that \u2018build\u2019 job is required to pass, then the pull request will wait for it to execute successfully, otherwise it will not let the pull request to get merged.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4814 size-full\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9.png\" alt=\"\" width=\"1455\" height=\"663\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9.png 1455w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-300x137.png 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-1024x467.png 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-768x350.png 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-200x91.png 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-220x100.png 220w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/GitHub-Enterprise-Overview-and-Best-Practices_9-88x40.png 88w\" sizes=\"auto, (max-width: 1455px) 100vw, 1455px\" \/><\/p>\n<p>These were some of the most common rules to be applied to a branch. Of course, this all depends on the project use case, so feel free to explore.<\/p>\n<h2>3. Conclusion<\/h2>\n<p>This blog has provided insights into key features and practices of GitHub Enterprise that can greatly enhance collaboration, security, and development processes within your organization. By leveraging these tools and strategies effectively, teams can optimize their workflows and achieve greater productivity and success in their software development endeavors.<\/p>\n<p>Certainly, our\u00a0DevSecOps team is readily available to assist you in designing, managing, and building such infrastructures within GitHub Enterprise.\u00a0We\u2019re here to help!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we will cover the basics of setting up a repository, as well as how to integrate GitHub Enterprise with Amazon Web Services.<\/p>\n","protected":false},"author":6,"featured_media":6284,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[35,32],"tags":[],"related_service":[48],"related_industry":[],"class_list":["post-4803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev-sec-ops","category-aws"],"acf":[],"card":"<article class=\"wp-component-card wp-component-card--dark wp-component-card--resource wp-component-card--post wp-component-card--full-width            wp-component-card--link js-card-link\n        \">\n            <div class=\"wp-component-card__image\">\n            <img width=\"868\" height=\"579\" src=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-868x579.jpeg\" class=\"attachment-card-1-col size-card-1-col\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-868x579.jpeg 868w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-300x200.jpeg 300w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-1024x683.jpeg 1024w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-768x512.jpeg 768w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-1536x1024.jpeg 1536w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-2048x1365.jpeg 2048w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-276x184.jpeg 276w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-200x133.jpeg 200w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-150x100.jpeg 150w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-696x464.jpeg 696w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-450x300.jpeg 450w, https:\/\/staging.elixirrdigital.com\/us\/wp-content\/uploads\/sites\/2\/2023\/06\/AdobeStock_390582375_Editorial_Use_Only-60x40.jpeg 60w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/>        <\/div>\n        <div class=\"wp-component-card__content\">\n        <div class=\"wp-component-card__content-top\">\n                                                    <p class=\"wp-component-card__eyebrow\">\n                    Blog                <\/p>\n                        <a href='https:\/\/staging.elixirrdigital.com\/us\/2023\/06\/07\/github-enterprise-overview-and-best-practices\/'>\n        <h2 class='wp-component-card__title'>\n            GitHub Enterprise Overview and Best Practices\n        <\/h2>\n    <\/a>        <\/div>\n                    <div class=\"wp-component-card__content-bottom\">\n                                    <p class=\"wp-component-card__description\">\n                        In this post, we will cover the basics of setting up a repository, as well as how to integrate GitHub Enterprise with Amazon Web Services.                    <\/p>\n                                                                    <div class=\"wp-component-card__meta\">\n                                                    <p class=\"wp-component-card__date\">\n                                07 June 2023                            <\/p>\n                                                                            <div class=\"wp-component-card__terms\">\n                                                                                            <div class=\"wp-component-tags__tag\">\n                IT Services            <\/div>\n                                                                                                            <\/div>\n                                            <\/div>\n                                            <\/div>\n            <\/div>\n<\/article>\n","_links":{"self":[{"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/posts\/4803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/comments?post=4803"}],"version-history":[{"count":0,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/posts\/4803\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/media\/6284"}],"wp:attachment":[{"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/media?parent=4803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/categories?post=4803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/tags?post=4803"},{"taxonomy":"related_service","embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/related_service?post=4803"},{"taxonomy":"related_industry","embeddable":true,"href":"https:\/\/staging.elixirrdigital.com\/us\/wp-json\/wp\/v2\/related_industry?post=4803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}