Skip to content

Conversation

rb-mwindh
Copy link

@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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

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

1 participant