GitHub Integration Guide
Experimental Feature: The GitHub Integration is currently in an experimental phase and may undergo changes that could break existing implementations in future updates. Please use it with caution and stay updated with the latest releases.
Overview
The GitHub Integration Guide offers instructions to set up and configure GitHub within Querybook. Follow these steps to allow interaction between Querybook and your GitHub repositories.
Please check the GitHub User Guide for detailed instructions on using GitHub features.
Implementation
To integrate GitHub with Querybook, follow the steps below. This setup involves configuring GitHub OAuth, setting up necessary environment variables, and enabling the GitHub Integration feature.
1. Setup GitHub OAuth Application
Before integrating GitHub with Querybook, you need to create an OAuth application on GitHub to obtain the necessary credentials.
-
Navigate to GitHub Settings:
- Go to your GitHub account settings.
- Click on Developer settings.
- Select OAuth Apps and then click New OAuth App.
-
Register a New Application:
- Application Name: Choose a name for your application, e.g.,
Querybook Integration
. - Homepage URL: Enter your Querybook instance URL, e.g.,
https://your-querybook-domain.com
. - Authorization Callback URL: Set this to
https://your-querybook-domain.com/github/oauth2callback
.
- Application Name: Choose a name for your application, e.g.,
-
Save the Application:
- After registering, GitHub will provide a Client ID and Client Secret. Keep these credentials secure as they are required for the integration.
2. Install Dependencies
Ensure that the required Python packages are installed. GitHub Integration relies on OAuth libraries and other dependencies.
Add the following line to your requirements/local.txt
:
-r github.txt
Note:
The github.txt
file includes pygithub==2.4.0
and cryptography==3.4.8
, which are essential for interacting with the GitHub API and securing tokens.
For more details, refer to infra_installation.mdx
.
3. Configure GitHub Integration
Configure Querybook to use the GitHub feature by setting the necessary environment variables and updating configuration files.
Secrets such as GITHUB_CLIENT_SECRET
and GITHUB_CRYPTO_SECRET
should be stored securely in environment variables, while non-sensitive information can be placed in querybook_config.yaml
.
-
Set Config Variables:
GITHUB_CLIENT_ID=github_app_client_id
GITHUB_CLIENT_SECRET=github_app_client_secret
GITHUB_CRYPTO_SECRET=crypto_secret
GITHUB_REPO_NAME=github_username/github_repository
GITHUB_REPO_BRANCH=main # Optional, defaults to 'main' branch- GITHUB_CLIENT_ID: The Client ID obtained from GitHub OAuth App.
- GITHUB_CLIENT_SECRET: The Client Secret obtained from GitHub OAuth App.
- GITHUB_CRYPTO_SECRET: A secret key used for encrypting GitHub tokens in the database.
- GITHUB_REPO_NAME: The repository name in the format
user/repo_name
(e.g.,github_username/querybook-datadocs
). - GITHUB_REPO_BRANCH: The branch to which commits are pushed. Defaults to
main
if not set.
Note: To obtain
GITHUB_REPO_NAME
, format your repository name asusername/repository
. For example:- Navigate to your GitHub profile and click on Repositories.
- Select the repository you want to link.
- Enter the repository name in the format
username/repository_name
. You can obtain this from your repository's GitHub URL. For instance, if your repository URL ishttps://github.com/username123/querybook-datadocs
, the repository name would beusername123/querybook-datadocs
.
4. Enable the Feature in Querybook
To display the GitHub button on the Querybook UI for DataDocs, edit the querybook_public_config.yaml
to enable GitHub Integration feature:
github_integration:
enabled: true
Example Configuration
Below is an example configuration snippet demonstrating how to set up GitHub Integration in querybook_config.yaml
and querybook_public_config.yaml
:
querybook_config:
GITHUB_CLIENT_ID: 'your_github_client_id'
GITHUB_CLIENT_SECRET: '---Redacted---'
GITHUB_CRYPTO_SECRET: '---Redacted---'
GITHUB_REPO_NAME: 'github_username/querybook-datadocs'
GITHUB_REPO_BRANCH: 'main'
public_config:
github_integration:
enabled: true
Additional Tips for Developers
- OAuth Permissions: Ensure that users completing the GitHub OAuth process have write permissions to the configured GitHub repository (
GITHUB_REPO_NAME
). This is necessary for Querybook to perform actions such as committing changes or managing the repository effectively. - Security: Keep your GitHub OAuth credentials secure. Avoid hardcoding sensitive information in configuration files. Store secrets safely and securely using environment variables.
- Testing: After setting up, perform test commits to verify that the integration works as expected before deploying to production environments.
For more information, refer to the GitHub User Guide and GitHub's OAuth Apps Documentation.