From 2a2d4ae2f844b2c5dbb61a5d566a9a9fadeb19aa Mon Sep 17 00:00:00 2001 From: Nikita Salnikov-Tarnovski Date: Wed, 24 Mar 2021 13:20:40 +0200 Subject: [PATCH] Publish windows images for smoke tests backends (#2621) * Build and push Windows Docker images for fake-backend and collector * Run on main branch only * Update smoke-tests/fake-backend/build.gradle Co-authored-by: Trask Stalnaker * Fix comment Co-authored-by: Trask Stalnaker --- .../build-smoke-dist-fakebackend.yaml | 43 +++++++++- smoke-tests/fake-backend/build.gradle | 82 ++++++++++++++++--- .../src/docker/backend/windows.dockerfile | 3 + .../src/docker/collector/windows.dockerfile | 4 + 4 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 smoke-tests/fake-backend/src/docker/backend/windows.dockerfile create mode 100644 smoke-tests/fake-backend/src/docker/collector/windows.dockerfile diff --git a/.github/workflows/build-smoke-dist-fakebackend.yaml b/.github/workflows/build-smoke-dist-fakebackend.yaml index fd9c3a0c11..e9b6826f95 100644 --- a/.github/workflows/build-smoke-dist-fakebackend.yaml +++ b/.github/workflows/build-smoke-dist-fakebackend.yaml @@ -5,11 +5,11 @@ on: paths: - 'smoke-tests/fake-backend/**' - '.github/workflows/build-smoke-dist-fakebackend.yaml' - branches: 'main' + branches: ['main'] workflow_dispatch: jobs: - publish: + publishLinux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -32,5 +32,42 @@ jobs: - name: Build Docker Image run: | - ./gradlew jib -Djib.httpTimeout=120000 -Djib.console=plain + TAG="$(date '+%Y%m%d').$GITHUB_RUN_ID" + echo "Using extra tag $TAG" + ./gradlew jib -Djib.httpTimeout=120000 -Djib.console=plain -PextraTag=$TAG + working-directory: smoke-tests/fake-backend + + publishWindows: + runs-on: windows-latest + defaults: + run: + shell: bash + steps: + - name: Support longpaths + run: git config --system core.longpaths true + + - uses: actions/checkout@v2 + + - name: Set up JDK 11 for running Gradle + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Cache gradle dependencies + uses: burrunan/gradle-cache-action@v1.10 + with: + job-id: fakebackend-smoke + + - name: Login to GitHub Package Registry + uses: azure/docker-login@v1 + with: + login-server: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_TOKEN }} + + - name: Build Docker Image + run: | + TAG="$(date '+%Y%m%d').$GITHUB_RUN_ID" + echo "Using extra tag $TAG" + ./gradlew dockerPush -PextraTag=$TAG working-directory: smoke-tests/fake-backend diff --git a/smoke-tests/fake-backend/build.gradle b/smoke-tests/fake-backend/build.gradle index a324ead4b4..1e3aeddfa8 100644 --- a/smoke-tests/fake-backend/build.gradle +++ b/smoke-tests/fake-backend/build.gradle @@ -1,6 +1,12 @@ +import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage +import com.bmuschko.gradle.docker.tasks.image.DockerPushImage + plugins { id 'java' id 'com.google.cloud.tools.jib' version '2.5.0' + id "com.bmuschko.docker-remote-api" version "6.7.0" + id 'com.github.johnrengelman.shadow' version '6.1.0' + id "de.undercouch.download" version "4.1.1" } group = 'io.opentelemetry' @@ -8,18 +14,10 @@ version = '0.0.1-SNAPSHOT' repositories { mavenCentral() - - // this is only needed for the working against unreleased otel-java snapshots - maven { - url "https://oss.jfrog.org/artifactory/oss-snapshot-local" - content { - includeGroup "io.opentelemetry" - } - } } compileJava { - options.release = 11 + options.release.set(11) } dependencies { @@ -28,7 +26,71 @@ dependencies { implementation("org.slf4j:slf4j-simple:1.7.30") } +shadowJar { + manifest { + attributes 'Main-Class': 'io.opentelemetry.smoketest.fakebackend.FakeBackendMain' + } +} + +ext { + extraTag = findProperty("extraTag") ?: new Date().format("yyyyMMdd.HHmmSS") +} + jib { from.image = "gcr.io/distroless/java-debian10:11" - to.image = "ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-${new Date().format("yyyyMMdd.HHmmSS")}" + to.image = "ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-$extraTag" +} + + +//windows containers are built manually since jib does not support windows containers yet +def backendDockerBuildDir = new File(project.buildDir, "docker-backend") + +task windowsBackendImagePrepare(type: Copy) { + dependsOn(shadowJar) + into(backendDockerBuildDir) + from("src/docker/backend") + from(shadowJar.outputs) { + rename { _ -> "fake-backend.jar" } + } +} + +task windowsBackendImageBuild(type: DockerBuildImage) { + dependsOn(windowsBackendImagePrepare) + inputDir = backendDockerBuildDir + + it.images.add "ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-windows-$extraTag" + it.dockerFile = new File(backendDockerBuildDir, "windows.dockerfile") +} + +def collectorDockerBuildDir = new File(project.buildDir, "docker-collector") + +task windowsCollectorBinaryDownload(type: Download) { + doFirst { + collectorDockerBuildDir.mkdirs() + } + + src("https://github.com/open-telemetry/opentelemetry-collector/releases/latest/download/otelcol_windows_amd64.exe") + dest(collectorDockerBuildDir) +} + +task windowsCollectorImagePrepare(type: Copy) { + dependsOn(windowsCollectorBinaryDownload) + into(collectorDockerBuildDir) + from("src/docker/collector") +} + +task windowsCollectorImageBuild(type: DockerBuildImage) { + dependsOn(windowsCollectorImagePrepare) + inputDir = collectorDockerBuildDir + + it.images.add "ghcr.io/open-telemetry/java-test-containers:collector-windows-$extraTag" + it.dockerFile = new File(collectorDockerBuildDir, "windows.dockerfile") +} + +tasks.create("dockerPush", DockerPushImage) { + group = "publishing" + description = "Push all Docker images for the test backend" + dependsOn(windowsBackendImageBuild, windowsCollectorImageBuild) + images.set(["ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-windows-$extraTag", + "ghcr.io/open-telemetry/java-test-containers:collector-windows-$extraTag"]) } diff --git a/smoke-tests/fake-backend/src/docker/backend/windows.dockerfile b/smoke-tests/fake-backend/src/docker/backend/windows.dockerfile new file mode 100644 index 0000000000..46e8207c97 --- /dev/null +++ b/smoke-tests/fake-backend/src/docker/backend/windows.dockerfile @@ -0,0 +1,3 @@ +FROM winamd64/openjdk:11.0.9.1-jdk-windowsservercore-1809 +COPY fake-backend.jar /fake-backend.jar +CMD ["java", "-jar", "/fake-backend.jar"] diff --git a/smoke-tests/fake-backend/src/docker/collector/windows.dockerfile b/smoke-tests/fake-backend/src/docker/collector/windows.dockerfile new file mode 100644 index 0000000000..dc2ad5855e --- /dev/null +++ b/smoke-tests/fake-backend/src/docker/collector/windows.dockerfile @@ -0,0 +1,4 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2019 +COPY otelcol_windows_amd64.exe /otelcol_windows_amd64.exe +ENV NO_WINDOWS_SERVICE=1 +ENTRYPOINT /otelcol_windows_amd64.exe