From e190383e5e0282871efdc2ae3973bbd57d367a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Paj=C4=85k?= Date: Thu, 13 Jul 2023 15:42:33 +0200 Subject: [PATCH] [chore] build images for PRs (#955) * [chore] build images for PRs * Add missing "on:" * Fix input type * Add license header * Do not fail fast * test: comment cache-from * Revert: test: comment cache-from * Comment featureflagservice build * Revert "[cartservice] Update OTel .NET to 1.5.1 (#957)" This reverts commit 814a4e9f767182124bb7bd7479307d814a50b1c6. --------- Co-authored-by: Austin Parker --- .github/workflows/build-images.yml | 133 ++++++++++++++++++ .github/workflows/checks.yml | 3 + .github/workflows/release.yml | 117 +-------------- CHANGELOG.md | 2 - src/cartservice/src/Dockerfile | 4 +- src/cartservice/src/cartservice.csproj | 10 +- .../tests/cartservice.tests.csproj | 4 +- 7 files changed, 149 insertions(+), 124 deletions(-) create mode 100644 .github/workflows/build-images.yml diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml new file mode 100644 index 0000000000..594f68e89f --- /dev/null +++ b/.github/workflows/build-images.yml @@ -0,0 +1,133 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 +on: + workflow_call: + inputs: + push: + description: Should the images be pushed + default: false + required: false + type: boolean + version: + description: The version used when tagging the image + default: dev + required: false + type: string + +jobs: + build_and_push_images: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + env: + RELEASE_VERSION: "${{ github.event.release.tag_name }}" + DOCKERHUB_REPO: "otel/demo" + GHCR_REPO: "ghcr.io/open-telemetry/demo" + + strategy: + fail-fast: false + matrix: + file_tag: + - file: ./src/adservice/Dockerfile + tag_suffix: adservice + context: ./ + - file: ./src/cartservice/src/Dockerfile + tag_suffix: cartservice + context: ./ + - file: ./src/checkoutservice/Dockerfile + tag_suffix: checkoutservice + context: ./ + - file: ./src/currencyservice/Dockerfile + tag_suffix: currencyservice + context: ./src/currencyservice + - file: ./src/emailservice/Dockerfile + tag_suffix: emailservice + context: ./src/emailservice + # TODO: https://github.com/open-telemetry/opentelemetry-demo/issues/956 + # - file: ./src/featureflagservice/Dockerfile + # tag_suffix: featureflagservice + # context: ./ + - file: ./src/frontend/Dockerfile + tag_suffix: frontend + context: ./ + - file: ./src/frontendproxy/Dockerfile + tag_suffix: frontendproxy + context: ./ + - file: ./src/loadgenerator/Dockerfile + tag_suffix: loadgenerator + context: ./ + - file: ./src/paymentservice/Dockerfile + tag_suffix: paymentservice + context: ./ + - file: ./src/productcatalogservice/Dockerfile + tag_suffix: productcatalogservice + context: ./ + - file: ./src/quoteservice/Dockerfile + tag_suffix: quoteservice + context: ./ + - file: ./src/shippingservice/Dockerfile + tag_suffix: shippingservice + context: ./ + - file: ./src/recommendationservice/Dockerfile + tag_suffix: recommendationservice + context: ./ + - file: ./src/kafka/Dockerfile + tag_suffix: kafka + context: ./ + - file: ./src/accountingservice/Dockerfile + tag_suffix: accountingservice + context: ./ + - file: ./src/frauddetectionservice/Dockerfile + tag_suffix: frauddetectionservice + context: ./ + - file: ./src/frontend/Dockerfile.cypress + tag_suffix: frontend-tests + context: ./ + - file: ./test/Dockerfile + tag_suffix: integrationTests + context: ./ + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + if: ${{ inputs.push }} + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + if: ${{ inputs.push }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + config-inline: | + [worker.oci] + max-parallelism = 2 + + - name: Matrix Build and push demo images + uses: docker/build-push-action@v3.3.0 + with: + context: ${{ matrix.file_tag.context }} + file: ${{ matrix.file_tag.file }} + platforms: linux/amd64,linux/arm64 + push: ${{ inputs.push }} + tags: | + ${{ env.DOCKERHUB_REPO }}:${{ inputs.version }}-${{matrix.file_tag.tag_suffix }} + ${{ env.GHCR_REPO }}:${{ inputs.version }}-${{ matrix.file_tag.tag_suffix }} + cache-from: type=gha + cache-to: type=gha diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 4fa249f22e..e116c776b6 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -7,6 +7,9 @@ on: branches: [ main ] jobs: + build_images: + uses: ./.github/workflows/build-images.yml + markdownlint: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d2b4491b2..6045c5444b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,116 +8,7 @@ on: jobs: build_and_push_images: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - env: - RELEASE_VERSION: "${{ github.event.release.tag_name }}" - DOCKERHUB_REPO: "otel/demo" - GHCR_REPO: "ghcr.io/open-telemetry/demo" - - strategy: - matrix: - file_tag: - - file: ./src/adservice/Dockerfile - tag_suffix: adservice - context: ./ - - file: ./src/cartservice/src/Dockerfile - tag_suffix: cartservice - context: ./ - - file: ./src/checkoutservice/Dockerfile - tag_suffix: checkoutservice - context: ./ - - file: ./src/currencyservice/Dockerfile - tag_suffix: currencyservice - context: ./src/currencyservice - - file: ./src/emailservice/Dockerfile - tag_suffix: emailservice - context: ./src/emailservice - - file: ./src/featureflagservice/Dockerfile - tag_suffix: featureflagservice - context: ./ - - file: ./src/frontend/Dockerfile - tag_suffix: frontend - context: ./ - - file: ./src/frontendproxy/Dockerfile - tag_suffix: frontendproxy - context: ./ - - file: ./src/loadgenerator/Dockerfile - tag_suffix: loadgenerator - context: ./ - - file: ./src/paymentservice/Dockerfile - tag_suffix: paymentservice - context: ./ - - file: ./src/productcatalogservice/Dockerfile - tag_suffix: productcatalogservice - context: ./ - - file: ./src/quoteservice/Dockerfile - tag_suffix: quoteservice - context: ./ - - file: ./src/shippingservice/Dockerfile - tag_suffix: shippingservice - context: ./ - - file: ./src/recommendationservice/Dockerfile - tag_suffix: recommendationservice - context: ./ - - file: ./src/kafka/Dockerfile - tag_suffix: kafka - context: ./ - - file: ./src/accountingservice/Dockerfile - tag_suffix: accountingservice - context: ./ - - file: ./src/frauddetectionservice/Dockerfile - tag_suffix: frauddetectionservice - context: ./ - - file: ./src/frontend/Dockerfile.cypress - tag_suffix: frontend-tests - context: ./ - - file: ./test/Dockerfile - tag_suffix: integrationTests - context: ./ - - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Log in to the Container registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - if: github.event_name != 'pull_request' - - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - if: github.event_name != 'pull_request' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - config-inline: | - [worker.oci] - max-parallelism = 2 - - - name: Matrix Build and push demo images - uses: docker/build-push-action@v3.3.0 - with: - context: ${{ matrix.file_tag.context }} - file: ${{ matrix.file_tag.file }} - platforms: linux/amd64,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: | - ${{ env.DOCKERHUB_REPO }}:${{ env.RELEASE_VERSION || 'pr' }}-${{matrix.file_tag.tag_suffix }} - ${{ env.GHCR_REPO }}:${{ env.RELEASE_VERSION || 'pr' }}-${{ matrix.file_tag.tag_suffix }} - cache-from: type=gha - cache-to: type=gha + uses: ./.github/workflows/build-images.yml + with: + push: true + version: ${{ github.event.release.tag_name }}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bff3f20c3..1fb98ba6d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,8 +45,6 @@ release. ([#935](https://github.com/open-telemetry/opentelemetry-demo/pull/935)) * [cartservice] update service to .NET 7 ([#942](https://github.com/open-telemetry/opentelemetry-demo/pull/942)) -* [cartservice] update .NET package to 1.5.1 release - ([#935](https://github.com/open-telemetry/opentelemetry-demo/pull/957)) * Introduce minimal mode to run demo ([#872](https://github.com/open-telemetry/opentelemetry-demo/pull/872)) * [frontendproxy]Envoy expose a route for the collector to route frontend spans diff --git a/src/cartservice/src/Dockerfile b/src/cartservice/src/Dockerfile index 9f2a3eecb5..a711986268 100644 --- a/src/cartservice/src/Dockerfile +++ b/src/cartservice/src/Dockerfile @@ -15,7 +15,7 @@ # limitations under the License. # https://mcr.microsoft.com/v2/dotnet/sdk/tags/list -FROM mcr.microsoft.com/dotnet/sdk:7.0.305 AS builder +FROM mcr.microsoft.com/dotnet/sdk:7.0.304 AS builder WORKDIR /usr/src/app/ @@ -31,7 +31,7 @@ RUN \ # ----------------------------------------------------------------------------- # https://mcr.microsoft.com/v2/dotnet/runtime-deps/tags/list -FROM mcr.microsoft.com/dotnet/runtime-deps:7.0.8-alpine3.18 +FROM mcr.microsoft.com/dotnet/runtime-deps:7.0.7-alpine3.17 WORKDIR /usr/src/app/ COPY --from=builder /cartservice/ ./ diff --git a/src/cartservice/src/cartservice.csproj b/src/cartservice/src/cartservice.csproj index 3a3906f5e1..2f6c8c7f5e 100644 --- a/src/cartservice/src/cartservice.csproj +++ b/src/cartservice/src/cartservice.csproj @@ -5,11 +5,11 @@ - - - - - + + + + + diff --git a/src/cartservice/tests/cartservice.tests.csproj b/src/cartservice/tests/cartservice.tests.csproj index 830ae8381a..7cc3a6f3e3 100644 --- a/src/cartservice/tests/cartservice.tests.csproj +++ b/src/cartservice/tests/cartservice.tests.csproj @@ -5,8 +5,8 @@ - - + +