add build details for opampsupervisor (#858)

* add build details for opampsupervisor

This follows the pattern for releasing the builder.

Fixes https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/24293

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* update config

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* add changelog

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Evan Bradley <11745660+evan-bradley@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com>

* remove sha_short

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* Update cmd/opampsupervisor/Dockerfile

* dont bother testing on contrib changes

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* add contrib to gitignore

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

* updated title

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>

---------

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
Co-authored-by: Evan Bradley <11745660+evan-bradley@users.noreply.github.com>
Co-authored-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com>
This commit is contained in:
Alex Boten 2025-03-07 07:24:09 -08:00 committed by GitHub
parent fc22344e71
commit 88a1ec8b99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 331 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# Use this changelog template to create an entry for release notes.
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: new_component
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: opampsupervisor
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: publish binaries and container images for the OpAMP Supervisor
# One or more tracking issues or pull requests related to the change
issues: [858]
# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext:
# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: []

View File

@ -0,0 +1,73 @@
name: Release OpAMP supervisor
on:
push:
tags:
- "v*"
env:
# renovate: datasource=github-tags depName=goreleaser-pro packageName=goreleaser/goreleaser-pro
GORELEASER_PRO_VERSION: v2.7.0
jobs:
goreleaser:
runs-on: ubuntu-latest
permissions:
id-token: write
packages: write
contents: write
steps:
- name: Checkout Releases Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Push cmd/opampsupervisor Tag
run: |
tag="cmd/opampsupervisor/${{ github.ref_name }}"
message="Releasing OpAMP supervisor binaries for ${{ github.ref_name }}"
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git tag -a "${tag}" -m "${message}"
git push origin "${tag}"
- name: Checkout Contrib Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
repository: "open-telemetry/opentelemetry-collector-contrib"
ref: ${{ github.ref_name }}
path: ".contrib"
- name: Copy Dockerfile to Contrib Repo directory
run: cp cmd/opampsupervisor/Dockerfile .contrib/cmd/opampsupervisor/Dockerfile
- uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
- uses: anchore/sbom-action/download-syft@f325610c9f50a54015d37c8d16cb3b0e2c8f4de0 # v0.18.0
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
with:
platforms: amd64, arm64,ppc64le
- uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
- name: Setup Go
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
with:
go-version: "~1.24"
- name: Log into Docker.io
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Package Registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
with:
distribution: goreleaser-pro
version: ${{ env.GORELEASER_PRO_VERSION }}
args: release --clean -f cmd/opampsupervisor/.goreleaser.yml
env:
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COSIGN_YES: true
SKIP_SIGNS: false

View File

@ -0,0 +1,73 @@
name: CI - OpAMP supervisor
on:
merge_group:
push:
branches: [main]
paths:
- "cmd/**"
- ".github/**"
- "scripts/**"
- "Makefile"
- "go.mod"
- "go.sum"
pull_request:
branches: [main]
paths:
- "cmd/**"
- ".github/**"
- "scripts/**"
- "Makefile"
- "go.mod"
- "go.sum"
env:
# renovate: datasource=github-tags depName=goreleaser-pro packageName=goreleaser/goreleaser-pro
GORELEASER_PRO_VERSION: v2.7.0
jobs:
check-goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout Releases Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Checkout Core Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
repository: "open-telemetry/opentelemetry-collector-contrib"
path: ".contrib"
- name: Copy Dockerfile to Core Repo directory
run: cp cmd/opampsupervisor/Dockerfile .contrib/cmd/opampsupervisor/Dockerfile
- uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
- uses: anchore/sbom-action/download-syft@f325610c9f50a54015d37c8d16cb3b0e2c8f4de0 # v0.18.0
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
with:
platforms: amd64, arm64,ppc64le
- uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
- name: Setup Go
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
with:
go-version: "~1.24"
- name: Check GoReleaser
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
with:
distribution: goreleaser-pro
version: ${{ env.GORELEASER_PRO_VERSION }}
args: check --verbose -f cmd/opampsupervisor/.goreleaser.yml
env:
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1
with:
distribution: goreleaser-pro
version: ${{ env.GORELEASER_PRO_VERSION }}
args: --snapshot --clean -f cmd/opampsupervisor/.goreleaser.yml
env:
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COSIGN_YES: false
SKIP_SIGNS: true

1
.gitignore vendored
View File

@ -5,4 +5,5 @@ dist/
.generated-yaml/
.vscode
.core
.contrib
.tools

View File

@ -0,0 +1,144 @@
before:
hooks:
- go mod download
monorepo:
tag_prefix: cmd/opampsupervisor/
dir: .contrib/cmd/opampsupervisor
version: 2
builds:
- flags:
- -trimpath
ldflags:
- -s -w -X github.com/open-telemetry/opentelemetry-collector-contrib/cmd/opampsupervisor/internal.version={{ .Version }}
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
goarch:
- amd64
- arm64
- ppc64le
ignore:
- goos: windows
goarch: arm64
- goos: windows
goarch: ppc64le
- goos: darwin
goarch: ppc64le
binary: opampsupervisor
dockers:
- goos: linux
goarch: amd64
dockerfile: Dockerfile
image_templates:
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
- otel/opentelemetry-collector-opampsupervisor:latest-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-amd64
build_flag_templates:
- --pull
- --platform=linux/amd64
- --label=org.opencontainers.image.created={{.Date}}
- --label=org.opencontainers.image.name={{.ProjectName}}
- --label=org.opencontainers.image.revision={{.FullCommit}}
- --label=org.opencontainers.image.version={{.Version}}
- --label=org.opencontainers.image.source={{.GitURL}}
- --label=org.opencontainers.image.licenses=Apache-2.0
- goos: linux
goarch: arm64
dockerfile: Dockerfile
image_templates:
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
- otel/opentelemetry-collector-opampsupervisor:latest-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-arm64
build_flag_templates:
- --pull
- --platform=linux/arm64
- --label=org.opencontainers.image.created={{.Date}}
- --label=org.opencontainers.image.name={{.ProjectName}}
- --label=org.opencontainers.image.revision={{.FullCommit}}
- --label=org.opencontainers.image.version={{.Version}}
- --label=org.opencontainers.image.source={{.GitURL}}
- --label=org.opencontainers.image.licenses=Apache-2.0
- goos: linux
goarch: ppc64le
dockerfile: Dockerfile
image_templates:
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
- otel/opentelemetry-collector-opampsupervisor:latest-ppc64le
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-ppc64le
build_flag_templates:
- --pull
- --platform=linux/ppc64le
- --label=org.opencontainers.image.created={{.Date}}
- --label=org.opencontainers.image.name={{.ProjectName}}
- --label=org.opencontainers.image.revision={{.FullCommit}}
- --label=org.opencontainers.image.version={{.Version}}
- --label=org.opencontainers.image.source={{.GitURL}}
- --label=org.opencontainers.image.licenses=Apache-2.0
use: buildx
docker_manifests:
- name_template: otel/opentelemetry-collector-opampsupervisor:{{ .Version }}
image_templates:
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
- otel/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
- name_template: otel/opentelemetry-collector-opampsupervisor:latest
image_templates:
- otel/opentelemetry-collector-opampsupervisor:latest-amd64
- otel/opentelemetry-collector-opampsupervisor:latest-arm64
- otel/opentelemetry-collector-opampsupervisor:latest-ppc64le
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}
image_templates:
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:{{ .Version }}-ppc64le
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest
image_templates:
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:latest-ppc64le
release:
github:
owner: open-telemetry
name: opentelemetry-collector-releases
header: |
### Release of OpAMP supervisor artifacts
archives:
- formats:
- binary
checksum:
name_template: "checksums.txt"
snapshot:
version_template: "{{ .Tag }}-next"
changelog:
disable: true
signs:
- if: $SKIP_SIGNS != "true"
cmd: cosign
args:
- sign-blob
- --output-signature
- ${artifact}.sig
- --output-certificate
- ${artifact}.pem
- ${artifact}
signature: ${artifact}.sig
artifacts: all
certificate: ${artifact}.pem
docker_signs:
- if: $SKIP_SIGNS != "true"
args:
- sign
- ${artifact}
artifacts: all
sboms:
- id: archive
artifacts: archive
- id: package
artifacts: package

View File

@ -0,0 +1,14 @@
FROM alpine:3.20
RUN apk --update add ca-certificates
ARG SERVICE_NAME=opampsupervisor
RUN addgroup --gid 10001 --system ${SERVICE_NAME} && \
adduser --ingroup ${SERVICE_NAME} --shell /bin/false \
--disabled-password --uid 10001 ${SERVICE_NAME}
USER ${SERVICE_NAME}
WORKDIR /home/${SERVICE_NAME}
COPY --chmod=755 opampsupervisor /usr/local/bin/opampsupervisor
ENTRYPOINT [ "opampsupervisor" ]