Package Registries

Automatically publish your generated SDKs to package registries so your users can easily install them using their preferred package manager.

How It Works

After your SDK code is merged and released on GitHub, Packable can automatically trigger publishing to the appropriate package registry for each language. This ensures your users always have access to the latest SDK version.

Configuring Registry Publishing

In the Packable dashboard:

  1. Navigate to your Project Settings
  2. Select the SDK you want to configure
  3. Click Package Registry Settings
  4. Toggle Auto-publish on or off
  5. Add the required credentials (see table below)

You can enable auto-publish for some SDKs and keep it manual for others. For example, auto-publish patch versions but manually publish major versions.

Required Credentials by Registry

Different package registries require different authentication credentials. Configure these in your SDK settings:

LanguageRegistryRequired CredentialsWhere to Get It
TypeScript/JavaScriptnpmNPM_TOKENnpmjs.com → Account → Access Tokens
PythonPyPIPYPI_TOKENpypi.org → Account Settings → API tokens
JavaMaven CentralMAVEN_USERNAME
MAVEN_PASSWORD
GPG_PRIVATE_KEY
GPG_PASSPHRASE
sonatype.org
RubyRubyGemsRUBYGEMS_API_KEYrubygems.org → Settings → API Keys
PHPPackagistNone (auto-syncs from Git)Submit to packagist.org once, then auto-syncs
C#NuGetNUGET_API_KEYnuget.org → API Keys
GoGo ModulesNone (auto-syncs from Git)Uses GitHub releases automatically via proxy.golang.org

Keep your API tokens secure. Never commit them to your repository. Packable encrypts and stores them securely.

Publishing Workflow

Automatic Publishing

When enabled, publishing happens automatically after code is merged:

  1. PR is approved and merged to the target branch
  2. GitHub release is created with version tag
  3. Packable detects the new release
  4. SDK is built and packaged for the registry
  5. Package is published to the registry
  6. Users can install the new version

Manual Publishing

If auto-publish is disabled:

  1. PR is approved and merged to the target branch
  2. GitHub release is created with version tag
  3. You receive a notification that the SDK is ready to publish
  4. Navigate to Releases in your Packable dashboard
  5. Click Publish to Registry for the release
  6. Confirm and publish

Registry-Specific Configuration

npm (TypeScript/JavaScript)

Package Scope: Use scoped packages (@yourorg/package-name) to avoid naming conflicts.

Access Level:

  • Public packages are free
  • Private packages require an npm Teams subscription

Additional Settings:

  • Package name (must be unique on npm)
  • License
  • Repository URL
  • Homepage URL

PyPI (Python)

Package Name: Must be unique across all of PyPI. Consider prefixing with your organization name.

Additional Settings:

  • Package name
  • License
  • Classifiers (Python version compatibility)
  • Project URLs

Note: Use a scoped token limited to your specific package for better security.

Maven Central (Java)

Requirements:

  • Group ID (usually your reversed domain, e.g., com.yourcompany)
  • Artifact ID (your package name)
  • GPG signing (required for all artifacts)

Additional Settings:

  • Group ID
  • Artifact ID
  • License
  • Developer information
  • SCM (source control) information

Note: Initial setup requires domain verification. Learn more

RubyGems (Ruby)

Package Name: Must be unique across all of RubyGems.

Additional Settings:

  • Gem name
  • License
  • Homepage URL
  • Source code URL

Packagist (PHP)

Auto-sync: Packagist automatically syncs from your GitHub repository.

Setup:

  1. Submit your package URL once at packagist.org
  2. Enable the GitHub webhook for automatic updates
  3. No credentials needed in Packable

Additional Settings:

  • Package name (vendor/package format)
  • composer.json must be in the repository

NuGet (C#)

Package Name: Must be unique across all of NuGet.org.

Additional Settings:

  • Package ID
  • License expression (e.g., MIT, Apache-2.0)
  • Project URL
  • Icon URL

Go Modules (Go)

Auto-sync: Go modules automatically sync from GitHub via proxy.golang.org.

Setup:

  1. Ensure your repository has proper version tags (v1.2.3)
  2. No credentials or registration needed
  3. Users can install directly using go get

Module Path: Must match your repository path (e.g., github.com/yourorg/package)

Versioning and Releases

All package registries use the version number from your GitHub release tag. Ensure you follow semantic versioning principles.

Version Format: v1.2.3 (Git tag) → 1.2.3 (package registry)

Use pre-release tags (e.g., v1.2.3-beta.1) to publish beta versions to registries for testing before the stable release.

Troubleshooting

Publishing Failed

Common issues and solutions:

Invalid Credentials:

  • Verify your API token is still valid
  • Check token permissions/scopes
  • Regenerate and update the token if needed

Package Name Conflict:

  • Package name is already taken on the registry
  • Use a scoped/namespaced name
  • Update the package name in your SDK settings

Verifying Published Packages

After publishing, verify your package is available:

bash
# npm npm view @yourorg/package-name # PyPI pip index versions yourorg-package-name # Maven Central (may take up to 2 hours) # Check at https://central.sonatype.com/ # RubyGems gem search -r ^yourorg-package-name$ # NuGet nuget list yourorg.packagename # Go go list -m github.com/yourorg/package@latest

Best Practices

  1. Test before enabling auto-publish: Manually publish the first few versions to ensure everything works
  2. Monitor notifications: Set up alerts for publishing failures in Github
  3. Keep credentials updated: Rotate API tokens regularly and update them in Github
  4. Document installation: Update your SDK's README with installation instructions
  5. Publish carefully: Remember that published versions cannot be deleted from most registries

Next Steps