Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

codespaces for exercises #70

Merged
merged 6 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .devcontainer/cmake-exercise/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "Jumpstart CMake exercise",
"image": "danger89/cmake:5.0",
"customizations": {
"vscode": {
"extensions": [
"llvm-vs-code-extensions.vscode-clangd",
"matepek.vscode-catch2-test-adapter",
"ms-vscode.cmake-tools",
"twxs.cmake"
],
"settings": {
"cmake.sourceDirectory": "${workspaceFolder}/topics/build_systems/code"
}
}
}
}
14 changes: 0 additions & 14 deletions .devcontainer/cmake/devcontainer.json

This file was deleted.

16 changes: 16 additions & 0 deletions .devcontainer/document-compilation/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "Jumpstart Document Compilation",
"image": "ghcr.io/langchr86/docmake@sha256:32d37fb9a637f0bd2b7860305a31e29ceb665f5f8f884b463a1da4d74cbf308d",
"customizations": {
"vscode": {
"extensions": [
"mathematic.vscode-pdf",
"llvm-vs-code-extensions.vscode-clangd",
"matepek.vscode-catch2-test-adapter",
"ms-vscode.cmake-tools",
"twxs.cmake"
]
}
},
"postStartCommand": "nohup bash -c 'Xvfb :99 &'"
}
2 changes: 2 additions & 0 deletions .github/workflows/cmake-exercise.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ jobs:
- name: configure and build
working-directory: topics/build_systems/code
run: |
rm CMakeLists.txt
mv CMakeLists_solution.txt CMakeLists.txt
mkdir build
cmake -S . -B build
cmake --build build
Expand Down
18 changes: 0 additions & 18 deletions .gitpod.yml

This file was deleted.

4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ Die generierten PDFs und der Code können als Artefakt des Releases heruntergela

Die benötigten Tools und Accounts um am Kurs teilzunehmen sind unter
[Vorbereitung](topics/admin/introduction.md#vorbereitung) aufgelistet.
Die dazugehörige Entwicklungsumgebung ist hier dokumentiert: [jumpstart-vm](https://github.com/scs/jumpstart-vm)
Als Entwicklungsumgebung wird meistens Github [Codespaces](topics/admin/codespaces.md) verwendet.
Alternativ existiert eine dedizierte Entwicklungs-VM,
die hier dokumentiert ist: [jumpstart-vm](https://github.com/scs/jumpstart-vm)


Aufnahmen
Expand Down
1 change: 1 addition & 0 deletions topics/admin/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include(js_document)

js_script(codespaces codespaces.md)
js_script(feedback feedback.md)
js_slides(introduction introduction.md)
42 changes: 42 additions & 0 deletions topics/admin/codespaces.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<#include meta/slides.md>

---
title: "Jumpstart - Codespaces"
---


Entwicklungsumgebungen in der Cloud
===================================

Wir verwenden Github Codespaces als schnelle und flexible Entwicklungs-Umgebung.
Diese bietet eine VM in der Cloud, auf welcher Visual Studio Code läuft
und automatisch einen [DevContainer](https://containers.dev/) startet.
Im `jumpstart-docs` Repo sind bereits diverse solcher DevContainer vorkonfiguriert.

Bei den Übungen kann man jeweils einen der gewünschten DevContainer starten.
Dies startet dann für den aktiven Github-User eine Instanz und verbindet sie.
Der schnellste Weg führt über folgenden Link:
[Create codespace for scs/jumpstart-docs](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=351816701&skip_quickstart=true),
kann aber auch manuell ausgelöst werden mit:

![codespaces_create](images/codespaces_create.png)

Im folgenden Screen kann die DevContainer Config ausgewählt werden:

![codespaces_configure](images/codespaces_configure.png)

Nun kann im aktiven Codespace direkt gearbeitet werden.


Wichtig
-------

Pro User hat man nur begrenzte Gratisstunden pro Monat verfügbar.
Deshalb die Codespaces immer stoppen, wenn momentan nicht benötigt:

![codespaces_stop](images/codespaces_stop.png)

Dabei bleiben alle Daten erhalten
und der Codespace kann z.B. am nächsten Tag erneut gestartet und verbunden werden.
Wenn gar nicht mehr benötigt kann er explizit gelöscht werden.
Ansonsten wird er nach einer bestimmten Stop-Dauer (default 30 Tage) automatisch gelöscht.
Binary file added topics/admin/images/codespaces_configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added topics/admin/images/codespaces_create.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added topics/admin/images/codespaces_stop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 0 additions & 6 deletions topics/admin/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,9 @@ Ablauf
Tools
-----

* vorbereitete *Ubuntu-VM* mit kompletter Entwicklungs-Umgebung
* kann auch *personalisiert* werden

\vspace{1cm}
### Vorbereitung

* [GitHub-Account](https://github.com/signup)
* [DockerHub-Account](https://hub.docker.com/signup)
* [Bitbucket-Account](https://bitbucket.org/) (inkl. 2-Faktor-Athentifizierung)
* Laptop (je nachdem zu zweit)
* Virtualbox installieren
* VM einrichten: [github.com/scs/jumpstart-vm](https://github.com/scs/jumpstart-vm)
2 changes: 1 addition & 1 deletion topics/build_systems/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ js_exercise(build_systems_exercise build_systems_exercise.md)
js_script(bitbucket_pipelines_exercise bitbucket_pipelines_exercise.md)

file(GLOB_RECURSE code RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "code/*")
list(FILTER code EXCLUDE REGEX "code/CMakeLists.txt")
list(FILTER code EXCLUDE REGEX "code/CMakeLists_solution.txt")
js_add_to_global_archive_file_list(${code})

if (JS_WITH_CODE)
Expand Down
11 changes: 9 additions & 2 deletions topics/build_systems/bitbucket_pipelines_exercise.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,18 @@ Dazu muss auch ein Workspace und ein Projekt definiert werden.
Als Workspace kann z.B. `<user>-privat` und als Projekt `Jumpstart` verwendet werden.
Das Repository kann z.B. `bitbucket-pipelines-exercise` genannt werden.

Damit einfach auf die Repos zugegriffen werden kann,
Für die folgenden Aufgaben müssen nicht alzu viele Dateien erstellt/editiert werden.
Dies kann direkt über das Web-UI von Bitbucket gemacht werden.


Repo lokal klonen (optional)
----------------------------

Falls das Repo lokal bearbeitet werden soll,
sollte man unter [bitbucket.org/account/settings/ssh-keys](https://bitbucket.org/account/settings/ssh-keys/)
seinen public Key registrieren.

Danach kann das neue Repository in der `jumpstart-vm` oder lokal geklont werden:
Danach kann das neue Repository geklont werden:

~~~
git clone https://<user>@bitbucket.org/<user>-privat/bitbucket-pipelines-exercise.git
Expand Down
6 changes: 2 additions & 4 deletions topics/build_systems/build_systems_exercise.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,8 @@ Der typische Workflow, um ein CMake-basiertes Projekt zu kompilieren, sieht folg
Aufgabe
-------

* Die Vorlage für die CMake-Konfiguration: `CMakeLists_exercise.txt` im entpackten `code`-Ordner
zu `CMakeLists.txt` umbenennen
und mit CLion dieses CMake-Projekt (`code`-Ordner) öffnen.
Dies sollte automatisch den CMake-Cache erzeugen.
* Mit CLion das vorbereitete CMake-Projekt (`code`-Ordner) öffnen.
Dadurch sollte das `CMakeLists.txt` im entpackten `code`-Ordner automatisch geladen und der CMake-Cache erzeugt werden.
* Das `CMakeLists.txt` so vervollständigen,
dass die Hauptapplikation gebaut werden kann.
Die Dokumentation zu folgenden Befehlen könnte helfen: `set`, `target_include_directories`, `add_executable`
Expand Down
21 changes: 0 additions & 21 deletions topics/build_systems/code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,4 @@ cmake_minimum_required(VERSION 3.5)
project(bit_fields)
set(BF_TARGET bit-fields)

# search all relevant files
file(GLOB_RECURSE BF_SRC_MAIN "src/main.c*")
file(GLOB_RECURSE BF_SRC_ALL "src/*.c*")
file(GLOB_RECURSE BF_TEST_ALL "test/*.c*")
list(REMOVE_ITEM BF_SRC_ALL ${BF_SRC_MAIN})

# internal library target
set(BF_TARGET_LIB ${BF_TARGET}-lib)
add_library(${BF_TARGET_LIB} STATIC ${BF_SRC_ALL})
target_include_directories(${BF_TARGET_LIB} PUBLIC "libs" "src")

# main app target
set(BF_TARGET_APP ${BF_TARGET}-app)
add_executable(${BF_TARGET_APP} ${BF_SRC_MAIN})
target_link_libraries(${BF_TARGET_APP} PRIVATE ${BF_TARGET_LIB})

# unit test target
set(BF_TARGET_TEST ${BF_TARGET}-test)
enable_testing()
add_executable(${BF_TARGET_TEST} ${BF_TEST_ALL})
add_test(unittest ${BF_TARGET_TEST})
target_link_libraries(${BF_TARGET_TEST} PRIVATE ${BF_TARGET_LIB})
7 changes: 0 additions & 7 deletions topics/build_systems/code/CMakeLists_exercise.txt

This file was deleted.

28 changes: 28 additions & 0 deletions topics/build_systems/code/CMakeLists_solution.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake_minimum_required(VERSION 3.5)

# project settings
project(bit_fields)
set(BF_TARGET bit-fields)

# search all relevant files
file(GLOB_RECURSE BF_SRC_MAIN "src/main.c*")
file(GLOB_RECURSE BF_SRC_ALL "src/*.c*")
file(GLOB_RECURSE BF_TEST_ALL "test/*.c*")
list(REMOVE_ITEM BF_SRC_ALL ${BF_SRC_MAIN})

# internal library target
set(BF_TARGET_LIB ${BF_TARGET}-lib)
add_library(${BF_TARGET_LIB} STATIC ${BF_SRC_ALL})
target_include_directories(${BF_TARGET_LIB} PUBLIC "libs" "src")

# main app target
set(BF_TARGET_APP ${BF_TARGET}-app)
add_executable(${BF_TARGET_APP} ${BF_SRC_MAIN})
target_link_libraries(${BF_TARGET_APP} PRIVATE ${BF_TARGET_LIB})

# unit test target
set(BF_TARGET_TEST ${BF_TARGET}-test)
enable_testing()
add_executable(${BF_TARGET_TEST} ${BF_TEST_ALL})
add_test(unittest ${BF_TARGET_TEST})
target_link_libraries(${BF_TARGET_TEST} PRIVATE ${BF_TARGET_LIB})
3 changes: 3 additions & 0 deletions topics/build_systems/slides/practice_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ Build-System-Aufbau

Es soll die Aufgabe `build_system_exercise.pdf` gelöst werden.

Am einfachsten direkt das Github Repo öffnen und dort ein "Jumpstart CMake exercise"
[Codespace starten](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=351816701&skip_quickstart=true)

Varianten:

* Verwendung eines anderen Meta-Build-System für C++
Expand Down
4 changes: 2 additions & 2 deletions topics/docker/slides/practice_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ Interactive Tutorials

Freier Playground: [play_with_docker_playground]

Wenn der Playground nicht geeignet ist,
kann die Docker-Installation in der *jumpstart-vm* verwendet werden.
Wenn der Playground nicht zuverlässig läuft,
kann in Github eine Codespaces-Instanz mit "Default project Configuration" verwendet werden.
9 changes: 8 additions & 1 deletion topics/docker/slides/practice_2.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ Kapseln einer Toolchain
Siehe: [unit-testing](https://github.com/langchr86/hostcontrold#unit-testing)
1. Zweites Image, welches mittels Multistage Build nur noch die Abhängigkeiten und die Applikation enthält.

### Bemerkungen
Am einfachsten direkt das Github Repo öffnen und dort ein "Default"
[Codespace starten](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=351816701&skip_quickstart=true)

Oder auf einem *Linux-Host* mit *Docker* klonen.


Wichtige Bemerkungen
--------------------

* Nicht in der existierenden Docker-Infrastruktur im Repo nachschauen
* Ubuntu 20.04 als Basis-Image verwenden
Expand Down
5 changes: 4 additions & 1 deletion topics/tools_and_varia/slides/practice_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,7 @@ Ansible

Interaktive Einführung in Ansible: [ansible_interactive_tutorial]

am einfachsten auf einem *Linux-Host* mit *Docker*
Am einfachsten direkt das Github Repo öffnen und dort ein
[Codespace starten](https://github.com/codespaces/new?hide_repo_select=true&ref=master&repo=103787360&skip_quickstart=true)

Oder auf einem *Linux-Host* mit *Docker* klonen.
Loading