summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-06 16:16:10 +0200
committerGitHub <noreply@github.com>2021-05-06 16:16:10 +0200
commit375f329d6b276f802aafc14ce90520e807398d6e (patch)
tree69f1a0edf7223e42e143e2d1d094c6eaaad0c400
parente1d892bcbaa7e8361c150f684ca6a0dc5e036a87 (diff)
parentd4eb8ccd4f5d93d9e858b9c3ed6ff48763e68820 (diff)
chore: Prepare for OpenDC 2.0 release (v2)
This pull request performs several preparations for the official release of OpenDC 2.0. With this pull request, we focus on the deployment of OpenDC to DockerHub and Maven Central. * Add workflow for creating releases on Github and publishing to Maven Central * Add workflow for publishing images on DockerHub * Add support for runtime variables in frontend Docker image * Add support for building Dokka documentation
-rw-r--r--.dockerignore2
-rw-r--r--.github/workflows/publish.yml48
-rw-r--r--.github/workflows/release.yml47
-rw-r--r--Dockerfile8
-rw-r--r--build.gradle.kts2
-rw-r--r--buildSrc/settings.gradle.kts2
-rw-r--r--buildSrc/src/main/kotlin/experiment-conventions.gradle.kts2
-rw-r--r--buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts44
-rw-r--r--buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts23
-rw-r--r--buildSrc/src/main/kotlin/publishing-conventions.gradle.kts107
-rw-r--r--docker-compose.override.yml5
-rw-r--r--docker-compose.prod.yml5
-rw-r--r--docker-compose.yml6
-rw-r--r--gradle.properties3
-rw-r--r--opendc-compute/opendc-compute-api/build.gradle.kts2
-rw-r--r--opendc-compute/opendc-compute-service/build.gradle.kts10
-rw-r--r--opendc-compute/opendc-compute-simulator/build.gradle.kts14
-rw-r--r--opendc-experiments/opendc-experiments-capelin/build.gradle.kts17
-rw-r--r--opendc-experiments/opendc-experiments-energy21/build.gradle.kts18
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/build.gradle.kts13
-rw-r--r--opendc-format/build.gradle.kts10
-rw-r--r--opendc-harness/opendc-harness-api/build.gradle.kts2
-rw-r--r--opendc-harness/opendc-harness-cli/build.gradle.kts6
-rw-r--r--opendc-harness/opendc-harness-engine/build.gradle.kts4
-rw-r--r--opendc-harness/opendc-harness-junit5/build.gradle.kts4
-rw-r--r--opendc-serverless/opendc-serverless-api/build.gradle.kts2
-rw-r--r--opendc-serverless/opendc-serverless-service/build.gradle.kts10
-rw-r--r--opendc-serverless/opendc-serverless-simulator/build.gradle.kts8
-rw-r--r--opendc-simulator/opendc-simulator-compute/build.gradle.kts8
-rw-r--r--opendc-simulator/opendc-simulator-core/build.gradle.kts2
-rw-r--r--opendc-simulator/opendc-simulator-failures/build.gradle.kts2
-rw-r--r--opendc-simulator/opendc-simulator-resources/build.gradle.kts8
-rw-r--r--opendc-telemetry/opendc-telemetry-api/build.gradle.kts2
-rw-r--r--opendc-telemetry/opendc-telemetry-sdk/build.gradle.kts4
-rw-r--r--opendc-utils/build.gradle.kts4
-rw-r--r--opendc-web/opendc-web-api/.dockerignore8
-rw-r--r--opendc-web/opendc-web-api/.gitlab-ci.yml26
-rw-r--r--opendc-web/opendc-web-runner/build.gradle.kts16
-rw-r--r--opendc-web/opendc-web-ui/.dockerignore7
-rw-r--r--opendc-web/opendc-web-ui/.travis.yml9
-rw-r--r--opendc-web/opendc-web-ui/Dockerfile17
-rw-r--r--opendc-web/opendc-web-ui/public/index.html9
-rwxr-xr-xopendc-web/opendc-web-ui/scripts/envsubst-html.sh19
-rw-r--r--opendc-web/opendc-web-ui/src/api/routes/token-signin.js2
-rw-r--r--opendc-web/opendc-web-ui/src/api/socket.js2
-rw-r--r--opendc-web/opendc-web-ui/src/containers/auth/Login.js6
-rw-r--r--opendc-web/opendc-web-ui/src/index.js5
-rw-r--r--opendc-workflow/opendc-workflow-api/build.gradle.kts5
-rw-r--r--opendc-workflow/opendc-workflow-service/build.gradle.kts18
-rw-r--r--settings.gradle.kts2
50 files changed, 418 insertions, 187 deletions
diff --git a/.dockerignore b/.dockerignore
index c4627e72..e4d96f71 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,5 @@
+Dockerfile
+
.git
.idea/
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 00000000..4c74bb36
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,48 @@
+name: Publish Docker image
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ push-simulator:
+ name: Push Simulator
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Push to Docker Hub
+ uses: docker/build-push-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ repository: atlargeresearch/opendc
+ tag_with_ref: true
+ push-api:
+ name: Push API
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Push to Docker Hub
+ uses: docker/build-push-action@v1
+ with:
+ context: opendc-web/opendc-web-api
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ repository: atlargeresearch/opendc-web-api
+ tag_with_ref: true
+ push-ui:
+ name: Push UI
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Push to Docker Hub
+ uses: docker/build-push-action@v1
+ with:
+ context: opendc-web/opendc-web-ui
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ repository: atlargeresearch/opendc-web-ui
+ tag_with_ref: true
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..d9cd6c97
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,47 @@
+name: Release
+
+on:
+ push:
+ tags: ['v*']
+
+jobs:
+ build:
+ name: Build OpenDC
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 15 ]
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Validate Gradle wrapper
+ uses: gradle/wrapper-validation-action@v1
+ - name: Set up JDK
+ uses: actions/setup-java@v1
+ with:
+ java-version: ${{ matrix.java }}
+ - name: Grant execute permission for gradlew
+ run: chmod +x gradlew
+ - uses: actions/cache@v1
+ with:
+ path: ~/.gradle/caches
+ key: ${{ runner.os }}-${{ matrix.java }}-gradle-${{ hashFiles('**/*.gradle*') }}
+ restore-keys: |
+ ${{ runner.os }}-${{ matrix.java }}-gradle-
+ - name: Build with Gradle
+ run: ./gradlew :assembleDist
+ - name: Publish with Gradle
+ run: ./gradlew publish
+ env:
+ ORG_GRADLE_PROJECT_signingKeyId: F8134F9C
+ ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_PRIVATE_KEY }}
+ ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.PASSPHRASE }}
+ ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
+ ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
+ - name: Create Release
+ uses: softprops/action-gh-release@v1
+ with:
+ prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-m') }}
+ files: build/distributions/*
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/Dockerfile b/Dockerfile
index d103788d..cc7649fa 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,9 +9,9 @@ RUN ./gradlew --version
# Build project
COPY ./ /app/
-RUN ./gradlew --no-daemon :opendc-web:opendc-web-runner:installDist
+RUN ./gradlew --no-daemon :installDist
FROM openjdk:15-slim
-COPY --from=0 /app/opendc-web/opendc-web-runner/build/install /app
-WORKDIR /app
-CMD opendc-web-runner/bin/opendc-web-runner
+COPY --from=0 /app/build/install /opt/
+WORKDIR /opt/opendc
+CMD bin/opendc-web-runner
diff --git a/build.gradle.kts b/build.gradle.kts
index a4d02854..791c6ca8 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -28,5 +28,5 @@ plugins {
allprojects {
group = "org.opendc"
- version = "2.0.0"
+ version = "2.0-rc1"
}
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts
index 5337ee96..c9f9ab38 100644
--- a/buildSrc/settings.gradle.kts
+++ b/buildSrc/settings.gradle.kts
@@ -1,6 +1,4 @@
/*
- * MIT License
- *
* Copyright (c) 2019 AtLarge Research
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
index 580f67cb..26780205 100644
--- a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
@@ -23,8 +23,8 @@ import gradle.kotlin.dsl.accessors._9bf86420fccbde1948375f641de89b70.sourceSets
*/
plugins {
- `java-library`
distribution
+ id("kotlin-conventions")
id("com.github.johnrengelman.shadow")
}
diff --git a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
new file mode 100644
index 00000000..7bab52fc
--- /dev/null
+++ b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+plugins {
+ `java-library`
+ kotlin("jvm")
+ id("org.jlleitschuh.gradle.ktlint")
+}
+
+/* Project configuration */
+repositories {
+ mavenCentral()
+}
+
+java {
+ sourceCompatibility = Versions.jvmTarget
+}
+
+tasks.withType<KotlinCompile>().configureEach {
+ kotlinOptions.jvmTarget = Versions.jvmTarget.toString()
+ kotlinOptions.useIR = true
+ kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
+}
diff --git a/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts
index 43b1d148..296d5967 100644
--- a/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts
@@ -1,7 +1,5 @@
/*
- * MIT License
- *
- * Copyright (c) 2019 atlarge-research
+ * Copyright (c) 2021 AtLarge Research
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -22,30 +20,17 @@
* SOFTWARE.
*/
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
plugins {
- `java-library`
- kotlin("jvm")
- id("org.jlleitschuh.gradle.ktlint")
+ id("kotlin-conventions")
+ id("publishing-conventions")
id("dokka-conventions")
}
/* Project configuration */
-repositories {
- mavenCentral()
-}
-
java {
- sourceCompatibility = Versions.jvmTarget
+ withSourcesJar()
}
kotlin {
explicitApi()
}
-
-tasks.withType<KotlinCompile>().configureEach {
- kotlinOptions.jvmTarget = Versions.jvmTarget.toString()
- kotlinOptions.useIR = true
- kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
-}
diff --git a/buildSrc/src/main/kotlin/publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/publishing-conventions.gradle.kts
new file mode 100644
index 00000000..76f54102
--- /dev/null
+++ b/buildSrc/src/main/kotlin/publishing-conventions.gradle.kts
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+import org.gradle.api.credentials.PasswordCredentials
+
+plugins {
+ `maven-publish`
+ signing
+ id("dokka-conventions")
+}
+
+val isSnapshot = project.version.toString().contains("SNAPSHOT")
+
+// Ensure project is built successfully before publishing it
+tasks.withType<PublishToMavenRepository>().configureEach {
+ dependsOn(tasks.build)
+}
+tasks.withType<PublishToMavenLocal>().configureEach {
+ dependsOn(tasks.build)
+}
+
+val javadocJar by tasks.registering(Jar::class) {
+ // Note that we publish the Dokka HTML artifacts as Javadoc
+ dependsOn(tasks.dokkaHtml)
+ archiveClassifier.set("javadoc")
+ from(tasks.dokkaHtml)
+}
+
+signing {
+ val signingKeyId: String? by project
+ val signingKey: String? by project
+ val signingPassword: String? by project
+
+ if (!signingKey.isNullOrBlank()) {
+ if (signingKeyId?.isNotBlank() == true) {
+ useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
+ } else {
+ useInMemoryPgpKeys(signingKey, signingPassword)
+ }
+ }
+
+ sign(publishing.publications)
+}
+
+publishing {
+ publications {
+ create<MavenPublication>("maven") {
+ from(components["java"])
+ artifact(javadocJar)
+
+ pom {
+ name.set(project.name)
+ description.set("Open-source platform for datacenter simulation")
+ url.set("https://opendc.org")
+ licenses {
+ license {
+ name.set("MIT")
+ url.set("https://opensource.org/licenses/MIT")
+ }
+ }
+ developers {
+ developer {
+ id.set("AtLarge Research")
+ name.set("AtLarge Research Team")
+ organization.set("AtLarge Research")
+ organizationUrl.set("https://atlarge-research.com")
+ }
+ }
+ scm {
+ connection.set("scm:git:git://github.com/atlarge-research/opendc.git")
+ developerConnection.set("scm:git:git://github.com/atlarge-research/opendc.git")
+ url.set("https://github.com/atlarge-research/opendc")
+ }
+ }
+ }
+ }
+
+ repositories {
+ maven {
+ val releasesRepoUrl = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
+ val snapshotsRepoUrl = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
+
+ name = "ossrh"
+ url = if (isSnapshot) snapshotsRepoUrl else releasesRepoUrl
+ credentials(PasswordCredentials::class)
+ }
+ }
+}
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
index e48f4dff..172cc4cd 100644
--- a/docker-compose.override.yml
+++ b/docker-compose.override.yml
@@ -3,11 +3,10 @@ version: "3.8"
# Docker Compose overrides for development environments
services:
frontend:
- build:
- args:
- OPENDC_API_BASE_URL: http://localhost:8081
ports:
- "8080:80"
+ environment:
+ API_BASE_URL: http://localhost:8081
api:
ports:
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 3cefdcdd..96bb004e 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -3,11 +3,10 @@ version: "3.8"
# Docker Compose overrides for production environments
services:
frontend:
- build:
- args:
- OPENDC_API_BASE_URL: ${OPENDC_API_BASE_URL}
ports:
- "8080:80"
+ environment:
+ API_BASE_URL: ${OPENDC_API_BASE_URL}
api:
ports:
diff --git a/docker-compose.yml b/docker-compose.yml
index 982f2ed8..30c00996 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,13 +3,13 @@ services:
frontend:
build:
context: opendc-web/opendc-web-ui
- args:
- OPENDC_OAUTH_CLIENT_ID: ${OPENDC_OAUTH_CLIENT_ID}
- OPENDC_FRONTEND_SENTRY_DSN: ${OPENDC_FRONTEND_SENTRY_DSN}
image: frontend
restart: on-failure
networks:
- backend
+ environment:
+ OAUTH_CLIENT_ID: ${OPENDC_OAUTH_CLIENT_ID}
+ SENTRY_DSN: ${OPENDC_FRONTEND_SENTRY_DSN}
api:
build: opendc-web/opendc-web-api
diff --git a/gradle.properties b/gradle.properties
index 20f4b711..f9eabb4e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -20,6 +20,9 @@
# SOFTWARE.
#
+# For Dokka https://github.com/Kotlin/dokka/issues/1405
+org.gradle.jvmargs=-XX:MaxMetaspaceSize=1G
+
# Dependencies
kotlinx-coroutines.version = 1.4.3
diff --git a/opendc-compute/opendc-compute-api/build.gradle.kts b/opendc-compute/opendc-compute-api/build.gradle.kts
index 835dbbb8..880ee03d 100644
--- a/opendc-compute/opendc-compute-api/build.gradle.kts
+++ b/opendc-compute/opendc-compute-api/build.gradle.kts
@@ -28,5 +28,5 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
}
diff --git a/opendc-compute/opendc-compute-service/build.gradle.kts b/opendc-compute/opendc-compute-service/build.gradle.kts
index 909e2dcd..4e1be97a 100644
--- a/opendc-compute/opendc-compute-service/build.gradle.kts
+++ b/opendc-compute/opendc-compute-service/build.gradle.kts
@@ -30,12 +30,12 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-compute:opendc-compute-api"))
- api(project(":opendc-telemetry:opendc-telemetry-api"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcCompute.opendcComputeApi)
+ api(projects.opendcTelemetry.opendcTelemetryApi)
+ implementation(projects.opendcUtils)
implementation("io.github.microutils:kotlin-logging")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
}
diff --git a/opendc-compute/opendc-compute-simulator/build.gradle.kts b/opendc-compute/opendc-compute-simulator/build.gradle.kts
index 3bf8a114..0d0a57ad 100644
--- a/opendc-compute/opendc-compute-simulator/build.gradle.kts
+++ b/opendc-compute/opendc-compute-simulator/build.gradle.kts
@@ -30,14 +30,14 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-compute:opendc-compute-service"))
- api(project(":opendc-simulator:opendc-simulator-compute"))
- api(project(":opendc-simulator:opendc-simulator-failures"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcCompute.opendcComputeService)
+ api(projects.opendcSimulator.opendcSimulatorCompute)
+ api(projects.opendcSimulator.opendcSimulatorFailures)
+ implementation(projects.opendcUtils)
implementation("io.github.microutils:kotlin-logging")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testImplementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
+ testImplementation(projects.opendcTelemetry.opendcTelemetrySdk)
testRuntimeOnly("org.slf4j:slf4j-simple:${versions.slf4j}")
}
diff --git a/opendc-experiments/opendc-experiments-capelin/build.gradle.kts b/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
index 06a35c4b..ca4aa35f 100644
--- a/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
@@ -24,19 +24,18 @@ description = "Experiments for the Capelin work"
/* Build configuration */
plugins {
- `kotlin-library-conventions`
`experiment-conventions`
`testing-conventions`
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-engine"))
- implementation(project(":opendc-format"))
- implementation(project(":opendc-simulator:opendc-simulator-core"))
- implementation(project(":opendc-simulator:opendc-simulator-compute"))
- implementation(project(":opendc-simulator:opendc-simulator-failures"))
- implementation(project(":opendc-compute:opendc-compute-simulator"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessApi)
+ implementation(projects.opendcFormat)
+ implementation(projects.opendcSimulator.opendcSimulatorCore)
+ implementation(projects.opendcSimulator.opendcSimulatorCompute)
+ implementation(projects.opendcSimulator.opendcSimulatorFailures)
+ implementation(projects.opendcCompute.opendcComputeSimulator)
implementation("io.github.microutils:kotlin-logging")
implementation("com.typesafe:config")
@@ -49,5 +48,5 @@ dependencies {
exclude(group = "log4j")
}
- implementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
+ implementation(projects.opendcTelemetry.opendcTelemetrySdk)
}
diff --git a/opendc-experiments/opendc-experiments-energy21/build.gradle.kts b/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
index fc37fc1c..64e52f88 100644
--- a/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
@@ -24,20 +24,20 @@ description = "Experiments for the OpenDC Energy work"
/* Build configuration */
plugins {
- `kotlin-library-conventions`
`experiment-conventions`
`testing-conventions`
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-engine"))
- implementation(project(":opendc-format"))
- implementation(project(":opendc-simulator:opendc-simulator-core"))
- implementation(project(":opendc-simulator:opendc-simulator-compute"))
- implementation(project(":opendc-compute:opendc-compute-simulator"))
- implementation(project(":opendc-experiments:opendc-experiments-capelin"))
- implementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessApi)
+ implementation(projects.opendcFormat)
+ implementation(projects.opendcSimulator.opendcSimulatorCore)
+ implementation(projects.opendcSimulator.opendcSimulatorCompute)
+ implementation(projects.opendcSimulator.opendcSimulatorFailures)
+ implementation(projects.opendcCompute.opendcComputeSimulator)
+ implementation(projects.opendcExperiments.opendcExperimentsCapelin)
+ implementation(projects.opendcTelemetry.opendcTelemetrySdk)
implementation("io.github.microutils:kotlin-logging")
implementation("com.typesafe:config")
diff --git a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
index f19d6067..c35070fe 100644
--- a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
@@ -24,18 +24,17 @@ description = "Experiments for OpenDC Serverless"
/* Build configuration */
plugins {
- `kotlin-library-conventions`
`experiment-conventions`
`testing-conventions`
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-engine"))
- implementation(project(":opendc-serverless:opendc-serverless-service"))
- implementation(project(":opendc-serverless:opendc-serverless-simulator"))
- implementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
- implementation(project(":opendc-harness:opendc-harness-cli"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessApi)
+ implementation(projects.opendcSimulator.opendcSimulatorCore)
+ implementation(projects.opendcServerless.opendcServerlessService)
+ implementation(projects.opendcServerless.opendcServerlessSimulator)
+ implementation(projects.opendcTelemetry.opendcTelemetrySdk)
implementation("io.github.microutils:kotlin-logging")
implementation("com.typesafe:config")
diff --git a/opendc-format/build.gradle.kts b/opendc-format/build.gradle.kts
index ea43275a..cfe849e2 100644
--- a/opendc-format/build.gradle.kts
+++ b/opendc-format/build.gradle.kts
@@ -30,11 +30,11 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-compute:opendc-compute-api"))
- api(project(":opendc-workflow:opendc-workflow-api"))
- implementation(project(":opendc-simulator:opendc-simulator-compute"))
- implementation(project(":opendc-compute:opendc-compute-simulator"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcCompute.opendcComputeApi)
+ api(projects.opendcWorkflow.opendcWorkflowApi)
+ implementation(projects.opendcSimulator.opendcSimulatorCompute)
+ implementation(projects.opendcCompute.opendcComputeSimulator)
api("com.fasterxml.jackson.module:jackson-module-kotlin:${versions["jackson-module-kotlin"]}")
implementation("org.apache.parquet:parquet-avro:${versions["parquet-avro"]}")
diff --git a/opendc-harness/opendc-harness-api/build.gradle.kts b/opendc-harness/opendc-harness-api/build.gradle.kts
index 67b1ce11..02adae9a 100644
--- a/opendc-harness/opendc-harness-api/build.gradle.kts
+++ b/opendc-harness/opendc-harness-api/build.gradle.kts
@@ -28,7 +28,7 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("org.junit.platform:junit-platform-commons:${versions.junitPlatform}")
implementation("io.github.microutils:kotlin-logging")
diff --git a/opendc-harness/opendc-harness-cli/build.gradle.kts b/opendc-harness/opendc-harness-cli/build.gradle.kts
index 3e169e2a..b1f049de 100644
--- a/opendc-harness/opendc-harness-cli/build.gradle.kts
+++ b/opendc-harness/opendc-harness-cli/build.gradle.kts
@@ -24,7 +24,7 @@ description = "Command line interface of OpenDC Harness"
/* Build configuration */
plugins {
- `kotlin-library-conventions`
+ `kotlin-conventions`
application
}
@@ -34,8 +34,8 @@ application {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-engine"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessEngine)
implementation("io.github.microutils:kotlin-logging")
implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
diff --git a/opendc-harness/opendc-harness-engine/build.gradle.kts b/opendc-harness/opendc-harness-engine/build.gradle.kts
index bffafdac..6b59cbed 100644
--- a/opendc-harness/opendc-harness-engine/build.gradle.kts
+++ b/opendc-harness/opendc-harness-engine/build.gradle.kts
@@ -30,8 +30,8 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-api"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessApi)
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
implementation("io.github.classgraph:classgraph:${versions["classgraph"]}")
diff --git a/opendc-harness/opendc-harness-junit5/build.gradle.kts b/opendc-harness/opendc-harness-junit5/build.gradle.kts
index aa0b78d5..ba0f323f 100644
--- a/opendc-harness/opendc-harness-junit5/build.gradle.kts
+++ b/opendc-harness/opendc-harness-junit5/build.gradle.kts
@@ -28,8 +28,8 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-harness:opendc-harness-engine"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcHarness.opendcHarnessEngine)
implementation("io.github.microutils:kotlin-logging")
implementation("org.junit.platform:junit-platform-engine:${versions.junitPlatform}")
diff --git a/opendc-serverless/opendc-serverless-api/build.gradle.kts b/opendc-serverless/opendc-serverless-api/build.gradle.kts
index ec33ccce..0d9a8036 100644
--- a/opendc-serverless/opendc-serverless-api/build.gradle.kts
+++ b/opendc-serverless/opendc-serverless-api/build.gradle.kts
@@ -28,5 +28,5 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
}
diff --git a/opendc-serverless/opendc-serverless-service/build.gradle.kts b/opendc-serverless/opendc-serverless-service/build.gradle.kts
index f7e43aba..9aae05fc 100644
--- a/opendc-serverless/opendc-serverless-service/build.gradle.kts
+++ b/opendc-serverless/opendc-serverless-service/build.gradle.kts
@@ -30,12 +30,12 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-serverless:opendc-serverless-api"))
- api(project(":opendc-telemetry:opendc-telemetry-api"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcServerless.opendcServerlessApi)
+ api(projects.opendcTelemetry.opendcTelemetryApi)
+ implementation(projects.opendcUtils)
implementation("io.github.microutils:kotlin-logging")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
}
diff --git a/opendc-serverless/opendc-serverless-simulator/build.gradle.kts b/opendc-serverless/opendc-serverless-simulator/build.gradle.kts
index fe3dca41..08014fce 100644
--- a/opendc-serverless/opendc-serverless-simulator/build.gradle.kts
+++ b/opendc-serverless/opendc-serverless-simulator/build.gradle.kts
@@ -30,10 +30,10 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-serverless:opendc-serverless-service"))
- api(project(":opendc-simulator:opendc-simulator-compute"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcServerless.opendcServerlessService)
+ api(projects.opendcSimulator.opendcSimulatorCompute)
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
testRuntimeOnly("org.slf4j:slf4j-simple:${versions.slf4j}")
}
diff --git a/opendc-simulator/opendc-simulator-compute/build.gradle.kts b/opendc-simulator/opendc-simulator-compute/build.gradle.kts
index 4b0069e3..a7d396c7 100644
--- a/opendc-simulator/opendc-simulator-compute/build.gradle.kts
+++ b/opendc-simulator/opendc-simulator-compute/build.gradle.kts
@@ -30,9 +30,9 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-simulator:opendc-simulator-core"))
- api(project(":opendc-simulator:opendc-simulator-resources"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcSimulator.opendcSimulatorResources)
+ implementation(projects.opendcSimulator.opendcSimulatorCore)
+ implementation(projects.opendcUtils)
implementation("org.yaml:snakeyaml:1.28")
}
diff --git a/opendc-simulator/opendc-simulator-core/build.gradle.kts b/opendc-simulator/opendc-simulator-core/build.gradle.kts
index 3ba0d8c3..485bf5a6 100644
--- a/opendc-simulator/opendc-simulator-core/build.gradle.kts
+++ b/opendc-simulator/opendc-simulator-core/build.gradle.kts
@@ -28,6 +28,6 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
}
diff --git a/opendc-simulator/opendc-simulator-failures/build.gradle.kts b/opendc-simulator/opendc-simulator-failures/build.gradle.kts
index 0f6b2de2..6c266d23 100644
--- a/opendc-simulator/opendc-simulator-failures/build.gradle.kts
+++ b/opendc-simulator/opendc-simulator-failures/build.gradle.kts
@@ -27,6 +27,6 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
}
diff --git a/opendc-simulator/opendc-simulator-resources/build.gradle.kts b/opendc-simulator/opendc-simulator-resources/build.gradle.kts
index 3b0a197c..08e0bc78 100644
--- a/opendc-simulator/opendc-simulator-resources/build.gradle.kts
+++ b/opendc-simulator/opendc-simulator-resources/build.gradle.kts
@@ -30,10 +30,10 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
- implementation(project(":opendc-utils"))
+ implementation(projects.opendcUtils)
- jmhImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
+ jmhImplementation(projects.opendcSimulator.opendcSimulatorCore)
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
}
diff --git a/opendc-telemetry/opendc-telemetry-api/build.gradle.kts b/opendc-telemetry/opendc-telemetry-api/build.gradle.kts
index d9a4b4dd..927e9bc5 100644
--- a/opendc-telemetry/opendc-telemetry-api/build.gradle.kts
+++ b/opendc-telemetry/opendc-telemetry-api/build.gradle.kts
@@ -28,7 +28,7 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("io.opentelemetry:opentelemetry-api:${versions.otelApi}")
api("io.opentelemetry:opentelemetry-api-metrics:${versions.otelApiMetrics}")
}
diff --git a/opendc-telemetry/opendc-telemetry-sdk/build.gradle.kts b/opendc-telemetry/opendc-telemetry-sdk/build.gradle.kts
index 350a0f74..b845c1c9 100644
--- a/opendc-telemetry/opendc-telemetry-sdk/build.gradle.kts
+++ b/opendc-telemetry/opendc-telemetry-sdk/build.gradle.kts
@@ -28,8 +28,8 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-telemetry:opendc-telemetry-api"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcTelemetry.opendcTelemetryApi)
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
api("io.opentelemetry:opentelemetry-sdk:${versions.otelSdk}")
api("io.opentelemetry:opentelemetry-sdk-metrics:${versions.otelSdkMetrics}")
diff --git a/opendc-utils/build.gradle.kts b/opendc-utils/build.gradle.kts
index 48214665..9f712b89 100644
--- a/opendc-utils/build.gradle.kts
+++ b/opendc-utils/build.gradle.kts
@@ -29,8 +29,8 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
+ api(platform(projects.opendcPlatform))
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
}
diff --git a/opendc-web/opendc-web-api/.dockerignore b/opendc-web/opendc-web-api/.dockerignore
new file mode 100644
index 00000000..06d67de9
--- /dev/null
+++ b/opendc-web/opendc-web-api/.dockerignore
@@ -0,0 +1,8 @@
+Dockerfile
+
+.idea/
+**/out
+*.iml
+.idea_modules/
+
+.pytest_cache
diff --git a/opendc-web/opendc-web-api/.gitlab-ci.yml b/opendc-web/opendc-web-api/.gitlab-ci.yml
deleted file mode 100644
index d80ba836..00000000
--- a/opendc-web/opendc-web-api/.gitlab-ci.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-image: "python:3.8"
-
-variables:
- PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
-
-cache:
- paths:
- - .cache/pip
-
-stages:
- - static-analysis
- - test
-
-static-analysis:
- stage: static-analysis
- script:
- - python --version
- - pip install -r requirements.txt
- - pylint opendc
-
-test:
- stage: test
- script:
- - python --version
- - pip install -r requirements.txt
- - pytest opendc
diff --git a/opendc-web/opendc-web-runner/build.gradle.kts b/opendc-web/opendc-web-runner/build.gradle.kts
index fcc78a83..60a24b92 100644
--- a/opendc-web/opendc-web-runner/build.gradle.kts
+++ b/opendc-web/opendc-web-runner/build.gradle.kts
@@ -24,7 +24,7 @@ description = "Experiment runner for OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-conventions`
+ `kotlin-conventions`
application
}
@@ -33,12 +33,12 @@ application {
}
dependencies {
- api(platform(project(":opendc-platform")))
- implementation(project(":opendc-compute:opendc-compute-simulator"))
- implementation(project(":opendc-format"))
- implementation(project(":opendc-experiments:opendc-experiments-capelin"))
- implementation(project(":opendc-simulator:opendc-simulator-core"))
- implementation(project(":opendc-simulator:opendc-simulator-compute"))
+ api(platform(projects.opendcPlatform))
+ implementation(projects.opendcCompute.opendcComputeSimulator)
+ implementation(projects.opendcFormat)
+ implementation(projects.opendcExperiments.opendcExperimentsCapelin)
+ implementation(projects.opendcSimulator.opendcSimulatorCore)
+ implementation(projects.opendcTelemetry.opendcTelemetrySdk)
implementation("io.github.microutils:kotlin-logging")
implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
@@ -48,6 +48,4 @@ dependencies {
runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}")
runtimeOnly("org.apache.logging.log4j:log4j-1.2-api:${versions.log4j}")
-
- implementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
}
diff --git a/opendc-web/opendc-web-ui/.dockerignore b/opendc-web/opendc-web-ui/.dockerignore
index dd87e2d7..b91894f6 100644
--- a/opendc-web/opendc-web-ui/.dockerignore
+++ b/opendc-web/opendc-web-ui/.dockerignore
@@ -1,2 +1,9 @@
+Dockerfile
+
+.idea/
+**/out
+*.iml
+.idea_modules/
+
node_modules
build
diff --git a/opendc-web/opendc-web-ui/.travis.yml b/opendc-web/opendc-web-ui/.travis.yml
deleted file mode 100644
index c3554fe4..00000000
--- a/opendc-web/opendc-web-ui/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
- - 10
-cache:
- directories:
- - node_modules
-script:
- - npm run build
- - npm test
diff --git a/opendc-web/opendc-web-ui/Dockerfile b/opendc-web/opendc-web-ui/Dockerfile
index 20e16b08..7aa3a7bf 100644
--- a/opendc-web/opendc-web-ui/Dockerfile
+++ b/opendc-web/opendc-web-ui/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:14 AS staging
+FROM node:15 AS staging
MAINTAINER OpenDC Maintainers <opendc@atlarge-research.com>
# Copy package details
@@ -6,21 +6,16 @@ COPY ./package.json ./yarn.lock /opendc/
RUN cd /opendc && yarn
# Build frontend
-FROM node:14 AS build
-
-ARG OPENDC_OAUTH_CLIENT_ID
-ARG OPENDC_API_BASE_URL
-ARG OPENDC_FRONTEND_SENTRY_DSN
+FROM node:15 AS build
COPY ./ /opendc
COPY --from=staging /opendc/node_modules /opendc/node_modules
RUN cd /opendc/ \
- && export REACT_APP_OAUTH_CLIENT_ID=$OPENDC_OAUTH_CLIENT_ID \
- && export REACT_APP_API_BASE_URL=$OPENDC_API_BASE_URL \
- && export REACT_APP_SENTRY_DSN=$OPENDC_FRONTEND_SENTRY_DSN \
- && yarn build
+ && yarn build \
+ && mv build/index.html build/index.html.template
# Setup nginx to serve the frontend
-FROM nginx:1.19
+FROM nginx:1.20
+COPY --from=build /opendc/scripts/envsubst-html.sh /docker-entrypoint.d/00-envsubst-html.sh
COPY --from=build /opendc/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
diff --git a/opendc-web/opendc-web-ui/public/index.html b/opendc-web/opendc-web-ui/public/index.html
index 44a0d80f..da734797 100644
--- a/opendc-web/opendc-web-ui/public/index.html
+++ b/opendc-web/opendc-web-ui/public/index.html
@@ -33,7 +33,7 @@
<meta property="og:locale" content="en_US">
<!-- Google meta tags -->
- <meta name="google-signin-client_id" content="%REACT_APP_OAUTH_CLIENT_ID%">
+ <meta name="google-signin-client_id" content="$OAUTH_CLIENT_ID">
<meta name="google-site-verification" content="YIR4LkQTv6WmOdWv8MkeiUKni-0Yu3WHylLp4VvUMig"/>
<!-- CDN dependencies -->
@@ -52,6 +52,13 @@
gtag('js', new Date())
gtag('config', 'UA-84285092-3')
</script>
+ <script>
+ window.$$env = {
+ API_BASE_URL: "$API_BASE_URL",
+ OAUTH_CLIENT_ID: "$OAUTH_CLIENT_ID",
+ SENTRY_DSN: "$SENTRY_DSN",
+ };
+ </script>
</head>
<body>
<noscript>
diff --git a/opendc-web/opendc-web-ui/scripts/envsubst-html.sh b/opendc-web/opendc-web-ui/scripts/envsubst-html.sh
new file mode 100755
index 00000000..8ca12e8a
--- /dev/null
+++ b/opendc-web/opendc-web-ui/scripts/envsubst-html.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+# We can use simple version of envsubst execution as
+# envsubst < /usr/share/nginx/html/index.html.template > /usr/share/nginx/html/index.html
+# but it replaces everything that looks like environment variable substitution
+# so it affects `default values` approach.
+# we need to replace only provided environment variables.
+
+auto_envsubst() {
+ template_path="/usr/share/nginx/html/index.html.template"
+ output_path="/usr/share/nginx/html/index.html"
+ defined_envs=$(printf '${%s} ' $(env | cut -d= -f1))
+ envsubst "$defined_envs" < "$template_path" > "$output_path"
+}
+
+auto_envsubst
+exit 0
diff --git a/opendc-web/opendc-web-ui/src/api/routes/token-signin.js b/opendc-web/opendc-web-ui/src/api/routes/token-signin.js
index d6cff570..e40127f2 100644
--- a/opendc-web/opendc-web-ui/src/api/routes/token-signin.js
+++ b/opendc-web/opendc-web-ui/src/api/routes/token-signin.js
@@ -1,5 +1,5 @@
export function performTokenSignIn(token) {
- const apiUrl = process.env.REACT_APP_API_BASE_URL || ''
+ const apiUrl = window.$$env['API_BASE_URL'] || ''
return fetch(`${apiUrl}/tokensignin`, {
method: 'POST',
diff --git a/opendc-web/opendc-web-ui/src/api/socket.js b/opendc-web/opendc-web-ui/src/api/socket.js
index 1c432167..884c4152 100644
--- a/opendc-web/opendc-web-ui/src/api/socket.js
+++ b/opendc-web/opendc-web-ui/src/api/socket.js
@@ -7,7 +7,7 @@ const callbacks = {}
export function setupSocketConnection(onConnect) {
const apiUrl =
- process.env.REACT_APP_API_BASE_URL ||
+ window.$$env['API_BASE_URL'] ||
`${window.location.protocol}//${window.location.hostname}:${window.location.port}`
socket = io.connect(apiUrl)
diff --git a/opendc-web/opendc-web-ui/src/containers/auth/Login.js b/opendc-web/opendc-web-ui/src/containers/auth/Login.js
index 2f9726bf..9201c09a 100644
--- a/opendc-web/opendc-web-ui/src/containers/auth/Login.js
+++ b/opendc-web/opendc-web-ui/src/containers/auth/Login.js
@@ -32,15 +32,15 @@ class LoginContainer extends React.Component {
return (
<GoogleLogin
- clientId={process.env.REACT_APP_OAUTH_CLIENT_ID}
+ clientId={window.$$env['OAUTH_CLIENT_ID']}
onSuccess={this.onAuthResponse.bind(this)}
onFailure={this.onAuthFailure.bind(this)}
render={(renderProps) => (
<span onClick={renderProps.onClick} className="login btn btn-primary">
- <span className="fa fa-google" /> Login with Google
+ <span className="fa fa-google"/> Login with Google
</span>
)}
- ></GoogleLogin>
+ />
)
}
}
diff --git a/opendc-web/opendc-web-ui/src/index.js b/opendc-web/opendc-web-ui/src/index.js
index 3517147e..bddf0b0e 100644
--- a/opendc-web/opendc-web-ui/src/index.js
+++ b/opendc-web/opendc-web-ui/src/index.js
@@ -12,10 +12,11 @@ setupSocketConnection(() => {
const store = configureStore()
// Initialize Sentry if the user has configured a DSN
- if (process.env.REACT_APP_SENTRY_DSN) {
+ const dsn = window.$$env['SENTRY_DSN']
+ if (dsn) {
Sentry.init({
environment: process.env.NODE_ENV,
- dsn: process.env.REACT_APP_SENTRY_DSN,
+ dsn: dsn,
integrations: [new Integrations.BrowserTracing()],
tracesSampleRate: 0.1,
})
diff --git a/opendc-workflow/opendc-workflow-api/build.gradle.kts b/opendc-workflow/opendc-workflow-api/build.gradle.kts
index d3e67bee..45657d27 100644
--- a/opendc-workflow/opendc-workflow-api/build.gradle.kts
+++ b/opendc-workflow/opendc-workflow-api/build.gradle.kts
@@ -28,8 +28,7 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-compute:opendc-compute-api"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcCompute.opendcComputeApi)
implementation("io.github.microutils:kotlin-logging")
}
diff --git a/opendc-workflow/opendc-workflow-service/build.gradle.kts b/opendc-workflow/opendc-workflow-service/build.gradle.kts
index 040a9ff6..8cc66e4c 100644
--- a/opendc-workflow/opendc-workflow-service/build.gradle.kts
+++ b/opendc-workflow/opendc-workflow-service/build.gradle.kts
@@ -30,17 +30,17 @@ plugins {
}
dependencies {
- api(platform(project(":opendc-platform")))
- api(project(":opendc-workflow:opendc-workflow-api"))
- api(project(":opendc-compute:opendc-compute-api"))
- api(project(":opendc-telemetry:opendc-telemetry-api"))
- implementation(project(":opendc-utils"))
+ api(platform(projects.opendcPlatform))
+ api(projects.opendcWorkflow.opendcWorkflowApi)
+ api(projects.opendcCompute.opendcComputeApi)
+ api(projects.opendcTelemetry.opendcTelemetryApi)
+ implementation(projects.opendcUtils)
implementation("io.github.microutils:kotlin-logging")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testImplementation(project(":opendc-compute:opendc-compute-simulator"))
- testImplementation(project(":opendc-format"))
- testImplementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
+ testImplementation(projects.opendcSimulator.opendcSimulatorCore)
+ testImplementation(projects.opendcCompute.opendcComputeSimulator)
+ testImplementation(projects.opendcFormat)
+ testImplementation(projects.opendcTelemetry.opendcTelemetrySdk)
testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:${versions["jackson-module-kotlin"]}")
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 1372f0dc..844c98e7 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -48,3 +48,5 @@ include(":opendc-harness:opendc-harness-engine")
include(":opendc-harness:opendc-harness-cli")
include(":opendc-harness:opendc-harness-junit5")
include(":opendc-utils")
+
+enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")