build.gradle.kts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
  2. import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
  3. import java.time.LocalDateTime
  4. import java.time.format.DateTimeFormatter
  5. plugins {
  6. id("otel.java-conventions")
  7. id("com.bmuschko.docker-remote-api")
  8. id("com.github.johnrengelman.shadow")
  9. id("com.google.cloud.tools.jib")
  10. }
  11. dependencies {
  12. implementation("com.linecorp.armeria:armeria-grpc:1.28.4")
  13. implementation("io.opentelemetry.proto:opentelemetry-proto")
  14. runtimeOnly("org.slf4j:slf4j-simple")
  15. }
  16. val extraTag = findProperty("extraTag")
  17. ?: DateTimeFormatter.ofPattern("yyyyMMdd.HHmmSS").format(LocalDateTime.now())
  18. jib {
  19. from.image = "gcr.io/distroless/java-debian10:11"
  20. to.image = "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend:$extraTag"
  21. }
  22. // windows containers are built manually since jib does not support windows containers yet
  23. val backendDockerBuildDir = layout.buildDirectory.dir("docker-backend")
  24. tasks {
  25. withType<JavaCompile>().configureEach {
  26. with(options) {
  27. release.set(11)
  28. }
  29. }
  30. javadoc {
  31. isEnabled = false
  32. }
  33. shadowJar {
  34. manifest {
  35. attributes("Main-Class" to "io.opentelemetry.smoketest.fakebackend.FakeBackendMain")
  36. }
  37. }
  38. val windowsBackendImagePrepare by registering(Copy::class) {
  39. dependsOn(shadowJar)
  40. into(backendDockerBuildDir)
  41. from("src/docker/backend")
  42. from(shadowJar.get().outputs) {
  43. rename { "fake-backend.jar" }
  44. }
  45. }
  46. val windowsBackendImageBuild by registering(DockerBuildImage::class) {
  47. dependsOn(windowsBackendImagePrepare)
  48. inputDir.set(backendDockerBuildDir)
  49. images.add("ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend-windows:$extraTag")
  50. dockerFile.set(File(backendDockerBuildDir.get().asFile, "windows.dockerfile"))
  51. }
  52. val dockerPush by registering(DockerPushImage::class) {
  53. group = "publishing"
  54. description = "Push all Docker images for the test backend"
  55. dependsOn(windowsBackendImageBuild)
  56. images.add("ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend-windows:$extraTag")
  57. }
  58. }