diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 22886d9..52ce04e 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -24,14 +24,11 @@ jobs: with: filters: | workflow: ['.gitea/workflows/build.yaml'] - fedora: ['containers/fedora/**'] - go: ['containers/go/**'] - rust: ['containers/rust/**'] - dotnet: ['containers/dotnet/**'] + base: ['containers/base/**'] base-image: needs: [changes] - if: ${{ needs.changes.outputs.fedora == 'true' || needs.changes.outputs.any_change == 'true' }} + if: ${{ needs.changes.outputs.base == 'true' || needs.changes.outputs.any_change == 'true' }} runs-on: job-v2 steps: - uses: actions/checkout@v4 @@ -45,10 +42,10 @@ jobs: id: build uses: job79/buildah-build@65b3793a1370c1ccd74a5c0d090d70eb9637a4ef with: - image: maurice/fedora + image: maurice/base tags: ${{ github.ref_name }} - context: ./containers/fedora - containerfiles: ./containers/fedora/Containerfile + context: ./containers/base + containerfiles: ./containers/base/Containerfile - name: Push uses: redhat-actions/push-to-registry@v2 with: @@ -61,51 +58,51 @@ jobs: --compression-format=zstd --compression-level=12 - dependent-images: - needs: [changes, base-image] - if: always() && needs.changes.result == 'success' && (needs.base-image.result == 'success' || needs.base-image.result == 'skipped') - runs-on: job-v2 - strategy: - fail-fast: false - matrix: - container: [rust, dotnet, go] - steps: - - name: Check if build needed - id: check - run: | - if [[ "${{ matrix.container }}" == "go" && "${{ needs.changes.outputs.go }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi - if [[ "${{ matrix.container }}" == "rust" && "${{ needs.changes.outputs.rust }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi - if [[ "${{ matrix.container }}" == "dotnet" && "${{ needs.changes.outputs.dotnet }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi - if [[ "${{ needs.changes.outputs.any_change }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi - - name: Clone repo - if: steps.check.outputs.run == 'true' - uses: actions/checkout@v4 - - name: Log in - if: steps.check.outputs.run == 'true' - uses: redhat-actions/podman-login@v1 - with: - registry: git.plabble.org - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_TOKEN }} - - name: Build - id: build - if: steps.check.outputs.run == 'true' - uses: job79/buildah-build@65b3793a1370c1ccd74a5c0d090d70eb9637a4ef - with: - image: maurice/${{ matrix.container }} - tags: ${{ github.ref_name }} - context: ./containers/${{ matrix.container }} - containerfiles: ./containers/${{ matrix.container }}/Containerfile - build-args: TAG=${{ github.ref_name }} - - name: Push - if: steps.check.outputs.run == 'true' - uses: redhat-actions/push-to-registry@v2 - with: - image: ${{ steps.build.outputs.image }} - tags: ${{ steps.build.outputs.tags }} - registry: git.plabble.org - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_TOKEN }} - extra-args: | - --compression-format=zstd - --compression-level=12 + # dependent-images: + # needs: [changes, base-image] + # if: always() && needs.changes.result == 'success' && (needs.base-image.result == 'success' || needs.base-image.result == 'skipped') + # runs-on: job-v2 + # strategy: + # fail-fast: false + # matrix: + # container: [rust, dotnet, go] + # steps: + # - name: Check if build needed + # id: check + # run: | + # if [[ "${{ matrix.container }}" == "go" && "${{ needs.changes.outputs.go }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi + # if [[ "${{ matrix.container }}" == "rust" && "${{ needs.changes.outputs.rust }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi + # if [[ "${{ matrix.container }}" == "dotnet" && "${{ needs.changes.outputs.dotnet }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi + # if [[ "${{ needs.changes.outputs.any_change }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi + # - name: Clone repo + # if: steps.check.outputs.run == 'true' + # uses: actions/checkout@v4 + # - name: Log in + # if: steps.check.outputs.run == 'true' + # uses: redhat-actions/podman-login@v1 + # with: + # registry: git.plabble.org + # username: ${{ secrets.REGISTRY_USERNAME }} + # password: ${{ secrets.REGISTRY_TOKEN }} + # - name: Build + # id: build + # if: steps.check.outputs.run == 'true' + # uses: job79/buildah-build@65b3793a1370c1ccd74a5c0d090d70eb9637a4ef + # with: + # image: maurice/${{ matrix.container }} + # tags: ${{ github.ref_name }} + # context: ./containers/${{ matrix.container }} + # containerfiles: ./containers/${{ matrix.container }}/Containerfile + # build-args: TAG=${{ github.ref_name }} + # - name: Push + # if: steps.check.outputs.run == 'true' + # uses: redhat-actions/push-to-registry@v2 + # with: + # image: ${{ steps.build.outputs.image }} + # tags: ${{ steps.build.outputs.tags }} + # registry: git.plabble.org + # username: ${{ secrets.REGISTRY_USERNAME }} + # password: ${{ secrets.REGISTRY_TOKEN }} + # extra-args: | + # --compression-format=zstd + # --compression-level=12 diff --git a/containers/android/Containerfile b/containers/android/Containerfile index ad61e86..95ece7a 100644 --- a/containers/android/Containerfile +++ b/containers/android/Containerfile @@ -1,9 +1,9 @@ -FROM git.plabble.org/maurice/dotnet:main -ARG studio_version="2025.1.4.8" +FROM git.plabble.org/maurice/base:main +ARG studio_version="2025.3.2.6" ARG download_uri="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/${studio_version}/android-studio-${studio_version}-linux.tar.gz" USER root - +# === setup GUI === RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ dnf -y --setopt=keepcache=1 install libXext libXrender libXtst libX11 freetype freetype-devel mesa-libGLU USER user diff --git a/containers/fedora/Containerfile b/containers/base/Containerfile similarity index 55% rename from containers/fedora/Containerfile rename to containers/base/Containerfile index 43332e8..f179d65 100644 --- a/containers/fedora/Containerfile +++ b/containers/base/Containerfile @@ -3,10 +3,12 @@ FROM quay.io/fedora/fedora:43 # === install system packages === RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ dnf update -y && \ - dnf -y --setopt=keepcache=1 install procps ping bash-completion glibc-langpack-en \ + dnf -y --setopt=keepcache=1 install \ + procps ping bash-completion glibc-langpack-en \ host-spawn dbus-launch \ - git pnpm helix zip rsync - + git pnpm helix zip rsync \ + dotnet-sdk-9.0 dotnet-sdk-10.0 go + # === setup user === RUN useradd -ms /bin/bash user && \ usermod -aG wheel user && sed -i '/NOPASSWD/s/^#//g' /etc/sudoers && \ @@ -15,6 +17,11 @@ RUN useradd -ms /bin/bash user && \ # === Add host entry for podman === RUN ln -s /usr/local/bin/host /usr/local/bin/podman +# === root language servers === +COPY install-roslyn.sh /tmp/install-roslyn.sh +RUN chmod +x /tmp/install-roslyn.sh && /tmp/install-roslyn.sh +RUN go install golang.org/x/tools/gopls@latest + USER user WORKDIR /home/user RUN mkdir .config .local .cache @@ -24,8 +31,18 @@ COPY --chown=user:user config/git .config/git/config COPY --chown=user:user config/helix/ .config/helix/ COPY config/bin /usr/local/bin -# === Setup PNPM & install language servers === +# === Setup PNPM & install language servers, tools === RUN /bin/bash -c "SHELL=/bin/bash pnpm setup && . /home/user/.bashrc && pnpm i -g deno bash-language-server vscode-langservers-extracted dockerfile-language-server-nodejs \ typescript typescript-language-server" +RUN dotnet tool install --global dotnet-ef + +# === Rust toolchain === +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +RUN . '/home/user/.cargo/env' && rustup component add rust-analyzer + +# WASM toolchain +RUN curl https://drager.github.io/wasm-pack/installer/init.sh -sSf | sh +RUN cargo install cargo-generate + VOLUME /home/user diff --git a/containers/fedora/config/bashrc b/containers/base/config/bashrc similarity index 100% rename from containers/fedora/config/bashrc rename to containers/base/config/bashrc diff --git a/containers/fedora/config/bin/host b/containers/base/config/bin/host similarity index 100% rename from containers/fedora/config/bin/host rename to containers/base/config/bin/host diff --git a/containers/fedora/config/git b/containers/base/config/git similarity index 100% rename from containers/fedora/config/git rename to containers/base/config/git diff --git a/containers/fedora/config/helix/config.toml b/containers/base/config/helix/config.toml similarity index 100% rename from containers/fedora/config/helix/config.toml rename to containers/base/config/helix/config.toml diff --git a/containers/fedora/config/helix/languages.toml b/containers/base/config/helix/languages.toml similarity index 100% rename from containers/fedora/config/helix/languages.toml rename to containers/base/config/helix/languages.toml diff --git a/containers/dotnet/install-roslyn.sh b/containers/base/install-roslyn.sh similarity index 100% rename from containers/dotnet/install-roslyn.sh rename to containers/base/install-roslyn.sh diff --git a/containers/dotnet/Containerfile b/containers/dotnet/Containerfile deleted file mode 100644 index 0d95101..0000000 --- a/containers/dotnet/Containerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM git.plabble.org/maurice/fedora:main - -USER root -RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ - dnf -y --setopt=keepcache=1 install dotnet-sdk-9.0 dotnet-sdk-10.0 - -COPY install-roslyn.sh /tmp/install-roslyn.sh -RUN chmod +x /tmp/install-roslyn.sh && /tmp/install-roslyn.sh - -USER user -RUN dotnet tool install --global dotnet-ef diff --git a/containers/flutter/Containerfile b/containers/flutter/Containerfile index 50ec34f..36b1d2d 100644 --- a/containers/flutter/Containerfile +++ b/containers/flutter/Containerfile @@ -1,5 +1,5 @@ -FROM git.plabble.org/maurice/android:main -ARG flutter_version="3.35.7-stable" +FROM git.plabble.org/maurice/base:main +ARG flutter_version="3.41.4-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 && \ diff --git a/containers/go/Containerfile b/containers/go/Containerfile deleted file mode 100644 index f6591e8..0000000 --- a/containers/go/Containerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM git.plabble.org/maurice/fedora:main - -USER root -RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ - dnf -y --setopt=keepcache=1 install go - -RUN go install golang.org/x/tools/gopls@latest - -USER user \ No newline at end of file diff --git a/containers/rider/Containerfile b/containers/rider/Containerfile index ad47b70..ed6a24c 100644 --- a/containers/rider/Containerfile +++ b/containers/rider/Containerfile @@ -1,8 +1,10 @@ -FROM git.plabble.org/maurice/dotnet:main +FROM git.plabble.org/maurice/base:main ARG rider_version="2025.3.2" ARG download_uri="https://download.jetbrains.com/rider/JetBrains.Rider-${rider_version}.tar.gz" USER root + +# === setup GUI === RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ dnf -y --setopt=keepcache=1 install libXext libXrender libXtst libX11 freetype freetype-devel USER user diff --git a/containers/rider/config.sh b/containers/rider/config.sh index 98a5e1c..e0535ed 100644 --- a/containers/rider/config.sh +++ b/containers/rider/config.sh @@ -1,2 +1,4 @@ #!/bin/bash -arg "-p 8888:8888" \ No newline at end of file +mkdir -p /tmp/joypet-sockets +arg "-p 7777:7777" +arg "-v /tmp/joypet-sockets:/var/run/joypet-sockets:Z" \ No newline at end of file diff --git a/containers/rust/Containerfile b/containers/rust/Containerfile deleted file mode 100644 index 4622c98..0000000 --- a/containers/rust/Containerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM git.plabble.org/maurice/fedora:main - -USER root - -RUN --mount=type=cache,id=dnf-cache,target=/var/cache/libdnf5 \ - dnf -y --setopt=keepcache=1 install openssl-devel \ - gcc-c++ libX11-devel alsa-lib-devel systemd-devel wayland-devel libxkbcommon-devel mesa-vulkan-drivers - -USER user - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -RUN . '/home/user/.cargo/env' && rustup component add rust-analyzer - -# Raspberry Pi Pico tools -# RUN sudo dnf install -y \ -# systemd-devel \ -# pkg-config \ -# && dnf clean all -# RUN . "$HOME/.cargo/env" && cargo install elf2uf2-rs --locked -# RUN . "$HOME/.cargo/env" && rustup target add thumbv6m-none-eabi - -# WASM toolchain -RUN curl https://drager.github.io/wasm-pack/installer/init.sh -sSf | sh -RUN cargo install cargo-generate \ No newline at end of file diff --git a/containers/rust/config.sh b/containers/rust/config.sh deleted file mode 100644 index 67817c7..0000000 --- a/containers/rust/config.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -arg "--device=/dev/bus/usb --privileged" \ No newline at end of file