This document describes the GitHub Actions workflows available for TelemetryFlow Agent.
| Workflow | File | Purpose |
|---|---|---|
| Release | release.yml |
Build and release binaries for all platforms |
| Docker Build | docker.yml |
Build and publish Docker images |
File: .github/workflows/release.yml
Builds and releases TelemetryFlow Agent for multiple platforms with native packages.
| Trigger | Description |
|---|---|
Push tag v*.*.* |
Automatically triggered on semantic version tags |
| Manual dispatch | Run manually with custom version |
| Platform | Architecture | Package Format |
|---|---|---|
| Linux | amd64, arm64 | RPM, DEB, tar.gz |
| Windows | amd64 | ZIP (with installer) |
| macOS | amd64 (Intel), arm64 (Apple Silicon) | DMG, tar.gz |
workflow_dispatch:
inputs:
version:
description: "Version to release (e.g., 1.1.9)"
required: true
default: "1.1.9"
prerelease:
description: "Mark as pre-release"
required: false
type: boolean
default: false# Create and push a version tag
git tag v1.1.9
git push origin v1.1.9- Go to Actions > Release
- Click Run workflow
- Enter version (e.g.,
1.1.9) - Optionally check "Mark as pre-release"
- Click Run workflow
The workflow produces:
- RPM packages:
tfo-agent-{version}-1.{arch}.rpm - DEB packages:
tfo-agent_{version}_{arch}.deb - Windows ZIP:
tfo-agent-{version}-windows-amd64.zip - macOS DMG:
tfo-agent-{version}-darwin-{arch}.dmg - Tarballs:
tfo-agent-{version}-{os}-{arch}.tar.gz - Checksums:
checksums-sha256.txt
File: .github/workflows/docker.yml
Builds and publishes multi-platform Docker images with semantic versioning.
| Trigger | Description |
|---|---|
Push to main/master |
Build and push latest tag |
Push tag v*.*.* |
Build and push version tags |
| Pull request | Build only (no push) |
| Manual dispatch | Run with custom options |
The workflow only runs when relevant files change:
Dockerfilecmd/**internal/**pkg/**go.mod,go.sum.github/workflows/docker.yml
| Registry | Image |
|---|---|
| GitHub Container Registry | ghcr.io/{owner}/telemetryflow-agent |
| Docker Hub | telemetryflow/telemetryflow-agent |
| Tag Pattern | Description | Example |
|---|---|---|
{version} |
Full semantic version | 1.1.9 |
{major}.{minor} |
Major.minor version | 1.1 |
{major} |
Major version only | 1 |
latest |
Latest from main branch | latest |
sha-{commit} |
Git commit SHA | sha-abc1234 |
linux/amd64linux/arm64
workflow_dispatch:
inputs:
version:
description: "Version tag (e.g., 1.1.9)"
required: false
push:
description: "Push images to registry"
type: boolean
default: true
platforms:
description: "Target platforms"
default: "linux/amd64,linux/arm64"# Push to main branch - builds 'latest' tag
git push origin main
# Create version tag - builds version tags
git tag v1.1.9
git push origin v1.1.9- Go to Actions > Docker Build
- Click Run workflow
- Optionally enter version
- Choose whether to push
- Select platforms
- Click Run workflow
# GitHub Container Registry
docker pull ghcr.io/{owner}/telemetryflow-agent:latest
docker pull ghcr.io/{owner}/telemetryflow-agent:1.1.9
# Docker Hub
docker pull telemetryflow/telemetryflow-agent:latest
docker pull telemetryflow/telemetryflow-agent:1.1.9- SBOM Generation: Software Bill of Materials in SPDX format
- Trivy Scanning: Vulnerability scanning for CRITICAL and HIGH severity
- Provenance: Build provenance attestation
- Layer Caching: GitHub Actions cache for faster builds
| Secret | Description | Required For |
|---|---|---|
GITHUB_TOKEN |
Auto-provided by GitHub | All workflows |
DOCKERHUB_TOKEN |
Docker Hub access token | Docker Hub push |
| Variable | Description | Required For |
|---|---|---|
DOCKERHUB_USERNAME |
Docker Hub username | Docker Hub push |
- Go to Settings > Secrets and variables > Actions
- Add secret:
DOCKERHUB_TOKENwith your Docker Hub token - Add variable:
DOCKERHUB_USERNAMEwith your Docker Hub username
Both workflows inject build information into the binary:
| Variable | Description |
|---|---|
VERSION |
Semantic version |
GIT_COMMIT |
Short commit SHA |
GIT_BRANCH |
Git branch name |
BUILD_TIME |
UTC build timestamp |
Access via CLI:
tfo-agent versionflowchart LR
subgraph Prepare
A[prepare]
end
subgraph Build
B1[build-linux<br/>amd64, arm64]
B2[build-windows<br/>amd64]
B3[build-macos<br/>amd64, arm64]
end
subgraph Package
P1[package-rpm]
P2[package-deb]
P3[package-windows]
P4[package-macos]
P5[package-tarball]
end
subgraph Release
R[release]
end
A --> B1
A --> B2
A --> B3
B1 --> P1
B1 --> P2
B1 --> P5
B2 --> P3
B3 --> P4
B3 --> P5
P1 --> R
P2 --> R
P3 --> R
P4 --> R
P5 --> R
flowchart LR
subgraph Prepare
A[prepare]
end
subgraph Build
B[build<br/>linux/amd64, linux/arm64]
end
subgraph Security
S[scan<br/>Trivy]
end
subgraph Report
R[summary]
end
A --> B
B --> S
B --> R
flowchart TD
subgraph "Git Tag"
T[v1.2.3]
end
subgraph "Generated Docker Tags"
D1[1.2.3]
D2[1.2]
D3[1]
D4[latest]
D5[sha-abc1234]
end
T --> D1
T --> D2
T --> D3
T --> D4
T --> D5
Cause: Missing Docker Hub credentials
Solution:
1. Create Docker Hub access token
2. Add DOCKERHUB_TOKEN secret
3. Add DOCKERHUB_USERNAME variable
Cause: Cache expired or first build
Solution: Re-run the workflow; cache will be populated
Cause: Image not available in registry
Solution: Ensure the build job completed successfully
Cause: Missing config file
Solution: Ensure configs/tfo-agent.yaml exists