The following sections list the changes for 3.1.1.
- Fix #296: Drop out of order workflow webhook events
- Fix #300: Rename package followin upstream genji package
-
Bugfix #296: Drop out of order workflow webhook events
We've fixed the behavior of out of order workflow events by dropping them, since the events order is not guaranteed by GitHub
-
Bugfix #300: Rename package followin upstream genji package
The upstream project of the genji database implementation have been renamed, to stay being able to upgrade the library we are force to rename it within this project as well. We keep the driver name compatible to existing installations.
The following sections list the changes for 3.1.0.
- Fix #278: Create SQLite directory if it doesn't exist
- Enh #277: Configurable labels for runner metrics
- Enh #281: Add metrics for workflow timestamps
-
Bugfix #278: Create SQLite directory if it doesn't exist
We have integrated a fix to always try to create the directory for the SQLite database if it doesn't exist. The exporter will fail to start if the directory does not exist and if it fails to create the directory for the database file.
-
Enhancement #277: Configurable labels for runner metrics
Initially we had a static list of available labels for the runner metrics, with this change we are getting more labels like the GitHub runner labels as Prometheus labels while they are configurable to avoid a high cardinality of Prometheus labels. Now you are able to get labels for
owner
,id
,name
,os
,status
and optionallylabels
. -
Enhancement #281: Add metrics for workflow timestamps
We added new metrics to show multiple timestamps for the workflows like when the workflow have been created, updated and started. Please look at the documentation for the exact naming of these new metrics.
The following sections list the changes for 3.0.1.
- Fix #270: Correctly store and retrieve records
- Fix #272: Add SQLite and Genji if supported
-
Bugfix #270: Correctly store and retrieve records
We had introduced a bug while switching between golang's sqlx and sql packages, with this fix all workflows should be stored and retrieved correctly.
You got to make sure to delete the database which have been created with the 3.0.0 release as the migration setup have been changed.
-
Bugfix #272: Add SQLite and Genji if supported
We haven't been able to build all supported binaries as some have been lacking support for the use libraries for SQLite and Genji. We have added build tags which enables or disables the database drivers if needed.
The following sections list the changes for 3.0.0.
- Fix #267: Use right date for workflow durations
- Chg #245: Read secrets form files
- Enh #261: Rebuild workflow collector based on webhooks
-
Bugfix #267: Use right date for workflow durations
We had used the creation date to detect the workflow duration, this have been replaced by the run started date to show the right duration time for the workflow.
-
Change #245: Read secrets form files
We have added proper support to load secrets like the token or the private key for app authentication from files or from base64-encoded strings. Just provide the flags or environment variables for token or private key with a DSN formatted string like
file://path/to/file
orbase64://Zm9vYmFy
.Since the private key for GitHub App authentication had been provided in base64-encoded format this is a breaking change as this won't work anymore until you prefix the value with
base64://
. -
Enhancement #261: Rebuild workflow collector based on webhooks
We have rebuilt the workflow collector based on GitHub webhooks to get a more stable behavior and to avoid running into many rate limits. Receiving changes directly from gitHub instead of requesting it should improve the behavior a lot. Please read the docs to see how you can setup the required webhooks within GitHub, opening up the exporter for GitHub should be the most simple part.
The following sections list the changes for 2.4.0.
- Enh #247: Add metrics for organization seats
-
Enhancement #247: Add metrics for organization seats
We had been missing metrics about available and remaining seats within organizations. This change adds the two metrics
github_org_filled_seats
andgithub_org_seats
related to that.
The following sections list the changes for 2.3.0.
- Fix #230: Properly handle workflow status results
- Enh #228: Enable app support for GitHub Enterprise
-
Bugfix #230: Properly handle workflow status results
While a workflow is running the conclusion property provides an empty string, in order to get a proper value in this case we have changed the metric value to the status property which offers a useable fallback.
-
Enhancement #228: Enable app support for GitHub Enterprise
Previously we had support for GitHub applications for the SaaS version only, with this change you are also able to use application registration for GitHub Enterprise.
The following sections list the changes for 2.2.1.
- Fix #216: Resolve nil pointer issues with responses
-
Bugfix #216: Resolve nil pointer issues with responses
We have introduced previously a feature where we made sure to close all response bodies, but we forgot to properly check if these responses are really valid which lead to nil pointer dereference issues.
The following sections list the changes for 2.2.0.
- Fix #190: Prevent concurrent scrapes
- Enh #193: Integrate option pprof profiling
- Enh #200: New metrics and configs for workflow collector
-
Bugfix #190: Prevent concurrent scrapes
If the exporter got some kind of duplicated repository names configured it lead to errors because the label combination had been scraped already. We have added some simple checks to prevent duplicated exports an all currently available collectors.
-
Enhancement #193: Integrate option pprof profiling
We have added an option to enable a pprof endpoint for proper profiling support with the help of tools like Parca. The endpoint
/debug/pprof
can now optionally be enabled to get the profiling details for catching potential memory leaks. -
Enhancement #200: New metrics and configs for workflow collector
We have added a new metric for the duration of the time since the workflow run was created, defined in minutes. Beside that we have added two additional configurations to query the workflows for a specific status and you are able to define a different timeframe than 12 hours now. Finally we have also added the run ID to the labels.
The following sections list the changes for 2.1.0.
- Enh #187: Integrate a flage to define pagination size
-
Enhancement #187: Integrate a flage to define pagination size
There had been no way to set a specific page size before, we have added an option/flag that you are able to define the pagination size on your own to avoid running into rate limits.
The following sections list the changes for 2.0.1.
- Fix #185: Improve parsing of private key for GitHub app
-
Bugfix #185: Improve parsing of private key for GitHub app
Previously we always checked if a file with the value exists if a private key for GitHub app authentication have been provided, now I have switched it to try to base64 decode the string first, and try to load the file afterwards which works more reliable and avoids leaking the private key into the log output.
The following sections list the changes for 2.0.0.
- Fix #184: Set right name/owner labels for runner metrics
- Enh #123: Add metrics for GitHub runners
- Enh #123: Add metrics for GitHub workflows
- Enh #174: Merge all billing related metrics
- Enh #174: Update all releated dependencies
- Enh #183: Integrate admin stats for GitHub enterprise
- Enh #184: Use getter functions to get values
-
Bugfix #184: Set right name/owner labels for runner metrics
We introduced metrics for GitHub self-hosted runners but we missed some important labels as remaining todos. With this change this gets corrected to properly show the repo/org/enterprise where the runner have been attached to.
-
Enhancement #123: Add metrics for GitHub runners
We've added new metrics for selfhosted runners used per repo, org or enterprise to give the ability to check if the runners are online and busy.
-
Enhancement #123: Add metrics for GitHub workflows
We've added new metrics for the observability of GitHub workflows/actions, they are disabled by default because it could result in a high cardinality of the labels.
-
Enhancement #174: Merge all billing related metrics
We've merged the three available collectors only related to billing into a single billing collector to reduce the required options and simply because they related to each other.
-
Enhancement #174: Update all releated dependencies
We've updated all dependencies to the latest available versions, including the build tools provided by Bingo.
-
Enhancement #183: Integrate admin stats for GitHub enterprise
We've integrated another collector within this exporter to provide admin stats as metrics to get a general overview about the amount of repos, issues, pull requests and so on. Special thanks for the great initial work by @mafrosis, your effort is highly appreciated.
-
Enhancement #184: Use getter functions to get values
To reduce the used boilerplate code and to better use the GitHub library we have updated most of the available collectors to simply use the provided getter functions instead of checking for nil values everywhere on our own.
The following sections list the changes for 1.2.0.
- Enh #145: Add support for GitHub app
-
Enhancement #145: Add support for GitHub app
We've added an integration with GitHub Apps. Organizations which are not able to use tokens for the API access are able to register a GitHub app for the API requests of this exporter now.
The following sections list the changes for 1.1.1.
- Fix #75: Fixed wildcard matching for private repos
-
Bugfix #75: Fixed wildcard matching for private repos
We have fixed the ability to match by globbing/wildcard for private repositories. So far the private repositories have been missing with the latest globbing/wildcard matching.
The following sections list the changes for 1.1.0.
- Fix #67: Fixed typecasts within billing API
- Chg #42: Drop darwin/386 release builds
- Chg #45: Change docker image name
- Chg #46: Generate metrics documentation
- Chg #68: Add support for wildcard repo match
- Chg #71: Integrate standard web config
-
Bugfix #67: Fixed typecasts within billing API
In some cases it happened that the GitHub billing API responded with floats, but we only accepted integers. With this fix any number should be casted to floats all the time.
-
Change #42: Drop darwin/386 release builds
We dropped the build of 386 builds on Darwin as this architecture is not supported by current Go versions anymore.
-
Change #45: Change docker image name
We should use the same docker image name as all the other exporters within this organization. So we renamed the image from
promhippie/github_exporter
topromhippie/github-exporter
to have the same naming convention as for the other exporters. -
Change #46: Generate metrics documentation
We have added a script to automatically generate the available metrics within the documentation to prevent any documentation gaps. Within the
hack/
folder we got a small Go script which parses the available collectors and updates the documentation partial based on that. -
Change #68: Add support for wildcard repo match
We integrated the functionality to add a wildcard matching for repository names to export metrics from. Now you don't need to add every single repo you want to match, you can add a whole organization.
-
Change #71: Integrate standard web config
We integrated the new web config from the Prometheus toolkit which provides a configuration for TLS support and also some basic builtin authentication. For the detailed configuration you check out the documentation.
The following sections list the changes for 1.0.1.
- Fix #49: Fixed pointer references within exporters
-
Bugfix #49: Fixed pointer references within exporters
So far we directly accessed common attributes on repos within the collectors, but as there could be corner cases where some attribute could be missing we add conditions to make sure only set values are getting called.
The following sections list the changes for 1.0.0.
- Fix #18: Handle private repos counts not available to non-organization member
- Chg #12: Refactor structure and integrate more metrics
- Enh #19: Allow insecure TLS via CLI flag
- Enh #20: Add flag to set /metrics endpoint request timeout
-
Bugfix #18: Handle private repos counts not available to non-organization member
Fix the case where the account used to query GitHub API is not a member of a given organisation, it resulted in a segfault.
-
Change #12: Refactor structure and integrate more metrics
The structure of the repository should get overhauled and beside that we should gather more metrics per organization and per repository. Additionally we should also add support for GitHub Enterprise as requested within #10.
-
Enhancement #19: Allow insecure TLS via CLI flag
In some cases it can be desirable to ignore certificate errors from the GitHub API - such as in the case of connecting to a private instance of GitHub Enterprise which uses a self-signed cert. This is exposed via the environment variable
GITHUB_EXPORTER_TLS_INSECURE
and the flag--github.insecure
. -
Enhancement #20: Add flag to set /metrics endpoint request timeout
When pulling a lot of data from the GitHub API, in some cases the default 10s timeout on the
/metrics
endpoint can be insufficient. This option allows the timeout to be configured viaGITHUB_EXPORTER_WEB_TIMEOUT
or--web.timeout
The following sections list the changes for 0.2.0.
- Chg #2: Renamed valid_response metric to up metric
- Chg #4: Enforce a repo or an org flag
-
Change #2: Renamed valid_response metric to up metric
The previous metric
github_valid_response
doesn't match the Prometheus conventions, so it have been renamed togithub_up
which properly signals if the exporter can gather metrics or not. -
Change #4: Enforce a repo or an org flag
The exporter requires at least one organization or repository to work properly, integrated a check that something have been set when launching the exporter.
The following sections list the changes for 0.1.0.
- Chg #11: Initial release of basic version
-
Change #11: Initial release of basic version
Just prepared an initial basic version which could be released to the public.