Fertige Container-Images zur Entwicklung

Support

Bei Fragen oder Unklarheiten hilft der Support weiter.

Installation

Datenverzeichnis anlegen

Es wird ein Datenverzeichnis auf dem Host benötigt, in dem die Quelltext von ct-Bot und ct-Sim sowie die Einstellungen des Eclipse-Workspaces aufbewahrt werden. Im Folgenden wird dafür ein Unterverzeichnis ctbot-data angelegt und verwendet. Dort werden auch die Start-Skripte abgelegt, so dass der lokale Pfad zu diesem Datenverzeichnis jeweils einfach . ist.

mkdir ctbot-data && cd ctbot-data
Tip

Hat man eigenen Änderungen am Code vorgenommen, sollte man das Datenverzeichnis (hier ctbot-data) in sein Backup einschließen. Die komplette Installation inkl. IDE und Toolchains hingegen liegt im Container-Image und kann jederzeit wieder (im Ursprungszustand) heruntergeladen werden.

Eclipse-Entwicklungsumgebung

wget https://github.com/tsandmann/ctbot-container/raw/master/run_eclipse.sh
chmod +x run_eclipse.sh
./run_eclipse.sh PATH_TO_DATADIR [VERSION]
# ./run_eclipse.sh .

Als VERSION kann explizit eine Eclipse-Version angegben werden wie beispielsweise 2023-09 oder auch latest, um die neueste (geladene) Version zu starten:

./run_eclipse.sh . latest
Note

Die Größe dieses Images beträgt ca. 1,6 GB.

Tip

Wurde Eclipse (oder die Eclipse-Einstellungen) “kaputtgespielt”, kann die ganze Umgebung problemlos wieder auf die Ausgangswerte zurückgesetzt werden, siehe Eclipse-Workspace bereinigen.

Eclipse-Entwicklungsumgebung inkl. Raspberry-Pi-Toolchain

wget https://github.com/tsandmann/ctbot-container/raw/master/run_eclipse-rpi.sh
chmod +x run_eclipse-rpi.sh
./run_eclipse-rpi.sh PATH_TO_DATADIR [VERSION]
# ./run_eclipse-rpi.sh .
Note

Diese Variante wird nur benötigt, wenn der ct-Bot eine Raspberry-Pi-Erweiterung hat. Durch die zusätzliche Toolchain für den Raspberry Pi ist das Image ca. 2,7 GB groß.

Standalone ct-Sim

Tip

Die ct-Sim-Images sind nützlich, falls nur der ct-Sim benötigt wird (z.B. wenn die Tools für die ct-Bot-Programmierung eh schon vorhanden sind), die Installation einer kompatiblen Java-Laufzeitumgebung aber vermieden werden soll oder nicht möglich ist. Die Größe dieser Images beträgt knapp 750 MB.

Release-Version

wget https://github.com/tsandmann/ctbot-container/raw/master/run_ctsim.sh
chmod +x run_ctsim.sh
./run_ctsim.sh PATH_TO_DATADIR [VERSION]
# ./run_ctsim.sh .

Als VERSION kann explizit eine ct-Sim-Version angegben werden wie beispielsweise 2.29.2 oder auch latest, um die neueste (geladene) Version zu starten:

./run_ctsim.sh . latest

Entwicklungsversion

wget https://github.com/tsandmann/ctbot-container/raw/master/run_ctsim-dev.sh
chmod +x run_ctsim-dev.sh
./run_ctsim-dev.sh PATH_TO_DATADIR
# ./run_ctsim-dev.sh .

Verwendung

Ins Datenverzeichnis wechseln

cd ctbot-data

Eclipse-Entwicklungsumgebung starten

./run_eclipse.sh PATH_TO_DATADIR [VERSION]
# ./run_eclipse.sh .

oder

./run_eclipse-rpi.sh PATH_TO_DATADIR [VERSION]
# ./run_eclipse-rpi.sh .

Als VERSION kann explizit eine Eclipse-Version angegben werden wie beispielsweise 2023-09 oder auch latest, um die neueste (geladene) Version zu starten:

./run_eclipse.sh . latest

Übertragen der Firmware auf einen realen ct-Bot

Um die Firmware auf einen realen ct-Bot über USB übertragen zu können, muss der Programmieradapter im Container verfügbar gemacht werden. Hierzu muss ein weiterer Parameter angegeben werden, der den Pfad zum Adapter enthält. Der Pfad ist dabei der Teil, der unter Übertragen der Firmware auf den ct-Bot hinter -P angegeben ist:

  • z.B. für Bootloader oder mySmartUSB: ./run_eclipse.sh . latest --device=/dev/ttyUSB0
Note

Da ein weiterer Parameter übergeben wird, muss die Version des Images (oder latest) immer explizit mit angegeben werden.

Eclipse-Workspace bereinigen

Wurde Eclipse (oder die Eclipse-Einstellungen) "kaputtgespielt", kann die ganze Umgebung wieder auf die Ausgangswerte zurückgesetzt werden (im Normalbetrieb nicht erforderlich):

Warning

Alle eigenen Eclipse-Einstellungen werden dabei gelöscht! Änderungen am Sourcecode der Projekte bleiben natürlich erhalten.

rm -rf .metadata

Standalone ct-Sim starten

./run_ctsim.sh PATH_TO_DATADIR [VERSION]
# ./run_ctsim.sh .

Als VERSION kann explizit eine ct-Sim-Version angegben werden wie beispielsweise 2.29.2 oder auch latest, um die neueste (geladene) Version zu starten:

./run_ctsim.sh . latest

Weitere Features für Fortgeschrittene

Eigene Parameter

Hängt man an das Start-Skript weitere Parameter an, werden diese direkt an den run-Aufruf des Containers weitergereicht. So lassen sich z.B. weitere Verzeichnisse in den Container mounten, Programmier- bzw. USB-2-Bot-Adapter im Container verfügbar machen oder Ports forwarden. Dabei muss die Version des Images immer explizit mit angeben werden.

Beispiele:

  • USB-2-Bot-Adapter verwenden: ./run_eclipse.sh . latest --device=/dev/ttyUSB0
  • ct-Sim-Port forwarden: ./run_eclipse.sh . latest -p 10001:10001

Benutzer im Container

Im Container wird der Benutzer developer mit der UID 1000 verwendet, das Passwort ist auf ct-bot gesetzt. Der Benutzer ist Mitglied der Gruppen dialout und sudo.

Persistente Container

Die Start-Skripte starten die Container mit der Option --rm, so dass sie nach dem Beenden automatisch entfernt werden. Somit erhält man bei jedem Start ein "frisches" System, Änderungen gelten nur für die Laufzeit des Containers. Entfernt man die --rm-Option im Start-Skript, erhält man einen persistenten Container, in man Änderungen auch in das Image committen kann. Dabei bietet es sich an, mit --name dem Container einen Namen zuzuweisen. Für weitere Informationen siehe Podman-Dokumentation bzw. Docker-Dokumentation.

Container-Images aktualisieren

podman pull IMAGE_REPO:VERSION
# podman pull docker.io/tsandmann/ctbot-eclipse:2023-09

oder

docker pull IMAGE_REPO:VERSION
# docker pull docker.io/tsandmann/ctbot-eclipse:2023-09

Um die neueste verfügbare Version zu laden:

podman pull IMAGE_REPO:latest
# podman pull docker.io/tsandmann/ctbot-eclipse:latest

oder

docker pull IMAGE_REPO:latest
# docker pull docker.io/tsandmann/ctbot-eclipse:latest

Alte Container-Images aufräumen

podman image prune

oder

docker image prune

Container-Images bauen

git clone https://github.com/tsandmann/ctbot-container.git
cd ctbot-container

./build_eclipse.sh VERSION 
# ./build_eclipse.sh 2023-09

./build_eclipse-rpi.sh VERSION
# ./build_eclipse-rpi.sh 2023-09

./build_ctsim.sh VERSION
# ./build_ctsim.sh 2.29.2

Quellen


License: CC BY-SA 4.0
Autor: Timo Sandmann | Stand: 15.10.2023