From 2d111c34a742dfa7d93671b7c9386593328f10d5 Mon Sep 17 00:00:00 2001 From: maurice Date: Tue, 28 Oct 2025 12:14:28 +0100 Subject: [PATCH] New containers --- .gitea/workflows/other.yaml | 48 ++++++++++++++++++++++++++++++++ containers/android/Containerfile | 18 ++++++++++++ containers/android/env | 1 + containers/fedora/Containerfile | 2 +- containers/flutter/Containerfile | 11 ++++++++ containers/rider/Containerfile | 16 ++++++++--- containers/rider/env | 1 + devc.sh | 8 ++++++ 8 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 .gitea/workflows/other.yaml create mode 100644 containers/android/Containerfile create mode 100644 containers/android/env create mode 100644 containers/flutter/Containerfile create mode 100644 containers/rider/env diff --git a/.gitea/workflows/other.yaml b/.gitea/workflows/other.yaml new file mode 100644 index 0000000..129685a --- /dev/null +++ b/.gitea/workflows/other.yaml @@ -0,0 +1,48 @@ +name: Build optional dev containers +on: + workflow_dispatch: # This makes the workflow manually triggered + +jobs: + fedora-build: + runs-on: job-latest + steps: + - name: Clone repo + uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Registry + uses: docker/login-action@v3 + with: + registry: git.plabble.org + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Build and push Rider container + uses: docker/build-push-action@v5 + with: + context: ./containers/rider + file: ./containers/rider/Containerfile + push: true + tags: git.plabble.org/maurice/rider:${{ github.ref_name }} + build-args: TAG=${{ github.ref_name }} + outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true + + - name: Build and push Android Studio container + uses: docker/build-push-action@v5 + with: + context: ./containers/android + file: ./containers/android/Containerfile + push: true + tags: git.plabble.org/maurice/android:${{ github.ref_name }} + build-args: TAG=${{ github.ref_name }} + outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true + + - name: Build and push Flutter container + uses: docker/build-push-action@v5 + with: + context: ./containers/flutter + file: ./containers/flutter/Containerfile + push: true + tags: git.plabble.org/maurice/flutter:${{ github.ref_name }} + build-args: TAG=${{ github.ref_name }} + outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true \ No newline at end of file diff --git a/containers/android/Containerfile b/containers/android/Containerfile new file mode 100644 index 0000000..14b2431 --- /dev/null +++ b/containers/android/Containerfile @@ -0,0 +1,18 @@ +FROM git.plabble.org/maurice/dotnet:main +ARG studio_version="2025.1.4.8" +ARG download_uri="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/${studio_version}/android-studio-${studio_version}-linux.tar.gz" + +USER root +RUN dnf -y install libXext libXrender libXtst libX11 freetype freetype-devel mesa-libGLU +USER user + +RUN curl -Lo /tmp/studio.tar.gz "${download_uri}" && \ + mkdir /home/user/AndroidStudio && \ + mkdir /home/user/Android && \ + tar -zxf /tmp/studio.tar.gz -C /home/user/AndroidStudio && \ + rm /tmp/studio.tar.gz && \ + mv /home/user/AndroidStudio/android-studio*/* /home/user/AndroidStudio + +RUN echo 'alias studio="$HOME/AndroidStudio/bin/studio"' >> /home/user/.bashrc +RUN echo 'export ANDROID_HOME="$HOME/Android/Sdk"' >> /home/user/.bashrc +RUN echo 'export PATH="$ANDROID_HOME/platform-tools:$PATH"' >> /home/user/.bashrc \ No newline at end of file diff --git a/containers/android/env b/containers/android/env new file mode 100644 index 0000000..a82a63b --- /dev/null +++ b/containers/android/env @@ -0,0 +1 @@ +DEVC_COMMAND=/home/user/AndroidStudio/bin/studio \ No newline at end of file diff --git a/containers/fedora/Containerfile b/containers/fedora/Containerfile index 8950d67..f1efba5 100644 --- a/containers/fedora/Containerfile +++ b/containers/fedora/Containerfile @@ -5,7 +5,7 @@ RUN dnf update -y && \ dnf copr enable -y atim/lazygit && \ dnf -y install procps ping bash-completion glibc-langpack-en \ host-spawn dbus-launch \ - git pnpm helix + git pnpm helix zip # === setup user === RUN useradd -ms /bin/bash user && \ diff --git a/containers/flutter/Containerfile b/containers/flutter/Containerfile new file mode 100644 index 0000000..50ec34f --- /dev/null +++ b/containers/flutter/Containerfile @@ -0,0 +1,11 @@ +FROM git.plabble.org/maurice/android:main +ARG flutter_version="3.35.7-stable" +ARG download_uri="https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${flutter_version}.tar.xz" + +RUN mkdir /home/user/Flutter && \ + curl -Lo /tmp/flutter.tar.xz "${download_uri}" && \ + tar -xf /tmp/flutter.tar.xz -C /home/user/Flutter && \ + rm /tmp/flutter.tar.xz + +RUN echo 'export PATH="$HOME/Flutter/flutter/bin:$PATH"' >> /home/user/.bashrc +RUN echo 'export FLUTTER_ROOT="$HOME/Flutter/flutter"' >> /home/user/.bashrc \ No newline at end of file diff --git a/containers/rider/Containerfile b/containers/rider/Containerfile index f2dc114..3af1ef6 100644 --- a/containers/rider/Containerfile +++ b/containers/rider/Containerfile @@ -1,7 +1,15 @@ FROM git.plabble.org/maurice/dotnet:main - -ARG rider_version="2025.2.3" +ARG rider_version="2025.2.4" ARG download_uri="https://download.jetbrains.com/rider/JetBrains.Rider-${rider_version}.tar.gz" -RUN curl -o /tmp/rider.tar.gz ${download_uri} && \ - tar -zxf /tmp/rider.tar.gz -C /home/user/Rider \ No newline at end of file +USER root +RUN dnf -y install libXext libXrender libXtst libX11 freetype freetype-devel +USER user + +RUN curl -Lo /tmp/rider.tar.gz "${download_uri}" && \ + mkdir /home/user/Rider && \ + tar -zxf /tmp/rider.tar.gz -C /home/user/Rider && \ + rm /tmp/rider.tar.gz && \ + mv /home/user/Rider/JetBrains*/* /home/user/Rider + +RUN echo 'alias rider="$HOME/Rider/bin/rider"' >> /home/user/.bashrc \ No newline at end of file diff --git a/containers/rider/env b/containers/rider/env new file mode 100644 index 0000000..d58a67c --- /dev/null +++ b/containers/rider/env @@ -0,0 +1 @@ +DEVC_COMMAND=/home/user/Rider/bin/rider \ No newline at end of file diff --git a/devc.sh b/devc.sh index 12b5995..190d675 100755 --- a/devc.sh +++ b/devc.sh @@ -52,6 +52,10 @@ param_args() { case "$1" in -gpu) # Enable gpu acceleration. arg "--device /dev/dri" ;; + -kvm) # Enable KVM + arg "--device /dev/kvm" ;; + -usb) # Enable USB access + arg "--device /dev/bus/usb" ;; -host-spawn) # Enable spawning host commands from inside the container using host-spawn. arg "-v /run/user/$UID/bus:/tmp/bus" arg "-e HOST_HOME=$HOME" # Used to translate paths. @@ -85,6 +89,10 @@ else fi name="${image%:*}" +# check if ENV file is present, if so, source it +env_file="$(dirname "$(realpath "$0")")/containers/$name/env" +[ -f "$env_file" ] && source "${env_file}" + # Get container registry from the DEVC_REGISTRY env # variable. if [ -n "${DEVC_REGISTRY:-}" ]; then