[#1700] Remove sandbox (#2105)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-27 08:14:52 +02:00
committed by GitHub
parent d435c0a424
commit ebcb6a0b29
14 changed files with 14 additions and 283 deletions

View File

@@ -30,7 +30,7 @@ jobs:
- name: Create hawkBit container images - name: Create hawkBit container images
run: | run: |
mvn clean install -DskipTests && \ mvn clean install -DskipTests && \
cd hawkbit-runtime/docker/docker_build && \ cd docker/docker_build && \
chmod +x build_all_dev.sh && \ chmod +x build_all_dev.sh && \
./build_all_dev.sh && \ ./build_all_dev.sh && \
cd ../../.. cd ../../..

View File

@@ -107,7 +107,7 @@ There are clients outside of the Eclipse IoT eco system as well, e.g.:
# Getting Started # Getting Started
We are providing a [Spring Boot](https://projects.spring.io/spring-boot/) based We are providing a [Spring Boot](https://projects.spring.io/spring-boot/) based
reference [Update Server](hawkbit-runtime/hawkbit-update-server) including embedded H2 DB for test and evaluation reference [Update Server](hawkbit-monolith/hawkbit-update-server) including embedded H2 DB for test and evaluation
purposes. purposes.
Run with docker: Run with docker:
@@ -128,19 +128,19 @@ at [guide](https://www.eclipse.org/hawkbit/guides/runhawkbit/) -> _Configure Rab
# hawkBit (Spring boot) starters # hawkBit (Spring boot) starters
Next to the [Update Server](hawkbit-runtime/hawkbit-update-server) we are also providing a set Next to the [Update Server](hawkbit-monolith/hawkbit-update-server) we are also providing a set
of [Spring Boot Starters](hawkbit-starters) to quick start your of [Spring Boot Starters](hawkbit-starters) to quick start your
own [Spring Boot](https://projects.spring.io/spring-boot/) based application. own [Spring Boot](https://projects.spring.io/spring-boot/) based application.
# Clone, build and run hawkBit # Clone, build and run hawkBit
## Build and start hawkBit [Update Server](hawkbit-runtime/hawkbit-update-server) ## Build and start hawkBit [Update Server](hawkbit-monolith/hawkbit-update-server)
```bash ```bash
git clone https://github.com/eclipse-hawkbit/hawkbit.git git clone https://github.com/eclipse-hawkbit/hawkbit.git
cd hawkbit cd hawkbit
mvn clean install mvn clean install
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-#version#.jar java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar
``` ```
## Start hawkBit [Device Simulator](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-device-simulator) (optional) ## Start hawkBit [Device Simulator](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-device-simulator) (optional)

View File

@@ -8,7 +8,7 @@ with at least hawkbit-mgmt-server.
### Run ### Run
```bash ```bash
java -jar hawkbit-runtime/hawkbit-ddi-server/target/hawkbit-ddi-server-*-SNAPSHOT.jar java -jar hawkbit-ddi/hawkbit-ddi-server/target/hawkbit-ddi-server-0-SNAPSHOT.jar
``` ```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_ _(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -6,7 +6,7 @@ with at least hawkbit-mgmt-server.
### Run ### Run
```bash ```bash
java -jar hawkbit-runtime/hawkbit-dmf-server/target/hawkbit-dmf-server-*-SNAPSHOT.jar java -jar hawkbit-dmf/hawkbit-dmf-server/target/hawkbit-dmf-server-0-SNAPSHOT.jar
``` ```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_ _(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -8,7 +8,7 @@ started with at least one (or both) of the device interface servers - hawkbit-dd
### Run ### Run
```bash ```bash
java -jar hawkbit-runtime/hawkbit-mgmt-server/target/hawkbit-mgmt-server-*-SNAPSHOT.jar java -jar hawkbit-mgmt/hawkbit-mgmt-server/target/hawkbit-mgmt-server-0-SNAPSHOT.jar
``` ```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_ _(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -7,7 +7,7 @@ The hawkBit Update Server (Monolith) is a standalone spring-boot application wit
### Run ### Run
```bash ```bash
java -jar hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-*-SNAPSHOT.jar java -jar hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-*-SNAPSHOT.jar
``` ```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_ _(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -1,55 +0,0 @@
hawkBit Sandbox
===
## Try out the update server in our hawkBit sandbox
- try out Management API https://hawkbit.eclipseprojects.io/rest/v1/targets (don't forget basic auth header; username:
demo, passwd: demo)
- try out DDI API https://hawkbit.eclipseprojects.io/DEFAULT/controller/v1/MYTESTDEVICE
## Sandbox Setup
**1. File Structure**
Copy the files to the respective location on the VM.
```
/
+.sandbox
|
+-stacks
| +-sandbox
| | +-docker-compose-stack.yml
| +-proxy
| +-docker-compose-stack.yml
+- scripts
+-intialize-cronjobs.sh
+-sandbox-cleanup.sh
```
**2. Initialize Cronjobs**
Reset the Sandbox once a week with a cron-job and log its output.
```
$ sudo /.sandbox/scripts/initialize-cronjobs.sh
```
**3. Nginx Reverse Proxy**
Start the stack for the Nginx reverse proxy with Let's Encrypt support. Thanks to JrCs for providing the Docker
container
and instructions with
his [Docker-Letsencrypt-Nginx-Companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion).
```
$ docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml proxy
```
**4. hawkBit**
Start the hawkBit stack.
```
$ docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml hawkbit
```

View File

@@ -1,29 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
SCRIPT_DIR="/.sandbox/scripts"
LOGFILE_DIR="/.sandbox/logs"
# m h dom mon dow user command
SANDBOX_CLEANUP_JOB="0 0 * * 7 root ${SCRIPT_DIR}/sandbox-cleanup.sh >> ${LOGFILE_DIR}/\$(date +\%F)-hawkbit 2>&1"
LOGFILE_CLEANUP_JOB="0 0 1 * * root find ${LOGFILE_DIR}* -mtime +182 -exec rm {} \; >/dev/null 2>&1"
CRONTAB_FILE="/etc/crontab"
# Create directory for log files
mkdir -p ${LOGFILE_DIR}
echo "# Reset hawkBit stack once a week to delete all data" >> "${CRONTAB_FILE}"
echo "${SANDBOX_CLEANUP_JOB}" >> "${CRONTAB_FILE}"
echo "# Remove log files documenting reset, that are older than 6 months" >> "${CRONTAB_FILE}"
echo "${LOGFILE_CLEANUP_JOB}" >> "${CRONTAB_FILE}"

View File

@@ -1,52 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
STACK_NAME=hawkbit
echo "/------------------------------------------------------------------------------"
echo "| Data Clean Up START: $(date -u) "
echo "+------------------------------------------------------------------------------"
echo "|"
echo "+-- Remove Docker Stack:"
docker stack rm $STACK_NAME
sleep 15
echo "|"
echo "+-- Remove Docker Container:"
docker container prune --force
sleep 5
echo "|"
echo "+-- Remove Docker Volumes:"
docker volume prune --force
echo "|"
echo "+-- Verify Docker Container:"
docker container ls --all
echo "|"
echo "+-- Verify Docker Volumes:"
docker volume ls
echo "|"
echo "+-- Restart Docker Stack:"
docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml $STACK_NAME
echo "|"
# Value is based on trial and error
echo "+-- Wait for hawkBit to start (160s):"
sleep 160
echo "|"
# Device Simulator has to be restarted, since hawkBit takes too long to start
echo "+-- Restart Device Simulator:"
docker service update --force hawkbit_simulator
echo "|"
# Images used by a container are not deleted. Therefore, we run this after the stacks
# are started. Only unused images will be deleted.
echo "+-- Clean up Docker:"
docker system prune --force
echo "+------------------------------------------------------------------------------"
echo "| END: $(date -u) "
echo "\------------------------------------------------------------------------------"
echo ""

View File

@@ -1,61 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
volumes:
vhost:
challange:
certificates:
networks:
proxy:
driver: overlay
services:
# ---------------------
# nginx reverse proxy
# ---------------------
nginx:
image: "jwilder/nginx-proxy"
ports:
- 80:80
- 443:443
networks:
- proxy
volumes:
- certificates:/etc/nginx/certs:ro
- vhost:/etc/nginx/vhost.d
- challange:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
deploy:
replicas: 1
restart_policy:
condition: on-failure
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
# ---------------------
# lets encrypt nginx-proxy companion
# ---------------------
letsencrypt:
image: "jrcs/letsencrypt-nginx-proxy-companion"
networks:
- proxy
volumes:
- certificates:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
- vhost:/etc/nginx/vhost.d
- challange:/usr/share/nginx/html
deploy:
replicas: 1
restart_policy:
condition: on-failure

View File

@@ -1,72 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
volumes:
vhost:
challange:
networks:
proxy_proxy:
external: true
sandbox:
driver: overlay
services:
# ---------------------
# hawkBit service
# ---------------------
hawkbit:
image: "hawkbit/hawkbit-update-server:latest"
networks:
- proxy_proxy
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
- 'SPRING_PROFILES_ACTIVE=cloudsandbox'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'VIRTUAL_HOST=hawkbit.eclipseprojects.io'
- 'LETSENCRYPT_HOST=hawkbit.eclipseprojects.io'
# ---------------------
# hawkBit simulator
# ---------------------
simulator:
image: "hawkbit/hawkbit-device-simulator:latest"
networks:
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
- 'SPRING_RABBITMQ_VIRTUALHOST=/'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_PORT=5672'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management"
networks:
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
RABBITMQ_DEFAULT_VHOST: "/"

View File

@@ -93,7 +93,7 @@ $ cd hawkbit
$ mvn clean install -DskipTests $ mvn clean install -DskipTests
``` ```
### 2: Start hawkBit [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server) (Monolith) ### 2: Start hawkBit [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server) (Monolith)
```sh ```sh
$ java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar $ java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar

View File

@@ -6,7 +6,7 @@ weight: 33
hawkBit is able to run in a cluster with some constraints. This guide provides insights in the basic concepts and how to hawkBit is able to run in a cluster with some constraints. This guide provides insights in the basic concepts and how to
setup your own cluster. You can find additional information in setup your own cluster. You can find additional information in
the [hawkBit runtimes's README](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-runtime/hawkbit-update-server/README.md). the [hawkBit runtimes's README](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-monolith/hawkbit-update-server/README.md).
<!--more--> <!--more-->
## Big picture ## Big picture

View File

@@ -18,7 +18,7 @@ and no artifact storage.
This guide describes a target architecture that is more like one that you will expect in a production system. This guide describes a target architecture that is more like one that you will expect in a production system.
- hawkBit [Update Server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server). - hawkBit [Update Server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server).
- [MariaDB](https://mariadb.org) for the repository. - [MariaDB](https://mariadb.org) for the repository.
- [RabbitMQ](https://www.rabbitmq.com) for DMF communication. - [RabbitMQ](https://www.rabbitmq.com) for DMF communication.
- For testing and demonstration purposes we will also use: - For testing and demonstration purposes we will also use:
@@ -35,7 +35,7 @@ This guide describes a target architecture that is more like one that you will e
As mentioned you can create your own application with hawkBit inside or adapt the existing example app. The second As mentioned you can create your own application with hawkBit inside or adapt the existing example app. The second
option will be shown here. option will be shown here.
### Set MariaDB dependency to compile in the [update server POM](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-runtime/hawkbit-update-server/pom.xml) ### Set MariaDB dependency to compile in the [update server POM](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-monolith/hawkbit-update-server/pom.xml)
```xml ```xml
<dependency> <dependency>
@@ -96,7 +96,7 @@ hawkbit-example-mgmt-simulator-##VERSION##.jar --hawkbit.url=YOUR_HOST:PORT
### Compile & Run your _"production ready"_ app ### Compile & Run your _"production ready"_ app
see [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server) see [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server)
### Compile & Run example scenario [creation script](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-example-mgmt-simulator) (optional) ### Compile & Run example scenario [creation script](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-example-mgmt-simulator) (optional)