Skip to content

Commit

Permalink
create docker and update release workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
jackgopack4 committed Sep 20, 2024
1 parent befe950 commit df835c9
Show file tree
Hide file tree
Showing 8 changed files with 265 additions and 2 deletions.
34 changes: 33 additions & 1 deletion .github/workflows/builder-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ on:
jobs:
goreleaser:
runs-on: ubuntu-latest

permissions:
id-token: write
packages: write
contents: write

steps:
- name: Checkout Releases Repo
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
Expand All @@ -27,10 +33,34 @@ jobs:
repository: "open-telemetry/opentelemetry-collector"
ref: ${{ github.ref_name }}
path: ".core"
- name: Copy Dockerfile and builder-config.yaml
run: |
cp cmd/builder/Dockerfile .core/cmd/builder/Dockerfile
cp cmd/builder/builder-config.yaml .core/cmd/builder/builder-config.yaml
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
- uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
with:
platforms: amd64, arm64,ppc64le
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ~1.23
- 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 }}
- shell: bash
run: |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0
with:
Expand All @@ -39,4 +69,6 @@ jobs:
args: release --clean -f cmd/builder/.goreleaser.yml
env:
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
COSIGN_YES: true
SKIP_SIGNS: false
14 changes: 13 additions & 1 deletion .github/workflows/builder-testbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ jobs:
fetch-depth: 0
repository: "open-telemetry/opentelemetry-collector"
path: ".core"
- name: Copy Dockerfile and builder-config.yaml
run: |
cp cmd/builder/Dockerfile .core/cmd/builder/Dockerfile
cp cmd/builder/builder-config.yaml .core/cmd/builder/builder-config.yaml
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
- uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
with:
platforms: amd64, arm64,ppc64le
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
Expand All @@ -57,4 +67,6 @@ jobs:
args: --snapshot --clean -f cmd/builder/.goreleaser.yml
env:
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_PAT}}
COSIGN_YES: false
SKIP_SIGNS: true
65 changes: 65 additions & 0 deletions .github/workflows/update-version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Update Version

on:
workflow_dispatch:
inputs:
old_version:
description: 'Previous semantic version number (e.g., v0.109.0)'
required: true
new_version:
description: 'Next semantic version number (e.g., v0.110.0)'
required: true

jobs:
update-version:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN}}
steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Strip 'v' from new version for OTELCOL_BUILDER_VERSION
uses: bhowell2/github-substring-action@latest
id: strip_new_version
with:
value: ${{ github.event.inputs.new_version }}
index_of_str: 'v'
- name: Strip 'v' from old version for OTELCOL_BUILDER_VERSION
uses: bhowell2/github-substring-action@latest
id: strip_old_version
with:
value: ${{ github.event.inputs.old_version }}
index_of_str: 'v'

- name: Update version in Makefile
run: |
sed -i "s/OTELCOL_BUILDER_VERSION ?= ${{ steps.strip_old_version.outputs.substring }}/OTELCOL_BUILDER_VERSION ?= ${{ steps.strip_new_version.outputs.substring }}/g" Makefile
- name: Update version in builder-config.yaml
run: |
sed -i "s/${{ github.event.inputs.old_version }}/${{ github.event.inputs.new_version }}/g" cmd/builder/builder-config.yaml
- name: Update version in otelcol manifest.yaml
run: |
sed -i "s/${{ github.event.inputs.old_version }}/${{ github.event.inputs.new_version }}/g" distributions/otelcol/manifest.yaml
- name: Update version in otelcol-contrib manifest.yaml
run: |
sed -i "s/${{ github.event.inputs.old_version }}/${{ github.event.inputs.new_version }}/g" distributions/otelcol-contrib/manifest.yaml
- name: Update version in otelcol-k8s manifest.yaml
run: |
sed -i "s/${{ github.event.inputs.old_version }}/${{ github.event.inputs.new_version }}/g" distributions/otelcol-k8s/manifest.yaml
- name: Commit changes and draft PR
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b update-version-${{ github.event.inputs.new_version }}
git add Makefile cmd/builder/builder-config.yaml distributions/otelcol/manifest.yaml distributions/otelcol-contrib/manifest.yaml distributions/otelcol-k8s/manifest.yaml
git commit -m "Update version from ${{ github.event.inputs.old_version }} to ${{ github.event.inputs.new_version }}"
git push -u origin update-version-${{ github.event.inputs.new_version }}
gh pr create --title "[chore] Prepare release ${{ github.event.inputs.new_version }}" \
--body "This PR updates the version from ${{ github.event.inputs.old_version }} to ${{ github.event.inputs.new_version }}" \
--base main --head update-version-${{ github.event.inputs.new_version }} --draft
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ dist/
.generated-yaml/
.vscode
.core
cmd/builder/output
cmd/builder/.secrets
21 changes: 21 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,24 @@ push-tags:
@git tag -a ${TAG} -s -m "Version ${TAG}"
@echo "Pushing tag ${TAG}"
@git push ${REMOTE} ${TAG}

# Used for debug only
REMOTE?=git@github.com:open-telemetry/opentelemetry-collector-releases.git
.PHONY: delete-tags
delete-tags:
@[ "${TAG}" ] || ( echo ">> env var TAG is not set"; exit 1 )
@echo "Deleting local tag ${TAG}"
@if [ -n "$$(git tag -l ${TAG})" ]; then \
git tag -d ${TAG}; \
fi
@if [ -n "$$(git tag -l cmd/builder/${TAG})" ]; then \
git tag -d cmd/builder/${TAG}; \
fi
@echo "Deleting remote tag ${TAG}"
@git push ${REMOTE} :refs/tags/${TAG}
@git push ${REMOTE} :refs/tags/cmd/builder/${TAG}

# Used for debug only
REMOTE?=git@github.com:open-telemetry/opentelemetry-collector-releases.git
.PHONY: repeat-tags
repeat-tags: delete-tags push-tags
106 changes: 106 additions & 0 deletions cmd/builder/.goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ before:
monorepo:
tag_prefix: cmd/builder/
dir: .core/cmd/builder
version: 2
builds:
- flags:
- -trimpath
Expand All @@ -23,6 +24,86 @@ builds:
- goos: windows
goarch: arm64
binary: ocb
dockers:
- goos: linux
goarch: amd64
dockerfile: Dockerfile
image_templates:
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-amd64
- johnpeterson785/opentelemetry-collector-builder:latest-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-amd64
extra_files:
- builder-config.yaml
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:
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-arm64
- johnpeterson785/opentelemetry-collector-builder:latest-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-arm64
extra_files:
- builder-config.yaml
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:
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-ppc64le
- johnpeterson785/opentelemetry-collector-builder:latest-ppc64le
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-ppc64le
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-ppc64le
extra_files:
- builder-config.yaml
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: johnpeterson785/opentelemetry-collector-builder:{{ .Version }}
image_templates:
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-amd64
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-arm64
- johnpeterson785/opentelemetry-collector-builder:{{ .Version }}-ppc64le
- name_template: johnpeterson785/opentelemetry-collector-builder:latest
image_templates:
- johnpeterson785/opentelemetry-collector-builder:latest-amd64
- johnpeterson785/opentelemetry-collector-builder:latest-arm64
- johnpeterson785/opentelemetry-collector-builder:latest-ppc64le
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}
image_templates:
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:{{ .Version }}-ppc64le
- name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest
image_templates:
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-amd64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-builder:latest-ppc64le
release:
github:
owner: open-telemetry
Expand All @@ -37,3 +118,28 @@ 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

12 changes: 12 additions & 0 deletions cmd/builder/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM golang:alpine

WORKDIR /build

# Copy default builder config and ocb binary into the container
COPY builder-config.yaml /build/builder-config.yaml
COPY --chmod=755 ocb /build/ocb

ENTRYPOINT [ "./ocb"]
# default arguments to use provided builder config file from documentation;
# replace if using a different file location or file name
CMD [ "--config", "builder-config.yaml" ]
13 changes: 13 additions & 0 deletions cmd/builder/builder-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
dist:
name: otelcol-dev
description: Basic OTel Collector distribution for Developers
output_path: ./otelcol-dev
otelcol_version: 0.109.0
exporters:
- gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.109.0
# NOTE: Prior to v0.86.0 use the `loggingexporter` instead of `debugexporter`.
- gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.109.0
processors:
- gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.109.0
receivers:
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.109.0

0 comments on commit df835c9

Please sign in to comment.