On April 25, this year, GitHub announced that it will be shutting down GitHub Services in order to focus on other areas of the API, such as strengthening GitHub Apps and GraphQL, and improving webhooks. According to GitHub, Webhooks are much easier for both users and GitHub staff to debug on the web because of improved logging.
GitHub Services has not supported new features since April 25, 2016, and they have also officially deprecated it on October 1st, 2018. The community stated that this functionality will be removed from GitHub.com on January 31st, 2019.
The main intention of GitHub Services was to allow third-party developers to submit code for integrating with their services, but this functionality has been superseded by GitHub Apps and webhooks. Since October 1st, 2018, users are denied from adding GitHub services to any repository on GitHub.com, via the UI or API. Users can, however, continue to edit or delete existing GitHub Services.
GitHub services vs. webhooks
The key differences between GitHub Services and webhooks include:
- Configuration: GitHub Services have service-specific configuration options, while webhooks are simply configured by specifying a URL and a set of events.
- Custom logic: GitHub Services can have custom logic to respond with multiple actions as part of processing a single event, while webhooks have no custom logic.
- Types of requests: GitHub Services can make HTTP and non-HTTP requests, while webhooks can make HTTP requests only.
Brownout for GitHub Services
During the week of November 5th, 2018, there was a week-long brownout for GitHub Services. Any GitHub Service installed on a repository did not receive any payloads. Normal GitHub Services operations were resumed at the conclusion of the brownout. The main motivation behind the brownout was to allow GitHub users and integrators to see the places that GitHub Services are still being used and begin working towards migrating away from GitHub Services.
However, they decided that a week-long brownout would be too disruptive for everyone. Instead, they plan to do a gradual increase in brownouts until the final blackout date of January 31st, 2019. The community announced that on January 31, 2019, they will permanently stop delivering all installed services’ events on GitHub.com.
As per the updated deprecation timeline:
- On December 12th, 2018, GitHub Service deliveries will be suspended for a full 24 hours.
- On January 7th, 2019, GitHub Services will be suspended for a full 7 days. Following that, regular deliveries will resume January 14th, 2019.
Users should ensure that their repositories use newer APIs available for handling events. The following changes have taken place since October 1st, 2018:
- The “Create a hook” endpoint that accepted a required argument called name, which can be set to web for webhooks, or the name of any valid service. Starting October 1st, this endpoint does not require a name to be provided; if it is, it will only accept web as a valid value.
- Stricter API validation was enforced on November 1st. The name is no longer necessary as a required argument, and requests sending this value are rejected.
To learn more about this deprecation, check out Replacing GitHub Services.