diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..bb0ebaa --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,19 @@ +# .github/release.yml + +changelog: + categories: + - title: Breaking changes + labels: + - breaking-change + - title: Enhancements + labels: + - enhancement + - title: Bug fixes + labels: + - bug + - title: Maintenance + labels: + - maintenance + - title: Documentation + labels: + - documentation \ No newline at end of file diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 0000000..8bafdc5 --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,18 @@ +# Maintainers Guide + +This guide is intended for *maintainers* — anybody with commit access to the tetra-workspace-image repo. + +We use [github flow](https://docs.github.com/en/get-started/quickstart/github-flow) for managing the kasm-dof-workspace repo. + +## Pull Requests + +All pull requests must be tagged with a GitHub label + +## Release Workflow + +1. finish merging all PR's for upcoming release into main +2. update docker-compose.yml to point to upcoming release (i.e., semver tag) +3. create/push semver tag (subsequently triggering build from tags +4. wait for build from tag to complete +5. publish upcoming release + diff --git a/README.md b/README.md index 7a35405..3c80142 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ This repo provides an Immutable-Infrastructure-as-Code (IIaC) workspace based on - [Arduino Pico](https://github.com/earlephilhower/arduino-pico) 3.3.0 - [Arduino ESP32](https://github.com/espressif/arduino-esp32) 2.0.9 - [KiCAD](https://www.kicad.org/) 7.0.5 - - [FreeCAD](https://www.freecad.org/) 0.19 - - [PrusaSlicer](https://www.prusa3d.com/page/prusaslicer_424/) 2.5.1 + - [FreeCAD](https://www.freecad.org/) 0.20.2 + - [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) 2.6.0 ## How to Use this Repo diff --git a/docker-compose.yml b/docker-compose.yml index 9fe3d9e..9f3d7b8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,10 @@ services: target: /home/kasm-user devices: - "/dev/ttyACM0" + - "/dev/ttyUSB0" + device_cgroup_rules: + - "c 188:* rmw" + privileged: true security_opt: - seccomp=unconfined ... diff --git a/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partab b/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partab deleted file mode 100644 index c38e5aa..0000000 Binary files a/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partab and /dev/null differ diff --git a/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partaa b/install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partaa similarity index 79% rename from install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partaa rename to install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partaa index 7ce27a9..e4dbf2a 100644 Binary files a/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.partaa and b/install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partaa differ diff --git a/install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partab b/install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partab new file mode 100644 index 0000000..e14ec0b Binary files /dev/null and b/install_files/PrusaSlicer-2.6.0+linux-x64-GTK3-202306191220.tar.bz2.partab differ diff --git a/playbook.yaml b/playbook.yaml index ccb610d..7ce3558 100644 --- a/playbook.yaml +++ b/playbook.yaml @@ -247,19 +247,35 @@ tags: - install_oshw_tools + vars: + - prusaslicer_version: "2.6.0" + - prusaslicer_dir: "PrusaSlicer-{{ prusaslicer_version }}+linux-x64-GTK3-202306191220" + tasks: - name: Join parts of PrusaSlicer tarball - shell: cat /home/kasm-default-profile/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2.parta* > /home/kasm-default-profile/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2 + shell: cat /home/kasm-default-profile/install_files/{{ prusaslicer_dir }}.tar.bz2.parta* > /home/kasm-default-profile/install_files/{{ prusaslicer_dir }}.tar.bz2 - name: Extract PrusaSlicer for 64-bit Linux to /opt unarchive: - src: /home/kasm-default-profile/install_files/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201.tar.bz2 + src: /home/kasm-default-profile/install_files/{{ prusaslicer_dir }}.tar.bz2 dest: /opt remote_src: yes + creates: /opt/{{ prusaslicer_dir }}/bin/prusa-slicer + - name: Create symlink for prusa-slicer in /usr/local/bin + shell: ln -srv /opt/{{ prusaslicer_dir }}/bin/prusa-slicer /usr/local/bin/prusa-slicer - name: Create local application folder for PrusaSlicer shell: mkdir -p /home/kasm-default-profile/.local/share/applications/ - name: Configure PrusaSlicer desktop shortcut - shell: echo "[Desktop Entry]\nName=PrusaSlicer\nGenericName=PrusaSlicer\nExec=/opt/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201/bin/prusa-slicer\nIcon=/opt/PrusaSlicer-2.5.2+linux-x64-GTK3-202303231201/resources/icons/PrusaSlicer.png\nTerminal=false\nType=Application\nStartupNotify=false\nCategories=Application;Development;" > /home/kasm-default-profile/.local/share/applications/prusaslicer.desktop - + shell: echo "[Desktop Entry]\nName=PrusaSlicer\nGenericName=PrusaSlicer\nExec=/usr/local/bin/prusa-slicer\nIcon=/opt/{{ prusaslicer_dir }}/resources/icons/PrusaSlicer.png\nTerminal=false\nType=Application\nStartupNotify=false\nCategories=Application;Development;" > /home/kasm-default-profile/.local/share/applications/prusaslicer.desktop + - name: Get prusa-slicer version + shell: prusa-slicer --help | grep PrusaSlicer- | awk '{ print $1 '} + register: installed_prusaslicer_version + - name: Display prusa-slicer version + debug: + msg: "prusa-slicer = {{ installed_prusaslicer_version.stdout }}" + - name: Test prusa-slicer version + fail: + msg: "prusa-slicer Error: Expected {{ prusaslicer_dir }} | Found {{ installed_prusaslicer_version.stdout }}" + when: installed_prusaslicer_version.stdout != prusaslicer_dir - # install NodeJs @@ -590,11 +606,52 @@ - install_oshw_tools + vars: + freecad_version: "0.20.2" + freecad_release_date: "2022-12-27" + tasks: - - name: Apt install FreeCAD + - name: Install kmod with apt apt: - name: freecad + name: kmod update_cache: yes + - name: add universe for installing FUSE 2.x # as per https://github.com/AppImage/AppImageKit/wiki/FUSE#install-fuse + shell: add-apt-repository universe + - name: Install FUSE 2.x with apt # as per https://github.com/AppImage/AppImageKit/wiki/FUSE#install-fuse and https://docs.appimage.org/user-guide/troubleshooting/fuse.html#setting-up-fuse-2-x-alongside-of-fuse-3-x-on-recent-ubuntu-22-04-debian-and-their-derivatives + apt: + name: libfuse2 + update_cache: yes + - name: Download FreeCAD {{ freecad_version }} source tarball + shell: wget https://github.com/FreeCAD/FreeCAD/archive/refs/tags/{{ freecad_version }}.tar.gz -O /home/kasm-default-profile/install_files/freecad-{{ freecad_version }}.tar.gz + - name: Download FreeCAD {{ freecad_version }} AppImage + shell: wget https://github.com/FreeCAD/FreeCAD/releases/download/{{ freecad_version }}/FreeCAD_{{ freecad_version }}-{{ freecad_release_date }}-conda-Linux-x86_64-py310.AppImage -O /home/kasm-default-profile/install_files/FreeCAD_{{ freecad_version }}-{{ freecad_release_date }}-conda-Linux-x86_64-py310.AppImage + - name: Unarchive FreeCAD {{ freecad_version }} source tarball + unarchive: + src: /home/kasm-default-profile/install_files/freecad-{{ freecad_version }}.tar.gz + dest: /home/kasm-default-profile/install_files + remote_src: yes + creates: /home/kasm-default-profile/install_files/FreeCAD-{{ freecad_version }}/LICENSE + - name: Create FreeCAD folder in /opt + shell: mkdir -p /opt/FreeCAD + - name: Copy FreeCAD icon to FreeCAD directory + copy: + src: /home/kasm-default-profile/install_files/FreeCAD-{{ freecad_version }}/src/Gui/Icons/freecad-icon-16.png + dest: /opt/FreeCAD + remote_src: yes + - name: Install FreeCAD {{ freecad_version }} + copy: + src: /home/kasm-default-profile/install_files/FreeCAD_{{ freecad_version }}-{{ freecad_release_date }}-conda-Linux-x86_64-py310.AppImage + dest: /opt/FreeCAD/FreeCAD_{{ freecad_version }}-{{ freecad_release_date }}-conda-Linux-x86_64-py310.AppImage + remote_src: yes + owner: root + group: root + mode: '0755' + - name: Create symlink for FreeCAD AppImage in /usr/local/bin + shell: ln -srv /opt/FreeCAD/FreeCAD_{{ freecad_version }}-{{ freecad_release_date }}-conda-Linux-x86_64-py310.AppImage /usr/local/bin/freecad + - name: Create local application folder for FreeCAD + shell: mkdir -p /home/kasm-default-profile/.local/share/applications/ + - name: Configure FreeCAD desktop shortcut + shell: echo "[Desktop Entry]\nName=FreeCAD\nGenericName=FreeCAD\nExec=/usr/local/bin/freecad\nIcon=/opt/FreeCAD/freecad-icon-16.png\nTerminal=false\nType=Application\nStartupNotify=false\nCategories=Application;Development;" > /home/kasm-default-profile/.local/share/applications/freecad.desktop - # install Python packages with pip