Skip to content

Commit 226dd5d

Browse files
[enhancement] Add OCB docker image release (#671)
* create docker and update release workflows * Update builder-config.yaml * add otelcol-otlp manifest to Update Version workflow * Update .gitignore * remove update-version workflow to separate to PR#684 * add workflow for repo testing * Revert "add workflow for repo testing" This reverts commit fd61f1c. * Update builder-config.yaml to reference v0.111.0 release * add user and set permissions/workdir for ocb * update goreleaser and gh actions to remove builder-config.yaml refs * fix goreleaser docker repo ref * remove unnecessary commands from Dockerfile --------- Co-authored-by: Andrzej Stencel <[email protected]>
1 parent 38ce901 commit 226dd5d

File tree

5 files changed

+177
-2
lines changed

5 files changed

+177
-2
lines changed

.github/workflows/builder-release.yaml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ on:
77
jobs:
88
goreleaser:
99
runs-on: ubuntu-latest
10+
11+
permissions:
12+
id-token: write
13+
packages: write
14+
contents: write
15+
1016
steps:
1117
- name: Checkout Releases Repo
1218
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
@@ -27,10 +33,32 @@ jobs:
2733
repository: "open-telemetry/opentelemetry-collector"
2834
ref: ${{ github.ref_name }}
2935
path: ".core"
36+
- name: Copy Dockerfile to Core Repo directory
37+
run: cp cmd/builder/Dockerfile .core/cmd/builder/Dockerfile
38+
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
39+
- uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2
40+
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
41+
with:
42+
platforms: amd64, arm64,ppc64le
43+
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
3044
- name: Setup Go
3145
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
3246
with:
3347
go-version: ~1.23
48+
- name: Log into Docker.io
49+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
50+
with:
51+
username: ${{ secrets.DOCKER_USERNAME }}
52+
password: ${{ secrets.DOCKER_PASSWORD }}
53+
- name: Login to GitHub Package Registry
54+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
55+
with:
56+
registry: ghcr.io
57+
username: ${{ github.repository_owner }}
58+
password: ${{ secrets.GITHUB_TOKEN }}
59+
- shell: bash
60+
run: |
61+
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
3462
- name: Run GoReleaser
3563
uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0
3664
with:
@@ -39,4 +67,6 @@ jobs:
3967
args: release --clean -f cmd/builder/.goreleaser.yml
4068
env:
4169
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
42-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70+
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
71+
COSIGN_YES: true
72+
SKIP_SIGNS: false

.github/workflows/builder-testbuild.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ jobs:
3636
fetch-depth: 0
3737
repository: "open-telemetry/opentelemetry-collector"
3838
path: ".core"
39+
- name: Copy Dockerfile to Core Repo directory
40+
run: cp cmd/builder/Dockerfile .core/cmd/builder/Dockerfile
41+
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
42+
- uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2
43+
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
44+
with:
45+
platforms: amd64, arm64,ppc64le
46+
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
3947
- name: Setup Go
4048
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
4149
with:
@@ -57,4 +65,6 @@ jobs:
5765
args: --snapshot --clean -f cmd/builder/.goreleaser.yml
5866
env:
5967
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
60-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
68+
GITHUB_TOKEN: ${{ secrets.GH_PAT}}
69+
COSIGN_YES: false
70+
SKIP_SIGNS: true

Makefile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,24 @@ push-tags:
7373
@git tag -a ${TAG} -s -m "Version ${TAG}"
7474
@echo "Pushing tag ${TAG}"
7575
@git push ${REMOTE} ${TAG}
76+
77+
# Used for debug only
78+
REMOTE?[email protected]:open-telemetry/opentelemetry-collector-releases.git
79+
.PHONY: delete-tags
80+
delete-tags:
81+
@[ "${TAG}" ] || ( echo ">> env var TAG is not set"; exit 1 )
82+
@echo "Deleting local tag ${TAG}"
83+
@if [ -n "$$(git tag -l ${TAG})" ]; then \
84+
git tag -d ${TAG}; \
85+
fi
86+
@if [ -n "$$(git tag -l cmd/builder/${TAG})" ]; then \
87+
git tag -d cmd/builder/${TAG}; \
88+
fi
89+
@echo "Deleting remote tag ${TAG}"
90+
@git push ${REMOTE} :refs/tags/${TAG}
91+
@git push ${REMOTE} :refs/tags/cmd/builder/${TAG}
92+
93+
# Used for debug only
94+
REMOTE?[email protected]:open-telemetry/opentelemetry-collector-releases.git
95+
.PHONY: repeat-tags
96+
repeat-tags: delete-tags push-tags

cmd/builder/.goreleaser.yml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ before:
44
monorepo:
55
tag_prefix: cmd/builder/
66
dir: .core/cmd/builder
7+
version: 2
78
builds:
89
- flags:
910
- -trimpath
@@ -23,6 +24,80 @@ builds:
2324
- goos: windows
2425
goarch: arm64
2526
binary: ocb
27+
dockers:
28+
- goos: linux
29+
goarch: amd64
30+
dockerfile: Dockerfile
31+
image_templates:
32+
- otel/opentelemetry-collector-builder:{{ .Version }}-amd64
33+
- otel/opentelemetry-collector-builder:latest-amd64
34+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-amd64
35+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder: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-builder:{{ .Version }}-arm64
50+
- otel/opentelemetry-collector-builder:latest-arm64
51+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-arm64
52+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder: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-builder:{{ .Version }}-ppc64le
67+
- otel/opentelemetry-collector-builder:latest-ppc64le
68+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-ppc64le
69+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder: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-builder:{{ .Version }}
82+
image_templates:
83+
- otel/opentelemetry-collector-builder:{{ .Version }}-amd64
84+
- otel/opentelemetry-collector-builder:{{ .Version }}-arm64
85+
- otel/opentelemetry-collector-builder:{{ .Version }}-ppc64le
86+
- name_template: otel/opentelemetry-collector-builder:latest
87+
image_templates:
88+
- otel/opentelemetry-collector-builder:latest-amd64
89+
- otel/opentelemetry-collector-builder:latest-arm64
90+
- otel/opentelemetry-collector-builder:latest-ppc64le
91+
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}
92+
image_templates:
93+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-amd64
94+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-arm64
95+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-ppc64le
96+
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest
97+
image_templates:
98+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-amd64
99+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-arm64
100+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-ppc64le
26101
release:
27102
github:
28103
owner: open-telemetry
@@ -37,3 +112,28 @@ snapshot:
37112
version_template: "{{ .Tag }}-next"
38113
changelog:
39114
disable: true
115+
signs:
116+
- if: $SKIP_SIGNS != "true"
117+
cmd: cosign
118+
args:
119+
- sign-blob
120+
- --output-signature
121+
- ${artifact}.sig
122+
- --output-certificate
123+
- ${artifact}.pem
124+
- ${artifact}
125+
signature: ${artifact}.sig
126+
artifacts: all
127+
certificate: ${artifact}.pem
128+
docker_signs:
129+
- if: $SKIP_SIGNS != "true"
130+
args:
131+
- sign
132+
- ${artifact}
133+
artifacts: all
134+
sboms:
135+
- id: archive
136+
artifacts: archive
137+
- id: package
138+
artifacts: package
139+

cmd/builder/Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM golang:1.23-alpine3.20
2+
RUN apk --update add ca-certificates
3+
4+
ARG SERVICE_NAME=ocb
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 ocb /usr/local/bin/ocb
14+
ENTRYPOINT [ "ocb" ]

0 commit comments

Comments
 (0)