feat(controller): update instrumentation from older operator versions #119
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- 'main' | |
tags: | |
- '*.*.*' | |
paths-ignore: | |
- '*.md' | |
pull_request: | |
paths-ignore: | |
- '*.md' | |
workflow_dispatch: | |
jobs: | |
verify: | |
name: Build & Test | |
runs-on: ubuntu-latest | |
concurrency: | |
group: ci-concurrency-group-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ~1.22 | |
cache: true | |
- name: go version | |
run: | | |
go version | |
- name: build | |
run: | | |
make | |
- name: verify that generated code is up-to-date | |
run: | | |
# make (which we ran in the previous step) will implicitly also run the targets manifests & generate, which | |
# could potentially modify code that is under version control, if changes have been comitted that would have | |
# required updating manifests or generated code and these updates have not been done. | |
git diff --exit-code | |
- name: install Helm dependencies | |
# Note: this needs to happen before the lint step, since helm lint requires chart dependencies to be installed. | |
working-directory: helm-chart/dash0-operator | |
run: | | |
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts --force-update | |
helm dependency build | |
- name: lint | |
run: | | |
make lint | |
- name: install Helm unittest plugin | |
shell: bash | |
run: | | |
helm plugin install https://github.com/helm-unittest/helm-unittest.git | |
- name: test | |
run: | | |
make test | |
# Builds and potentially pushes all container images. For pushes to PRs/branches, we simply verify that the image | |
# build still works, the resulting image will not be pushed to any target registry. For pushes to the main branch, the | |
# images are tagged with "main-dev", but not with a version x.y.z. Finally, for pushes to a tag (or when a tag is | |
# created), the images are tagged with the version indicated by the tag respectively, and also with latest. That is: | |
# Creating a GitHub release (or creating a git tag via other means) will trigger building images tagged with x.y.z | |
# meant for production use. | |
build-and-push-images: | |
name: Build Images | |
runs-on: ubuntu-latest | |
needs: | |
- verify | |
concurrency: | |
group: ci-concurrency-group-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# Note: By default, changed-files will compare against the last non-merge commit on the target branch for pull | |
# request events, and the previous remote commit of the current branch for push events. | |
- name: compile list of relevant changed files for instrumentation and operator controller image build | |
id: changed-files | |
uses: tj-actions/changed-files@v44 | |
with: | |
files_yaml: | | |
instrumentation: | |
- .github/actions/build-image/** | |
- .github/workflows/ci.yaml | |
- images/instrumentation/** | |
operator_controller: | |
- .github/actions/build-image/** | |
- .github/workflows/ci.yaml | |
- go.mod | |
- go.sum | |
- api/** | |
- cmd/** | |
- internal/** | |
- name: show changed files | |
env: | |
INSTRUMENTATION_CHANGED_FILES_FLAG: ${{ steps.changed-files.outputs.instrumentation_any_changed }} | |
INSTRUMENTATION_CHANGED_FILES_LIST: ${{ steps.changed-files.outputs.instrumentation_all_changed_files }} | |
OPERATOR_CONTROLLER_CHANGED_FILES_FLAG: ${{ steps.changed-files.outputs.operator_controller_any_changed }} | |
OPERATOR_CONTROLLER_CHANGED_FILES_LIST: ${{ steps.changed-files.outputs.operator_controller_all_changed_files }} | |
run: | | |
echo "files for instrumentation image have changed: $INSTRUMENTATION_CHANGED_FILES_FLAG" | |
echo "changed files for instrumentation image: $INSTRUMENTATION_CHANGED_FILES_LIST" | |
echo "files for operator controller image have changed: $OPERATOR_CONTROLLER_CHANGED_FILES_FLAG" | |
echo "changed files for operator controller image: $OPERATOR_CONTROLLER_CHANGED_FILES_LIST" | |
- name: build instrumentation image | |
uses: ./.github/actions/build-image | |
if: steps.changed-files.outputs.instrumentation_any_changed == 'true' || contains(github.ref, 'refs/tags/') | |
with: | |
githubToken: ${{ secrets.GITHUB_TOKEN }} | |
imageName: instrumentation | |
imageTitle: Dash0 Instrumentation | |
imageDescription: contains Dash0 OpenTelemetry distributions for multiple runtimes | |
imageUrl: https://github.com/dash0hq/dash0-operator/tree/main/images/instrumentation | |
context: images/instrumentation | |
- name: build operator controller image | |
uses: ./.github/actions/build-image | |
if: steps.changed-files.outputs.operator_controller_any_changed == 'true' || contains(github.ref, 'refs/tags/') | |
with: | |
githubToken: ${{ secrets.GITHUB_TOKEN }} | |
imageName: operator-controller | |
imageTitle: Dash0 Kubernetes Operator Controller | |
imageDescription: the controller for the Dash0 Kubernetes operator | |
context: . | |
publish-helm-chart: | |
name: Publish Helm Chart | |
runs-on: ubuntu-latest | |
if: ${{ contains(github.ref, 'refs/tags/') }} | |
needs: | |
- build-and-push-images | |
concurrency: | |
group: ci-concurrency-group-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: publish helm chart | |
run: | | |
git config user.name "github-actions[bot]" | |
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
echo "publishing helm chart version ${{ github.ref_name }}" | |
helm-chart/bin/publish.sh ${{ github.ref_name }} |