GitHub
Overviewβ
Fetch the configuration from files stored in a GitHub repository. This retriever will perform an HTTP Request with your GitHub configuration on the GitHub API to get your flags.info
GitHub has rate limits, be sure to correctly set your PollingInterval
to avoid reaching the limit.
If the rate limit is reached, the retriever will log an error and will stop polling until GitHub allows it again.
Configure the relay proxyβ
To configure your relay proxy to use the GitHub retriever, you need to add the following configuration to your relay proxy configuration file:
goff-proxy.yaml
# ...
retrievers:
- kind: github
repositorySlug: thomaspoignant/go-feature-flag
path: config/flag/my-flags.yaml
# ...
Field name | Mandatory | Type | Default | Description |
---|---|---|---|---|
kind | string | none | Value should be github .This field is mandatory and describes which retriever you are using. | |
repositorySlug | string | none | The repository slug of the GitHub repository where your file is located (ex: thomaspoignant/go-feature-flag ). | |
path | string | none | Path to the file inside the repository (ex: config/flag/my-flags.yaml ). | |
branch | string | main | The branch we should check in the repository. | |
token | string | none | Github token used to access a private repository, you need the repo permission (how to create a GitHub token). | |
timeout | string | 10000 | Timeout in millisecond used when calling GitHub. |
Configure the GO Moduleβ
To configure your GO module to use the GitHub retriever, you need to add the following
configuration to your ffclient.Config{}
object:
example.go
err := ffclient.Init(ffclient.Config{
PollingInterval: 3 * time.Second,
Retriever: &githubretriever.Retriever{
RepositorySlug: "thomaspoignant/go-feature-flag",
Branch: "main",
FilePath: "testdata/flag-config.goff.yaml",
GithubToken: "XXXX",
Timeout: 2 * time.Second,
},
})
defer ffclient.Close()
Field | Mandatory | Description |
---|---|---|
RepositorySlug | Your GitHub slug org/repo-name . | |
FilePath | The path of your file. | |
Branch | The branch where your file is. Default: main | |
GithubToken | Github token is used to access a private repository, you need the repo permission (how to create a GitHub token). | |
Timeout | Timeout for the HTTP call Default: 10 seconds |