GitHub Locations
The GitHub integration supports loading catalog entities from github.com or GitHub Enterprise. Entities can be added to static catalog configuration, registered with the catalog-import plugin, or discovered from a GitHub organization. Users and Groups can also be loaded from an organization.
Configuration
To use this integration, add configuration to your root app-config.yaml
:
integrations:
github:
- host: github.com
token: ${GITHUB_TOKEN}
- host: ghe.example.net
apiBaseUrl: https://ghe.example.net/api/v3
rawBaseUrl: https://ghe.example.net/raw
token: ${GHE_TOKEN}
A public GitHub provider is added automatically at startup for convenience, so you only need to list it if you want to supply a token.
Directly under the github
key is a list of provider configurations, where you
can list the various GitHub-compatible providers you want to be able to fetch
data from. Each entry is a structure with up to four elements:
host
(optional): The host of the location target that you want to match on. The default host isgithub.com
.token
(optional): An authentication token as expected by GitHub. If supplied, it will be passed along with all calls to this provider, both API and raw. If it is not supplied, anonymous access will be used.apiBaseUrl
(optional): If you want to communicate using the APIv3 method with this provider, specify the base URL for its endpoint here, with no trailing slash. Specifically when the target is GitHub, you can leave it out to be inferred automatically. For a GitHub Enterprise installation, it is commonly athttps://api.<host>
orhttps://<host>/api/v3
.rawBaseUrl
(optional): If you want to communicate using the raw HTTP method with this provider, specify the base URL for its endpoint here, with no trailing slash. Specifically when the target is public GitHub, you can leave it out to be inferred automatically. For a GitHub Enterprise installation, it is commonly athttps://<host>/raw
.
You need to supply either apiBaseUrl
or rawBaseUrl
or both (except for
public GitHub, for which we can infer them). The apiBaseUrl
will always be
preferred over the other if a token
is given, otherwise rawBaseUrl
will be
preferred.
Token scopes
When creating a personal access token on GitHub, you must select scopes to define the level of access for the token. The scopes required vary depending on your use of the integration:
- Reading software components:
repo
- Reading organization data:
read:org
read:user
user:email
- Publishing software templates:
repo
workflow
(if templates include GitHub workflows)
Authentication with GitHub Apps
Alternatively for GitHub organizations, Backstage can use GitHub Apps for backend authentication. This has higher rate limits, and a clearer authorization model. See github-apps for how to set this up.