GSS stands for GHES(GitHub Enterprise Server) Schedule Scanner.
GSS is a Kubernetes add-on for DevOps and SRE teams to monitor and analyze CI/CD workflows in GitHub Enterprise Server. GSS runs as a kubernetes cronJob that scans and analyzes scheduled workflows across your GHES environment.
GHES Schedule Scanner runs as a kubernetes cronJob that periodically scans GitHub Enterprise Server repositories for scheduled workflows. It collects information about:
- Workflow names and schedules
- Last execution status
- Last committer details
- Repository information
The scanner is designed for high performance with parallel scanning capabilities using Go routines and provides timezone conversion between UTC and KST for better schedule visibility.
- GitHub Enterprise Server Integration: Compatible with self-hosted GitHub Enterprise Server (3.11+)
- Organization-wide Scanning: Scan scheduled workflows across all repositories in an organization
- Timezone Support: UTC/KST timezone conversion for better schedule visibility
- Status Monitoring: Track workflow execution status and identify failed workflows
- High Performance: Parallel scanning using Goroutines (scans 900+ repositories in about 20-22 seconds)
- Multiple Publishers: Publish results to console or Slack Canvas
- Kubernetes Native: Runs as a Kubernetes cronJob for periodic scanning
Scheduled Workflows Summary:
NO REPOSITORY WORKFLOW UTC SCHEDULE KST SCHEDULE LAST COMMITTER LAST STATUS
1 api-test-server api unit test 0 15 * * * 0 0 * * * younsl completed
2 daily-batch daily batch service 0 * * * * 0 9 * * * ddukbg completed
GSS supports multiple publishers to display scan results:
- Console (Pod logs):
console
- Slack Canvas:
slack-canvas
Outputs scan results to the console/logs. This is the default publisher.
Publishes scan results to a Slack Canvas, providing a rich, interactive view of your scheduled workflows.
Required environment variables:
SLACK_TOKEN
: Slack Bot Token (must start withxoxb-
)SLACK_CHANNEL_ID
: Slack Channel IDSLACK_CANVAS_ID
: Slack Canvas ID
Set environment variables needed for local development:
# Required
export GITHUB_TOKEN="ghp_token"
export GITHUB_ORG="your_organization"
export GITHUB_BASE_URL="https://your-ghes-domain"
# Optional
export LOG_LEVEL="INFO"
export PUBLISHER_TYPE="console" # Available values: `console`, `slack-canvas`
# For Slack Canvas
export SLACK_TOKEN="xoxb-token"
export SLACK_CHANNEL_ID="F01234ABCD"
export SLACK_CANVAS_ID="C01234ABCD"
After setting up environment variables, run the application locally:
go run cmd/ghes-schedule-scanner/main.go
If you want to know more about GSS, please refer to the following documents:
This project is licensed under the MIT License - see the LICENSE file for details.