Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add evergreen blog post to docs #70

Merged
merged 3 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ We have used those as placeholder values where our policies point to internal on
- [Maximize your open source presence on GitHub](./docs/org-presence-on-github.md)
- [Measuring maintainer responsiveness and issue metrics](./docs/issue-metrics.md)
- [Gaining insights into your contributors](./docs/contributor-insights.md)
- [Managing dependencies at scale](./docs/managing-dependencies-at-scale.md)
- Misc
- [Internal OSPO newsletters](./newsletter%20template)

Expand Down
37 changes: 37 additions & 0 deletions docs/managing-dependencies-at-scale.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Do you know if all your repositories have up-to-date dependencies?

![Swirling design graphic](https://github.blog/wp-content/uploads/2023/12/Productivity-LightMode-2.png?resize=1200%2C630)

Keeping your repositories' dependencies up to date is crucial for maintaining quality and security. Outdated dependencies can expose your project to vulnerabilities, compromise its stability, and hinder its overall performance. In order to answer this question for ourselves, we created a [GitHub Action: Evergreen](https://github.com/github/evergreen).

## The challenge of dependency management

With new versions of libraries, frameworks, and packages being released regularly, developers are faced with the constant challenge of ensuring their projects use the latest and most secure dependencies. Manual updates can be time-consuming and error-prone, and tracking every dependency across all repositories is a daunting task.

## Dependabot: Automating dependency updates

[Dependabot version updates](https://docs.github.com/code-security/dependabot) automate the process of updating dependencies by creating pull requests for new versions. Not to be confused with the more security focused variants of Dependabot in [“Dependabot alerts”](https://docs.github.com/code-security/dependabot/dependabot-alerts/about-dependabot-alerts) and [“Dependabot security updates”](https://docs.github.com/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates), Dependabot version updates target any outdated dependencies instead of waiting for vulnerabilities. This alleviates the burden on developers and ensures that projects are using the latest and safest versions of their dependencies.

## The Dependabot dilemma

While Dependabot version updates automates the task of updating dependencies, it is configured using a YAML file in every repository. This can make it difficult for administrators to centrally deploy it and can lead to inconsistent dependency management across projects.

## Introducing Evergreen

Inside GitHub, our Open Source Program Office (OSPO) wanted to make it easy to deploy Dependabot version updates throughout our own organizations. To achieve this, we built a GitHub Action called [Evergreen](https://github.com/github/evergreen). Evergreen acts as a dependency management assistant for your teams, ensuring that Dependabot version updates are enabled and configured consistently across all your repositories.

[Small aside]With Evergreen, GitHub identified hundreds of our own private repositories to enable Dependabot on, and we'll continue to run updates so we can confidently keep our repositories up to date.[Small aside]

## How Evergreen works

Once the GitHub Action triggers, it checks whether Dependabot version updates is enabled for all repositories in your organization. If not, Evergreen takes care of enabling Dependabot version updates, configuring it for you, and opening pull requests with the changes for your review.

1. **Triggering Evergreen:** You can set up Evergreen like any other GitHub Action to run on a schedule or trigger it manually to enforce consistent dependency management. Check out the [GitHub Docs on triggering a workflow](https://docs.github.com/actions/using-workflows/triggering-a-workflow) for more information.

2. **Dependency check:** Evergreen checks whether Dependabot version updates is configured for the repository.

3. **Enabling Dependabot:** If Dependabot is not configured, Evergreen takes care of it by automatically setting it up, and opening a pull request for you to review the configuration.

## Conclusion

Keeping dependencies up to date is a non-negotiable aspect of ensuring the quality and security of your projects. Dependabot has made this task significantly easier, but it's also equally as important to ensure consistent implementation across all repositories. Evergreen automates the process of enabling and configuring it for every repository. Ensure your dependencies are evergreen! Check out [the repository](https://github.com/github/evergreen) for more information.