Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,55 @@ jobs:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: go build ./collector/...

otel-collector-example:
name: OTel Collector example (ocb build)
needs: generate-bpf
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false

- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 # zizmor: ignore[cache-poisoning] go.sum verifies module integrity
with:
go-version-file: "go.mod"
cache: true

- name: Go build cache
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 # zizmor: ignore[cache-poisoning] go build cache is content-addressable and self-verifying
with:
path: ~/.cache/go-build
key: go-build-otelcol-example-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/*.go', 'go.sum') }}
restore-keys: |
go-build-otelcol-example-${{ runner.os }}-${{ runner.arch }}-

- name: Download generated BPF files
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: bpf-generated-${{ github.run_id }}

- name: Resolve ocb version from go.mod
id: ocb
shell: bash
run: |
# Pin ocb to the Collector release line OBI itself depends on, so the
# example is always built against a compatible builder (see #2264).
version=$(grep -E '^[[:space:]]*go\.opentelemetry\.io/collector v[0-9]' go.mod | awk '{print $2}')
if [ -z "$version" ]; then
echo "could not determine collector version from go.mod" >&2
exit 1
fi
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Install ocb
env:
OCB_VERSION: ${{ steps.ocb.outputs.version }}
run: go install go.opentelemetry.io/collector/cmd/builder@"${OCB_VERSION}"

- name: Build collector distribution
working-directory: examples/otel-collector
run: "$(go env GOPATH)/bin/builder --config ./builder-config.yaml"
2 changes: 1 addition & 1 deletion examples/otel-collector/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This example demonstrates how to build and run the OpenTelemetry Collector with
## Prerequisites

- Go 1.25 or later
- [OTel Collector Builder (`ocb`)](https://opentelemetry.io/docs/collector/extend/ocb/) installed
- [OTel Collector Builder (`ocb`)](https://opentelemetry.io/docs/collector/extend/ocb/) **v0.151.0** installed. The component versions pinned in `builder-config.yaml` track the OpenTelemetry Collector `v0.151.0` release line (matching OBI's own `go.mod`). `ocb` is an unstable (`v0.x`) package with no cross-version compatibility guarantee, so use the `ocb` release that matches those component versions — a different `ocb` version may fail to build.
- Docker (for generating eBPF files) or a C compiler, clang, and eBPF headers
- Linux system with elevated privileges (sudo) to run the collector

Expand Down
18 changes: 9 additions & 9 deletions examples/otel-collector/builder-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ replaces:

exporters:
- gomod:
go.opentelemetry.io/collector/exporter/debugexporter v0.145.0
go.opentelemetry.io/collector/exporter/debugexporter v0.151.0
- gomod:
go.opentelemetry.io/collector/exporter/otlpexporter v0.145.0
go.opentelemetry.io/collector/exporter/otlpexporter v0.151.0

processors:
- gomod:
go.opentelemetry.io/collector/processor/batchprocessor v0.145.0
go.opentelemetry.io/collector/processor/batchprocessor v0.151.0

receivers:
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.145.0
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.151.0
- gomod: go.opentelemetry.io/obi v0.5.0
import: go.opentelemetry.io/obi/collector

providers:
- gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.51.0
- gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.51.0
- gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v1.51.0
- gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.51.0
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.51.0
- gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.57.0
- gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.57.0
- gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v1.57.0
- gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.57.0
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.57.0
Loading