GitHub Enterprise Server Sync
This guide is for self-hosted GitHub Enterprise Servers. If you use GitHub.com, see GitHub Sync.
You can integrate API Hub for Design with GitHub Enterprise Server. This allows you to synchronize your API definition, auto-generated server code, or client SDK with an existing GitHub repository. You can fully control which files will be added, updated, or ignored in the target repository.
Requirements
API Hub for Design
Your GitHub Enterprise Server must be accessible from the public Internet and allow connections from our IP addresses. If this is not possible, you can consider using SwaggerHub On-Premise which you can deploy in your own network.
If your GitHub Enterprise Server uses an SSL certificate, it must be issued by a publicly-trusted certificate authority (CA), such as VeriSign, DigiCert, or others.
Self-signed certificates and private CAs are not supported in API Hub for Design SaaS, but are supported in SwaggerHub On-Premise.
Miscellaneous
To configure the integration, you must be the API owner or a collaborator with Edit permissions.
The integration is bound to a specific version of the API and is not automatically copied to new versions. When you add a new version, you need to configure the integration for the new version manually.
Prepare the repository
The target Git repository must not be empty. If it is empty, add at least one file to it, for example, a README or .gitignore file.
Configure GitHub Enterprise Sync
GitHub Enterprise Sync can be configured by the API owner or collaborators with the Editor role.
Open the API page in API Hub for Design.
If the API has several versions, select the version whose code you want to store on GitHub.
Click the API name, switch to the Integrations tab, and click Add New Integrations:
Select the GitHub Enterprise Sync integration.
In the subsequent dialog, specify the integration parameters:
Name – Required. A display name for the integration.
GitHub Enterprise Host – The URL of your GitHub Enterprise Server, for example,
https://ghe.mycompany.com
. Make sure to include http:// or https:// at the beginning.GitHub Enterprise Token (or GitHub Token) – A personal access token to authenticate with GitHub. You can create this token on the https://<github-host>/settings/tokens page. The token must have the public_repo scope if the target repository is public, or the repo scope if it is private. For detailed instructions, see Creating a personal access token for the command line.
Click Next in the GitHub Token edit box to continue. API Hub for Design will validate the token and then display other parameters.
Repository Owner – Select the GitHub user or organization that owns the desired repository. The list displays only those accounts your GitHub token has access to.
Repository – Select the repository to push the code to. This repository must not be empty. It must contain at least one commit, for example, a README or .gitignore file.
Sync Method – Select the synchronization type:
Sync method
Description
Basic Sync
API Hub for Design will manage all files in the specified branch and folder: new files will be added, existing files will be overwritten, and unused files will be deleted.
Advanced Sync
Similar to Basic Sync, but you can specify which files will be overwritten or ignored. Use this method if the output folder contains existing files that you want to keep.
Branch – Required. The repository branch to push the code to. If this branch does not exist, it will be created based on the repository’s default branch.
Generated API Code – Required. Select what you want to generate: server code, client SDK, API documentation, or the OpenAPI definition itself as YAML or JSON. See here for a list of supported languages and frameworks.
Tip
To customize code generation options, such as package names, use the Export > Codegen Options menu in the API Hub for Design editor. See Code Generation Options for details.
Output Folder – The output folder for the generated code, relative to the repository root. For example, server or sdk/android. If this folder does not exist, it will be created. If the output folder is not specified, API Hub for Design will create files and folders in the repository root.
Important
Use forward slashes (
/
) as path separators:folder/subfolder1/subfolder2 – Correct
folder\subfolder1\subfolder2 – Incorrect
Paths – Available only if you selected Advanced Sync. Use these options to control which files and folders will be created, updated, deleted, or ignored during synchronization. All the paths are relative to the Output Folder. You need to specify either Partially Managed Paths or Fully Managed Paths.
Partially Managed Paths – These files and folders will be created if they do not exist, but the existing files and folders will not be modified. The wildcard
*
indicates all files and folders in the Output Folder.Fully Managed Paths – These files and folders will be completely managed by the integration: new files will be added, the existing files will be overwritten, and the files that are no longer used will be deleted. You can use
*
as a wildcard for all files.Ignored Paths – These files and folders will remain as is and will not be changed in any way.
Important
Use forward slashes (
/
) as path separators, for example, sdk/android/README.md.Output file – Only used if Generated API Code is JSON or YAML, that is, the OpenAPI definition itself. Specifies the name of the .json or .yaml file to create, for example, swagger.yaml or petstore.json. This file will be created in the Output Folder.
Enabled – Select or clear this check box to enable or disable the integration.
Click Create, then Done.
Push to GitHub
When you are ready to push your changes, click Sync on the editor toolbar, enter a commit message and click Push. API Hub for Design will generate the specified target (server code, client code, API documentation or an OpenAPI JSON or YAML file) and push it to the configured repository and branch.
Commits are made on behalf of the user associated with the access token. If synchronization fails (for example, due to a permission problem), you will see an integration error at the top of the API Hub for Design Editor.
Disable GitHub Enterprise Sync
If you no longer want to sync with GitHub, you can disable or delete the GitHub Enterprise Sync integration. The existing files will remain in your GitHub repository, but API Hub for Design will not update them anymore.
Troubleshooting
If the integration fails with an error, check the access token expiration date. If it is about to expire, generate a new token and update the token in the integration settings. If the token has expired, generate a new one and create the integration anew.