Skip to content

Commit 4644064

Browse files
committed
add build details for opampsupervisor
This follows the pattern for releasing the builder. Fixes open-telemetry/opentelemetry-collector-contrib#24293 Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
1 parent f80d8df commit 4644064

File tree

4 files changed

+305
-0
lines changed

4 files changed

+305
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Release Builder
2+
on:
3+
push:
4+
tags:
5+
- "v*"
6+
7+
env:
8+
# renovate: datasource=github-tags depName=goreleaser-pro packageName=goreleaser/goreleaser-pro
9+
GORELEASER_PRO_VERSION: v2.7.0
10+
11+
jobs:
12+
goreleaser:
13+
runs-on: ubuntu-latest
14+
15+
permissions:
16+
id-token: write
17+
packages: write
18+
contents: write
19+
20+
steps:
21+
- name: Checkout Releases Repo
22+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
23+
with:
24+
fetch-depth: 0
25+
- name: Push cmd/opampsupervisor Tag
26+
run: |
27+
tag="cmd/opampsupervisor/${{ github.ref_name }}"
28+
message="Releasing ocb binaries for ${{ github.ref_name }}"
29+
git config user.name "${GITHUB_ACTOR}"
30+
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
31+
git tag -a "${tag}" -m "${message}"
32+
git push origin "${tag}"
33+
- name: Checkout Core Repo
34+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
35+
with:
36+
fetch-depth: 0
37+
repository: "open-telemetry/opentelemetry-collector"
38+
ref: ${{ github.ref_name }}
39+
path: ".core"
40+
- name: Copy Dockerfile to Core Repo directory
41+
run: cp cmd/opampsupervisor/Dockerfile .core/cmd/opampsupervisor/Dockerfile
42+
- uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
43+
- uses: anchore/sbom-action/download-syft@f325610c9f50a54015d37c8d16cb3b0e2c8f4de0 # v0.18.0
44+
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
45+
with:
46+
platforms: amd64, arm64,ppc64le
47+
- uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
48+
- name: Setup Go
49+
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
50+
with:
51+
go-version: "~1.24"
52+
- name: Log into Docker.io
53+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
54+
with:
55+
username: ${{ secrets.DOCKER_USERNAME }}
56+
password: ${{ secrets.DOCKER_PASSWORD }}
57+
- name: Login to GitHub Package Registry
58+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
59+
with:
60+
registry: ghcr.io
61+
username: ${{ github.repository_owner }}
62+
password: ${{ secrets.GITHUB_TOKEN }}
63+
- shell: bash
64+
run: |
65+
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
66+
- name: Run GoReleaser
67+
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
68+
with:
69+
distribution: goreleaser-pro
70+
version: ${{ env.GORELEASER_PRO_VERSION }}
71+
args: release --clean -f cmd/opampsupervisor/.goreleaser.yml
72+
env:
73+
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
74+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75+
COSIGN_YES: true
76+
SKIP_SIGNS: false
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: CI - Builder
2+
3+
on:
4+
merge_group:
5+
push:
6+
branches: [main]
7+
paths:
8+
- "distributions/otelcol-contrib/**"
9+
- "cmd/**"
10+
- ".github/**"
11+
- "scripts/**"
12+
- "Makefile"
13+
- "go.mod"
14+
- "go.sum"
15+
pull_request:
16+
branches: [main]
17+
paths:
18+
- "distributions/otelcol-contrib/**"
19+
- "cmd/**"
20+
- ".github/**"
21+
- "scripts/**"
22+
- "Makefile"
23+
- "go.mod"
24+
- "go.sum"
25+
26+
env:
27+
# renovate: datasource=github-tags depName=goreleaser-pro packageName=goreleaser/goreleaser-pro
28+
GORELEASER_PRO_VERSION: v2.7.0
29+
30+
jobs:
31+
check-goreleaser:
32+
runs-on: ubuntu-latest
33+
steps:
34+
- name: Checkout Releases Repo
35+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
36+
with:
37+
fetch-depth: 0
38+
- name: Checkout Core Repo
39+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
40+
with:
41+
fetch-depth: 0
42+
repository: "open-telemetry/opentelemetry-collector"
43+
path: ".core"
44+
- name: Copy Dockerfile to Core Repo directory
45+
run: cp cmd/opampsupervisor/Dockerfile .core/cmd/opampsupervisor/Dockerfile
46+
- uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
47+
- uses: anchore/sbom-action/download-syft@f325610c9f50a54015d37c8d16cb3b0e2c8f4de0 # v0.18.0
48+
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
49+
with:
50+
platforms: amd64, arm64,ppc64le
51+
- uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
52+
- name: Setup Go
53+
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
54+
with:
55+
go-version: "~1.24"
56+
- name: Check GoReleaser
57+
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
58+
with:
59+
distribution: goreleaser-pro
60+
version: ${{ env.GORELEASER_PRO_VERSION }}
61+
args: check --verbose -f cmd/opampsupervisor/.goreleaser.yml
62+
env:
63+
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65+
- name: Run GoReleaser
66+
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
67+
with:
68+
distribution: goreleaser-pro
69+
version: ${{ env.GORELEASER_PRO_VERSION }}
70+
args: --snapshot --clean -f cmd/opampsupervisor/.goreleaser.yml
71+
env:
72+
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
73+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
74+
COSIGN_YES: false
75+
SKIP_SIGNS: true
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
before:
2+
hooks:
3+
- go mod download
4+
monorepo:
5+
tag_prefix: cmd/opampsupervisor/
6+
dir: .core/cmd/opampsupervisor
7+
version: 2
8+
builds:
9+
- flags:
10+
- -trimpath
11+
ldflags:
12+
- -s -w -X github.com/open-telemetry/opentelemetry-collector-contrib/cmd/opampsupervisor/internal.version={{ .Version }}
13+
env:
14+
- CGO_ENABLED=0
15+
goos:
16+
- linux
17+
- windows
18+
- darwin
19+
goarch:
20+
- amd64
21+
- arm64
22+
- ppc64le
23+
ignore:
24+
- goos: windows
25+
goarch: arm64
26+
binary: ocb
27+
dockers:
28+
- goos: linux
29+
goarch: amd64
30+
dockerfile: Dockerfile
31+
image_templates:
32+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
33+
- otel/opentelemetry-collector-opampsupervisor:latest-amd64
34+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
35+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-amd64
36+
build_flag_templates:
37+
- --pull
38+
- --platform=linux/amd64
39+
- --label=org.opencontainers.image.created={{.Date}}
40+
- --label=org.opencontainers.image.name={{.ProjectName}}
41+
- --label=org.opencontainers.image.revision={{.FullCommit}}
42+
- --label=org.opencontainers.image.version={{.Version}}
43+
- --label=org.opencontainers.image.source={{.GitURL}}
44+
- --label=org.opencontainers.image.licenses=Apache-2.0
45+
- goos: linux
46+
goarch: arm64
47+
dockerfile: Dockerfile
48+
image_templates:
49+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
50+
- otel/opentelemetry-collector-opampsupervisor:latest-arm64
51+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
52+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-arm64
53+
build_flag_templates:
54+
- --pull
55+
- --platform=linux/arm64
56+
- --label=org.opencontainers.image.created={{.Date}}
57+
- --label=org.opencontainers.image.name={{.ProjectName}}
58+
- --label=org.opencontainers.image.revision={{.FullCommit}}
59+
- --label=org.opencontainers.image.version={{.Version}}
60+
- --label=org.opencontainers.image.source={{.GitURL}}
61+
- --label=org.opencontainers.image.licenses=Apache-2.0
62+
- goos: linux
63+
goarch: ppc64le
64+
dockerfile: Dockerfile
65+
image_templates:
66+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
67+
- otel/opentelemetry-collector-opampsupervisor:latest-ppc64le
68+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
69+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-ppc64le
70+
build_flag_templates:
71+
- --pull
72+
- --platform=linux/ppc64le
73+
- --label=org.opencontainers.image.created={{.Date}}
74+
- --label=org.opencontainers.image.name={{.ProjectName}}
75+
- --label=org.opencontainers.image.revision={{.FullCommit}}
76+
- --label=org.opencontainers.image.version={{.Version}}
77+
- --label=org.opencontainers.image.source={{.GitURL}}
78+
- --label=org.opencontainers.image.licenses=Apache-2.0
79+
use: buildx
80+
docker_manifests:
81+
- name_template: otel/opentelemetry-collector-opampsupervisor:{{ .Version }}
82+
image_templates:
83+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
84+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
85+
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
86+
- name_template: otel/opentelemetry-collector-opampsupervisor:latest
87+
image_templates:
88+
- otel/opentelemetry-collector-opampsupervisor:latest-amd64
89+
- otel/opentelemetry-collector-opampsupervisor:latest-arm64
90+
- otel/opentelemetry-collector-opampsupervisor:latest-ppc64le
91+
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}
92+
image_templates:
93+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
94+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
95+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
96+
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest
97+
image_templates:
98+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-amd64
99+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-arm64
100+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-ppc64le
101+
release:
102+
github:
103+
owner: open-telemetry
104+
name: opentelemetry-collector-releases
105+
header: |
106+
### Images and binaries for collector distributions here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/{{ .Tag }}
107+
archives:
108+
- formats:
109+
- binary
110+
checksum:
111+
name_template: "checksums.txt"
112+
snapshot:
113+
version_template: "{{ .Tag }}-next"
114+
changelog:
115+
disable: true
116+
signs:
117+
- if: $SKIP_SIGNS != "true"
118+
cmd: cosign
119+
args:
120+
- sign-blob
121+
- --output-signature
122+
- ${artifact}.sig
123+
- --output-certificate
124+
- ${artifact}.pem
125+
- ${artifact}
126+
signature: ${artifact}.sig
127+
artifacts: all
128+
certificate: ${artifact}.pem
129+
docker_signs:
130+
- if: $SKIP_SIGNS != "true"
131+
args:
132+
- sign
133+
- ${artifact}
134+
artifacts: all
135+
sboms:
136+
- id: archive
137+
artifacts: archive
138+
- id: package
139+
artifacts: package
140+

cmd/opampsupervisor/Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM golang:1.24-alpine3.20
2+
RUN apk --update add ca-certificates
3+
4+
ARG SERVICE_NAME=opampsupervisor
5+
6+
RUN addgroup --gid 10001 --system ${SERVICE_NAME} && \
7+
adduser --ingroup ${SERVICE_NAME} --shell /bin/false \
8+
--disabled-password --uid 10001 ${SERVICE_NAME}
9+
10+
USER ${SERVICE_NAME}
11+
WORKDIR /home/${SERVICE_NAME}
12+
13+
COPY --chmod=755 opampsupervisor /usr/local/bin/opampsupervisor
14+
ENTRYPOINT [ "opampsupervisor" ]

0 commit comments

Comments
 (0)