Skip to content

Conversation

@rb-mwindh
Copy link
Contributor

@rb-mwindh rb-mwindh commented Oct 17, 2025

Description

This PR fixes proxy support for GitHub Enterprise Server environments where @semantic-release/github cannot establish connections through corporate proxies.

Problem

The current implementation uses HttpProxyAgent/HttpsProxyAgent with an agent option passed to Octokit's request. However, since Octokit now relies on undici as its fetch implementation, the agent option is no longer respected. Instead, undici expects a dispatcher to be passed into fetch.

Solution

  • ✅ Add undici ProxyAgent as dispatcher in custom fetch function
  • ✅ Maintain backwards compatibility with existing agent option
  • ✅ Add comprehensive unit tests for proxy functionality
  • ✅ Preserve all existing functionality for non-proxy scenarios

Changes

  1. Enhanced lib/octokit.js:

    • Import ProxyAgent and fetch from undici
    • Create fetchWithDispatcher function that uses ProxyAgent when proxy is configured
    • Maintain agent option for backwards compatibility
    • Update TypeScript definitions
  2. Added comprehensive tests:

    • Extended test/to-octokit-options.test.js with proxy-specific tests
    • Added test/octokit-proxy-integration.test.js for integration testing
    • Tests cover both proxy and non-proxy scenarios
    • Validates backwards compatibility
  3. Updated dependencies:

    • Added undici ^7.0.0 to package.json dependencies

Backwards Compatibility

✅ Full backwards compatibility maintained:

  • Legacy agent option still provided
  • All existing tests pass
  • No breaking changes to API

Testing

All tests pass, including:

  • Existing proxy agent tests
  • New undici ProxyAgent tests
  • Integration tests with mock servers
  • Backwards compatibility tests

Related Issue

Fixes the issue described in the GitHub issue where semantic-release fails with 'Connect Timeout Error' when running against GitHub Enterprise Server behind corporate proxies.

Review Notes

The implementation provides both legacy support (agent) and modern support (fetch with dispatcher) to ensure maximum compatibility while fixing the core proxy connectivity issue.

…d proxies

- Add undici ProxyAgent as dispatcher in custom fetch function
- Maintain backwards compatibility with existing agent option
- Add comprehensive unit tests for proxy functionality
- Fix proxy support for GitHub Enterprise Server environments

Fixes issue where @semantic-release/github cannot connect through
corporate proxies due to undici's fetch implementation not
respecting the agent option.

The solution provides both legacy agent support and new undici
ProxyAgent dispatcher for modern Octokit versions that use undici
as their fetch implementation.
@babblebey babblebey requested a review from gr2m October 19, 2025 15:00
@nickv-work
Copy link

nickv-work commented Oct 26, 2025

This is spectacular, I just encountered this issue myself. Thanks for the fix, @rb-mwindh!

@rb-mwindh rb-mwindh requested a review from gr2m November 7, 2025 20:07
Copy link
Member

@travi travi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i fully trust @gr2m's review for functionality here, but before we merge this, would you mind updating the proxy references in the readme, @rb-mwindh? that would help folks find the details of how to leverage this update properly. thanks!

Copy link
Member

@travi travi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

@travi travi enabled auto-merge (squash) November 8, 2025 13:35
@travi travi merged commit 15def77 into semantic-release:master Nov 8, 2025
6 checks passed
@github-actions
Copy link

github-actions bot commented Nov 8, 2025

🎉 This PR is included in version 12.0.2 🎉

The release is available on:

Your semantic-release bot 📦🚀

@rb-mwindh rb-mwindh deleted the fix/proxy-support-with-undici branch November 8, 2025 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@semantic-release/github fails to connect a GHES through our corporate proxy

4 participants