Skip to content

nx release fails to create GitHub releases with Git remotes pointing to fully qualified SSH URLs #31682

@ekkolon

Description

@ekkolon

Current Behavior

When running the nx release task in a project where Git is configured to connect to GitHub via SSH over HTTPS (using port 443), the release step fails to create a GitHub release.

This failure only occurs if the Git remote URL is not in one of the push formats officially documented by GitHub:

  • HTTPS: https://github.com/user/repo.git
  • SSH (shorthand): git@github.com:user/repo.git

However, when the Git remote points to a fully qualified SSH URL over port 443, nx release fails to correctly extract the user/repo slug:

# git remote -v

origin  ssh://git@ssh.github.com:443/ekkolon/nxdemo.git (push)

In this case, nx release incorrectly extracts the slug as 443/ekkolon instead of ekkolon/nxdemo.

Expected Behavior

nx release should correctly extract the user/repo slug from all valid GitHub remote URL formats, including canonical SSH URLs with a port.

Users shouldn't have to manually reconfigure their Git remotes to get nx release to create a GitHub release.

GitHub Repo

No response

Steps to Reproduce

  1. Configure GitHub and Git to use SSH over HTTPs
  2. Clone or create and push a GitHub repo configured to use nx release
  3. Run git remote -v
  4. If your Git origin points to a fully qualified SSH URL run nx release
  5. nx release creates the git tag and pushes it
  6. nx release tries to create a GitHub release with the generated changelog but fails

I created a minimal reproducable example in the TypeScript Playground, where I modified the GithubRemoteReleaseClient.resolveRepoData() method suspected of causing the issue.

I replaced the inner CMD call to git remote -v with a hard-coded, fully qualified SSH URL: ssh://git@ssh.github.com:443/ekkolon/nxdemo.git

When you run this example, you should see the following in the logs:

{
  "hostname": "github.com",
  "apiBaseUrl": "https://api.github.com",
  "slug": "443/ekkolon"
} 

Nx Report

N/A

Failure Logs

Package Manager Version

pnpm 10.12.1

Operating System

  • macOS
  • Linux
  • Windows
  • Other (Please specify)

Additional Information

Suspected Root Cause

This behavior appears to stem from the GithubRemoteReleaseClient#resolveRepoData() method, which uses a regex to extract the slug from the Git remote URL.

However, the regex currently only handles:

  • SSH-style shorthand: git@github.com:ekkolon/nxdemo.git
  • HTTPS: https://github.com/ekkolon/nxdemo.git

It does not match fully qualified SSH URLs with a port, such as:

ssh://git@ssh.github.com:443/ekkolon/nxdemo.git

Workaround

Manually updating the Git remote to the SSH format supported by GitHub prior to using nx release command resolves the issue:

git remote set-url origin git@github.com:ekkolon/nxdemo.git

But this may not be ideal in environments where port 22 is blocked or SSH over HTTPS is the preferred default.

Ideally GithubRemoteReleaseClient#resolveRepoData() method should support extracting the user/repo slug from fully qualified SSH URLs too.


I'm happy to follow up with a PR if you agree this is something worth addressing.

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions