Skip to content

Commit a0e6efb

Browse files
committed
fix(examples): align otel-collector builder-config with v0.151.0 release line
The examples/otel-collector builder-config.yaml pinned Collector components to the v0.145.0 / v1.51.0 release line, which has drifted from the v0.151.0 line OBI depends on (see go.mod). Building with a current ocb failed with undefined symbols in xexporterhelper. - Bump beta modules (debugexporter, otlpexporter, batchprocessor, otlpreceiver) v0.145.0 -> v0.151.0 - Bump stable confmap providers v1.51.0 -> v1.57.0 - Document the ocb version (v0.151.0) the example builds with in the README - Add an "OTel Collector example (ocb build)" job to pull_request.yml that reuses the existing generate-bpf artifact (like collector-cross-compile) and builds the example with ocb, pinned to the Collector version resolved from go.mod so it cannot drift again Fixes #2264
1 parent 8a9be99 commit a0e6efb

3 files changed

Lines changed: 62 additions & 10 deletions

File tree

.github/workflows/pull_request.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,55 @@ jobs:
171171
GOOS: ${{ matrix.goos }}
172172
GOARCH: ${{ matrix.goarch }}
173173
run: go build ./collector/...
174+
175+
otel-collector-example:
176+
name: OTel Collector example (ocb build)
177+
needs: generate-bpf
178+
runs-on: ubuntu-latest
179+
timeout-minutes: 20
180+
steps:
181+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
182+
with:
183+
ref: ${{ inputs.ref || github.sha }}
184+
persist-credentials: false
185+
186+
- name: Set up Go
187+
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 # zizmor: ignore[cache-poisoning] go.sum verifies module integrity
188+
with:
189+
go-version-file: "go.mod"
190+
cache: true
191+
192+
- name: Go build cache
193+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 # zizmor: ignore[cache-poisoning] go build cache is content-addressable and self-verifying
194+
with:
195+
path: ~/.cache/go-build
196+
key: go-build-otelcol-example-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/*.go', 'go.sum') }}
197+
restore-keys: |
198+
go-build-otelcol-example-${{ runner.os }}-${{ runner.arch }}-
199+
200+
- name: Download generated BPF files
201+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
202+
with:
203+
name: bpf-generated-${{ github.run_id }}
204+
205+
- name: Resolve ocb version from go.mod
206+
id: ocb
207+
shell: bash
208+
run: |
209+
# Pin ocb to the Collector release line OBI itself depends on, so the
210+
# example is always built against a compatible builder (see #2264).
211+
version=$(grep -E '^[[:space:]]*go\.opentelemetry\.io/collector v[0-9]' go.mod | awk '{print $2}')
212+
if [ -z "$version" ]; then
213+
echo "could not determine collector version from go.mod" >&2
214+
exit 1
215+
fi
216+
echo "version=$version" >> "$GITHUB_OUTPUT"
217+
218+
- name: Install ocb
219+
env:
220+
OCB_VERSION: ${{ steps.ocb.outputs.version }}
221+
run: go install go.opentelemetry.io/collector/cmd/builder@"${OCB_VERSION}"
222+
223+
- name: Build collector distribution
224+
working-directory: examples/otel-collector
225+
run: "$(go env GOPATH)/bin/builder --config ./builder-config.yaml"

examples/otel-collector/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ This example demonstrates how to build and run the OpenTelemetry Collector with
55
## Prerequisites
66

77
- Go 1.25 or later
8-
- [OTel Collector Builder (`ocb`)](https://opentelemetry.io/docs/collector/extend/ocb/) installed
8+
- [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.
99
- Docker (for generating eBPF files) or a C compiler, clang, and eBPF headers
1010
- Linux system with elevated privileges (sudo) to run the collector
1111

examples/otel-collector/builder-config.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ replaces:
88

99
exporters:
1010
- gomod:
11-
go.opentelemetry.io/collector/exporter/debugexporter v0.145.0
11+
go.opentelemetry.io/collector/exporter/debugexporter v0.151.0
1212
- gomod:
13-
go.opentelemetry.io/collector/exporter/otlpexporter v0.145.0
13+
go.opentelemetry.io/collector/exporter/otlpexporter v0.151.0
1414

1515
processors:
1616
- gomod:
17-
go.opentelemetry.io/collector/processor/batchprocessor v0.145.0
17+
go.opentelemetry.io/collector/processor/batchprocessor v0.151.0
1818

1919
receivers:
20-
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.145.0
20+
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.151.0
2121
- gomod: go.opentelemetry.io/obi v0.5.0
2222
import: go.opentelemetry.io/obi/collector
2323

2424
providers:
25-
- gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.51.0
26-
- gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.51.0
27-
- gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v1.51.0
28-
- gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.51.0
29-
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.51.0
25+
- gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.57.0
26+
- gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.57.0
27+
- gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v1.57.0
28+
- gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.57.0
29+
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.57.0

0 commit comments

Comments
 (0)