Skip to content
Snippets Groups Projects
Commit b6b2efd9 authored by Sören Henning's avatar Sören Henning
Browse files

Merge branch '144-document-image-build' into 'theodolite-kotlin'

Add image build documentation

See merge request !116
parents a10e11de dab43a3b
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!116Add image build documentation,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
Pipeline #3012 passed
...@@ -8,7 +8,7 @@ For development: ...@@ -8,7 +8,7 @@ For development:
uvicorn main:app --reload uvicorn main:app --reload
``` ```
Build the docker image: ## Build the docker image:
```sh ```sh
docker build . -t theodolite-evaluator docker build . -t theodolite-evaluator
......
# theodolite-quarkus project # Theodolite-quarkus project
This project uses Quarkus, the Supersonic Subatomic Java Framework. This project uses Quarkus, the Supersonic Subatomic Java Framework.
...@@ -6,7 +6,8 @@ If you want to learn more about Quarkus, please visit its website: https://quark ...@@ -6,7 +6,8 @@ If you want to learn more about Quarkus, please visit its website: https://quark
## Running the application in dev mode ## Running the application in dev mode
You can run your application in dev mode that enables live coding using: You can run your application in dev mode using:
```shell script ```shell script
./gradlew quarkusDev ./gradlew quarkusDev
``` ```
...@@ -14,13 +15,16 @@ You can run your application in dev mode that enables live coding using: ...@@ -14,13 +15,16 @@ You can run your application in dev mode that enables live coding using:
## Packaging and running the application ## Packaging and running the application
The application can be packaged using: The application can be packaged using:
```shell script ```shell script
./gradlew build ./gradlew build
``` ```
It produces the `theodolite-quarkus-1.0.0-SNAPSHOT-runner.jar` file in the `/build` directory.
Be aware that it’s not an _über-jar_ as the dependencies are copied into the `build/lib` directory. It produces the `theodolite-quarkus-1.0.0-SNAPSHOT-runner.jar` file in the `/build` directory. Be aware that it’s not
an _über-jar_ as the dependencies are copied into the `build/lib` directory.
If you want to build an _über-jar_, execute the following command: If you want to build an _über-jar_, execute the following command:
```shell script ```shell script
./gradlew build -Dquarkus.package.type=uber-jar ./gradlew build -Dquarkus.package.type=uber-jar
``` ```
...@@ -30,11 +34,13 @@ The application is now runnable using `java -jar build/theodolite-quarkus-1.0.0- ...@@ -30,11 +34,13 @@ The application is now runnable using `java -jar build/theodolite-quarkus-1.0.0-
## Creating a native executable ## Creating a native executable
You can create a native executable using: You can create a native executable using:
```shell script ```shell script
./gradlew build -Dquarkus.package.type=native ./gradlew build -Dquarkus.package.type=native
``` ```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using: Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script ```shell script
./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true ./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true
``` ```
...@@ -44,20 +50,73 @@ You can then execute your native executable with: ...@@ -44,20 +50,73 @@ You can then execute your native executable with:
If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling. If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.
# RESTEasy JAX-RS ## Build docker images
For the jvm version use:
```shell script
./gradlew build
docker build -f src/main/docker/Dockerfile.jvm -t theodolite-quarkus-jvm .
```
For the native image version use:
```shell script
./gradlew build -Dquarkus.package.type=native
docker build -f src/main/docker/Dockerfile.native -t theodolite-quarkus-native .
```
## Execute docker images:
<p>A Hello World RESTEasy resource</p> Remember to set the environment variables first.
Guide: https://quarkus.io/guides/rest-json Jvm version:
## Build and afterwards run the application in Docker container ```shell script
docker run -i --rm theodolite-quarkus-jvm
```
Native image version:
```build_jvm.sh``` to build the jvm version ```shell script
docker run -i --rm theodolite-quarkus-native
```
```build_native.sh``` to build the native image graal version ## Environment variables
## Install Detekt Code analysis Plugin **Production:** (Docker-Container)
| Variables name | Default value |Usage |
| -----------------------------|:----------------------------------:| ------------:|
| `NAMESPACE` | `default` |Determines the namespace of the Theodolite will be executed in. Used in the KubernetesBenchmark|
| `THEODOLITE_EXECUTION` | `./config/BenchmarkExecution.yaml`|The complete path to the benchmarkExecution file. Used in the TheodoliteYamlExecutor. |
| `THEODOLITE_BENCHMARK_TYPE` | `./config/BenchmarkType.yaml` |The complete path to the benchmarkType file. Used in the TheodoliteYamlExecutor.|
| `THEODOLITE_APP_RESOURCES` | `./config` |The path under which the yamls for the resources for the subexperiments are found. Used in the KubernetesBenchmark|
| `MODE` | `yaml-executor` | Defines the mode of operation: either `yaml-executor` or `operator`|
**Development:** (local via Intellij)
When running Theodolite from within IntelliJ via
[Run Configurations](https://www.jetbrains.com/help/idea/work-with-gradle-tasks.html#gradle_run_config), set the *
Environment variables* field to:
```
NAMESPACE=default;THEODOLITE_BENCHMARK=./../../../../config/BenchmarkType.yaml;THEODOLITE_APP_RESOURCES=./../../../../config;THEODOLITE_EXECUTION=./../../../../config/BenchmarkExecution.yaml;MODE=operator
```
Alternative:
``` sh
export NAMESPACE=default
export THEODOLITE_BENCHMARK=./../../../../config/BenchmarkType.yaml
export THEODOLITE_APP_RESOURCES=./../../../../config
export THEODOLITE_EXECUTION=./../../../../config/BenchmarkExecution.yaml
export MODE=operator
./gradlew quarkusDev
```
#### Install Detekt Code analysis Plugin
Install https://plugins.jetbrains.com/plugin/10761-detekt Install https://plugins.jetbrains.com/plugin/10761-detekt
...@@ -66,11 +125,10 @@ Install https://plugins.jetbrains.com/plugin/10761-detekt ...@@ -66,11 +125,10 @@ Install https://plugins.jetbrains.com/plugin/10761-detekt
- Check Enable Detekt - Check Enable Detekt
- Specify your detekt configuration and baseline file (optional) - Specify your detekt configuration and baseline file (optional)
-> detekt issues will be annotated on-the-fly while coding -> detekt issues will be annotated on-the-fly while coding
**ingore Failures in build:** add **ingore Failures in build:** add
```ignoreFailures = true``` ```ignoreFailures = true```
to build.gradle detekt task to build.gradle detekt task
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment