diff --git a/.github/workflows/server_build.yml b/.github/workflows/server_build.yml index d31d0438..448a71d8 100644 --- a/.github/workflows/server_build.yml +++ b/.github/workflows/server_build.yml @@ -1,44 +1,64 @@ -name: Create and publish a Docker image +name: Build and Publish Server Artifacts -on: workflow_dispatch -# push: -# branches: -# - 'master' -# tags: -# - 'v*' - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} +on: + pull_request: + branches: + - master jobs: - build-and-push-image: + server_build: + name: Build and Publish Server Artifacts runs-on: ubuntu-latest - permissions: - contents: read - packages: write + strategy: + matrix: + arch: + - name: amd64 + platform: linux/amd64 + - name: arm64 + platform: linux/arm64 + - name: armv7 + platform: linux/arm/v7 + variant: + - name: bullseye + dockerfile: Dockerfile + - name: bookworm + dockerfile: Dockerfile.bookworm + + env: + ARTIFACT_NAME: ${{ matrix.arch.name }}-${{ matrix.variant.name }}-server steps: - name: Checkout repository - uses: actions/checkout@v2 - - - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + uses: actions/checkout@v4 with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - - name: Build and push Docker image - uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + id: build + uses: docker/build-push-action@v6 with: context: ./server/ - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + file: ./server/${{ matrix.variant.dockerfile }} + tags: ${{ env.ARTIFACT_NAME }} + platforms: ${{ matrix.arch.platform }} + load: true + outputs: type=docker + + - name: Copy artifacts + run: | + container_id=$(docker create ${{ env.ARTIFACT_NAME }}) + mkdir -p artifacts/${{ matrix.arch.name }}-${{ matrix.variant.name }} + docker cp $container_id:/src/bin/. artifacts/${{ matrix.arch.name }}-${{ matrix.variant.name }}/ + docker rm $container_id + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }} + path: artifacts/${{ matrix.arch.name }}-${{ matrix.variant.name }} diff --git a/.github/workflows/server_build_variants.yml b/.github/workflows/server_build_variants.yml deleted file mode 100644 index b4a7f31f..00000000 --- a/.github/workflows/server_build_variants.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Create and publish a Docker image variant - -on: workflow_dispatch -# push: -# tags: -# - 'v*' - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - build-and-push-image-variant: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - strategy: - matrix: - include: - - variant: bookworm - dockerfile: Dockerfile.bookworm - - variant: nvidia - dockerfile: Dockerfile.nvidia - - variant: nvidia_bookworm - dockerfile: Dockerfile.nvidia.bookworm - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ matrix.variant }} - - - name: Build and push Docker image - uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc - with: - context: ./server/ - file: ${{ matrix.dockerfile }} - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/runtime/Dockerfile b/runtime/Dockerfile index 00d5813f..880781be 100644 --- a/runtime/Dockerfile +++ b/runtime/Dockerfile @@ -13,7 +13,7 @@ ENV DEBIAN_FRONTEND=noninteractive RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ - wget ca-certificates supervisor \ + wget ca-certificates python2 supervisor \ pulseaudio dbus-x11 xserver-xorg-video-dummy \ libcairo2 libxcb1 libxrandr2 libxv1 libopus0 libvpx6 \ # @@ -26,11 +26,13 @@ RUN set -eux; \ # gst gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ - gstreamer1.0-pulseaudio; \ + gstreamer1.0-pulseaudio gstreamer1.0-omx; \ + # # install libxcvt0 (not available in debian:bullseye) - wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \ - apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb; \ - rm ./libxcvt0_0.1.2-1_amd64.deb; \ + ARCH=$(dpkg --print-architecture); \ + wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_${ARCH}.deb; \ + apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_${ARCH}.deb; \ + rm ./libxcvt0_0.1.2-1_${ARCH}.deb; \ # # create a non-root user groupadd --gid $USER_GID $USERNAME; \ diff --git a/runtime/Dockerfile.intel b/runtime/Dockerfile.intel index 2627e115..657cd8af 100644 --- a/runtime/Dockerfile.intel +++ b/runtime/Dockerfile.intel @@ -35,10 +35,12 @@ RUN set -eux; \ gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ gstreamer1.0-pulseaudio gstreamer1.0-vaapi; \ + # # install libxcvt0 (not available in debian:bullseye) - wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \ - apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb; \ - rm ./libxcvt0_0.1.2-1_amd64.deb; \ + ARCH=$(dpkg --print-architecture); \ + wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_${ARCH}.deb; \ + apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_${ARCH}.deb; \ + rm ./libxcvt0_0.1.2-1_${ARCH}.deb; \ # # create a non-root user groupadd --gid $USER_GID $USERNAME; \ diff --git a/runtime/Dockerfile.nvidia b/runtime/Dockerfile.nvidia index 4d439582..88f1c1e0 100644 --- a/runtime/Dockerfile.nvidia +++ b/runtime/Dockerfile.nvidia @@ -135,10 +135,12 @@ RUN set -eux; \ # # file chooser handler, clipboard, drop xdotool xclip libgtk-3-0; \ + # # install libxcvt0 (not available in debian:bullseye) - wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \ - apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb; \ - rm ./libxcvt0_0.1.2-1_amd64.deb; \ + ARCH=$(dpkg --print-architecture); \ + wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_${ARCH}.deb; \ + apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_${ARCH}.deb; \ + rm ./libxcvt0_0.1.2-1_${ARCH}.deb; \ # # create a non-root user groupadd --gid $USER_GID $USERNAME; \ diff --git a/server/Dockerfile b/server/Dockerfile index fa0911dd..aba6a312 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -11,10 +11,13 @@ RUN set -eux; \ apt-get install -y --no-install-recommends \ libx11-dev libxrandr-dev libxtst-dev libgtk-3-dev \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev; \ + # # install libxcvt-dev (not available in debian:bullseye) - wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt-dev_0.1.2-1_amd64.deb; \ - wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \ - apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb ./libxcvt-dev_0.1.2-1_amd64.deb; \ + ARCH=$(dpkg --print-architecture); \ + wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt-dev_0.1.2-1_${ARCH}.deb; \ + wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_${ARCH}.deb; \ + apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_${ARCH}.deb ./libxcvt-dev_0.1.2-1_${ARCH}.deb; \ + rm ./libxcvt0_0.1.2-1_${ARCH}.deb ./libxcvt-dev_0.1.2-1_${ARCH}.deb; \ # # clean up apt-get clean -y; \