From 8e119da913de7e262b56f484e627e1f1b5e304eb Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Fri, 21 Mar 2025 18:43:45 +0700 Subject: [PATCH 1/3] Docker: Use curl static binary Signed-off-by: Viet Nguyen Duc --- .ffmpeg/Dockerfile | 31 ++++++------------------------- Base/Dockerfile | 11 ++++++++++- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/.ffmpeg/Dockerfile b/.ffmpeg/Dockerfile index 1372eb5766..d7d8a5abf7 100644 --- a/.ffmpeg/Dockerfile +++ b/.ffmpeg/Dockerfile @@ -1,9 +1,8 @@ +FROM rclone/rclone:beta AS rclone FROM ubuntu:noble AS builder ARG FFMPEG_VERSION="7.1" ARG RCLONE_VER="v1.69.1" ARG GO_VERSION="latest" -ARG GO_CRYPTO_VERSION="v0.35.0" -ARG GO_OAUTH2_VERSION="v0.27.0" USER root @@ -20,33 +19,15 @@ RUN apt-get update -qqy \ && apt-get -qyy clean \ && mkdir -p /usr/local/src -RUN if [ "${GO_VERSION}" = "latest" ]; then \ - GO_VERSION=$(curl -sk https://go.dev/dl/?mode=json | jq -r '.[0].version'); \ - fi \ - && curl -skLO https://go.dev/dl/${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz \ - && tar -xf ${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz -C /usr/local \ - && rm -rf ${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz* \ - && ln -sf /usr/local/go/bin/go /usr/bin/go \ - && go version +COPY --from=rclone /usr/local/bin/rclone /usr/local/bin/rclone -RUN cd /usr/local/src \ - && git clone https://github.com/rclone/rclone.git \ - && cd rclone \ - && git checkout ${RCLONE_VER} \ - # Patch deps version in go.mod to fix CVEs - && sed -i "s|golang.org/x/crypto v.*|golang.org/x/crypto ${GO_CRYPTO_VERSION}|g" go.mod \ - && sed -i "s|golang.org/x/oauth2 v.*|golang.org/x/oauth2 ${GO_OAUTH2_VERSION}|g" go.mod \ - && go mod tidy \ - # Build rclone - && make \ - && mv ~/go/bin/rclone /usr/local/bin/ \ - && rclone version +RUN rclone --version #====================================== # Install x264 from source #====================================== RUN cd /usr/local/src \ - && git clone https://code.videolan.org/videolan/x264.git \ + && git clone https://code.videolan.org/videolan/x264.git --filter=blob:none \ && cd x264 \ && ./configure --prefix="/usr/local" --enable-static \ && make \ @@ -56,9 +37,9 @@ RUN cd /usr/local/src \ # Install FFmpeg from source #====================================== RUN cd /usr/local/src \ - && git clone https://github.com/FFmpeg/FFmpeg.git \ + && git clone https://github.com/FFmpeg/FFmpeg.git --filter=blob:none \ && cd FFmpeg \ - && git checkout release/${FFMPEG_VERSION} \ + && git checkout n${FFMPEG_VERSION} \ && rm -rf .git \ && PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" FFMPEG_VERSION=${FFMPEG_VERSION} ./configure \ --prefix="/usr/local" \ diff --git a/Base/Dockerfile b/Base/Dockerfile index a430bbe266..8133236b9b 100644 --- a/Base/Dockerfile +++ b/Base/Dockerfile @@ -45,6 +45,11 @@ ENV DEBIAN_FRONTEND=noninteractive \ # Miscellaneous packages # Includes minimal runtime used for executing non GUI Java programs #======================== +RUN echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse\n" > /etc/apt/sources.list \ + && echo "deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse\n" >> /etc/apt/sources.list \ + && echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse" >> /etc/apt/sources.list \ + && echo "deb-src [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse" >> /etc/apt/sources.list + RUN apt-get -qqy update \ && apt-get upgrade -yq \ && apt-get -qqy --no-install-recommends install \ @@ -56,7 +61,6 @@ RUN apt-get -qqy update \ unzip \ wget \ jq \ - curl \ supervisor \ gnupg2 \ libnss3-tools \ @@ -64,6 +68,11 @@ RUN apt-get -qqy update \ ca-certificates \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* +RUN ARCH=$(if [ "$(dpkg --print-architecture)" = "arm64" ]; then echo "aarch64"; else echo "$(dpkg --print-architecture)"; fi) \ + && wget -q https://github.com/moparisthebest/static-curl/releases/download/v8.11.0/curl-$ARCH -O /usr/bin/curl \ + && chmod +x /usr/bin/curl \ + && curl --version + RUN --mount=type=secret,id=SEL_PASSWD \ if [ "${TARGETARCH}" = "arm" ] && [ "${TARGETVARIANT}" = "v7" ]; then \ export ARCH=armhf ; \ From 20f4d677313bed8e18caa3456a116f1e79eab854 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Fri, 21 Mar 2025 23:35:20 +0700 Subject: [PATCH 2/3] Update sample Dockerfile Signed-off-by: Viet Nguyen Duc --- docker-compose-v2-tracing.yml | 6 ------ docker-compose-v2.yml | 6 ------ docker-compose-v3-full-grid-swarm.yml | 6 ------ docker-compose-v3-swarm.yml | 6 ------ tests/charts/make/chart_setup_env.sh | 5 ++--- tests/docker-compose-v3-test-node-relay.yml | 4 ---- 6 files changed, 2 insertions(+), 31 deletions(-) diff --git a/docker-compose-v2-tracing.yml b/docker-compose-v2-tracing.yml index 1d53051e97..c317d092d6 100644 --- a/docker-compose-v2-tracing.yml +++ b/docker-compose-v2-tracing.yml @@ -15,8 +15,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - SE_ENABLE_TRACING=true - SE_OTEL_TRACES_EXPORTER=otlp - SE_OTEL_EXPORTER_ENDPOINT=http://jaeger:4317 @@ -30,8 +28,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - SE_ENABLE_TRACING=true - SE_OTEL_TRACES_EXPORTER=otlp - SE_OTEL_EXPORTER_ENDPOINT=http://jaeger:4317 @@ -45,8 +41,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - SE_ENABLE_TRACING=true - SE_OTEL_TRACES_EXPORTER=otlp - SE_OTEL_EXPORTER_ENDPOINT=http://jaeger:4317 diff --git a/docker-compose-v2.yml b/docker-compose-v2.yml index 37ecc8ae0a..0fd0a77236 100644 --- a/docker-compose-v2.yml +++ b/docker-compose-v2.yml @@ -10,8 +10,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ports: - "6900:5900" @@ -22,8 +20,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ports: - "6901:5900" @@ -34,8 +30,6 @@ services: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ports: - "6902:5900" diff --git a/docker-compose-v3-full-grid-swarm.yml b/docker-compose-v3-full-grid-swarm.yml index 6aabacff85..e2a49f91f9 100644 --- a/docker-compose-v3-full-grid-swarm.yml +++ b/docker-compose-v3-full-grid-swarm.yml @@ -11,8 +11,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' @@ -22,8 +20,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' @@ -33,8 +29,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' diff --git a/docker-compose-v3-swarm.yml b/docker-compose-v3-swarm.yml index 6aabacff85..e2a49f91f9 100644 --- a/docker-compose-v3-swarm.yml +++ b/docker-compose-v3-swarm.yml @@ -11,8 +11,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' @@ -22,8 +20,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' @@ -33,8 +29,6 @@ services: shm_size: 2gb environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 deploy: replicas: 1 entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh' diff --git a/tests/charts/make/chart_setup_env.sh b/tests/charts/make/chart_setup_env.sh index 7ce3d216cf..927acbf2c4 100755 --- a/tests/charts/make/chart_setup_env.sh +++ b/tests/charts/make/chart_setup_env.sh @@ -50,10 +50,9 @@ docker version docker buildx version docker buildx use default || true if [ "$(dpkg --print-architecture)" = "amd64" ]; then - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes ; + docker run --privileged --rm tonistiigi/binfmt --install all ; else - docker run --rm --privileged aptman/qus -- -r ; - docker run --rm --privileged aptman/qus -s -- -p + docker run --privileged --rm tonistiigi/binfmt --install all ; fi docker info echo "===============================" diff --git a/tests/docker-compose-v3-test-node-relay.yml b/tests/docker-compose-v3-test-node-relay.yml index 1397517d1e..7f4036b61e 100644 --- a/tests/docker-compose-v3-test-node-relay.yml +++ b/tests/docker-compose-v3-test-node-relay.yml @@ -9,8 +9,6 @@ services: - ./videos/relay_config.toml:/opt/selenium/config.toml environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - SE_LOG_LEVEL=${LOG_LEVEL} - GENERATE_CONFIG=false @@ -58,8 +56,6 @@ services: - emulator environment: - SE_EVENT_BUS_HOST=selenium-hub - - SE_EVENT_BUS_PUBLISH_PORT=4442 - - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - SE_LOG_LEVEL=${LOG_LEVEL} - SE_NODE_SESSION_TIMEOUT=${SESSION_TIMEOUT} - SE_NODE_RELAY_URL=http://emulator:4723 From 88908974c5b605d909ee706b551b497fec6e6d62 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Sun, 23 Mar 2025 01:07:01 +0700 Subject: [PATCH 3/3] Update build FFmpeg Signed-off-by: Viet Nguyen Duc --- .ffmpeg/Dockerfile | 29 ++++++++++++++++++++++++---- .github/workflows/docker-test.yml | 5 ++++- tests/charts/make/chart_setup_env.sh | 5 ++--- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/.ffmpeg/Dockerfile b/.ffmpeg/Dockerfile index d7d8a5abf7..b59969f0f0 100644 --- a/.ffmpeg/Dockerfile +++ b/.ffmpeg/Dockerfile @@ -1,8 +1,10 @@ -FROM rclone/rclone:beta AS rclone FROM ubuntu:noble AS builder -ARG FFMPEG_VERSION="7.1" +ARG FFMPEG_VERSION="7.1.1" ARG RCLONE_VER="v1.69.1" ARG GO_VERSION="latest" +ARG GO_CRYPTO_VERSION="v0.35.0" +ARG GO_OAUTH2_VERSION="v0.27.0" +ARG GO_NET_VERSION="v0.36.0" USER root @@ -19,9 +21,28 @@ RUN apt-get update -qqy \ && apt-get -qyy clean \ && mkdir -p /usr/local/src -COPY --from=rclone /usr/local/bin/rclone /usr/local/bin/rclone +RUN if [ "${GO_VERSION}" = "latest" ]; then \ + GO_VERSION=$(curl -sk https://go.dev/dl/?mode=json | jq -r '.[0].version'); \ + fi \ + && curl -skLO https://go.dev/dl/${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz \ + && tar -xf ${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz -C /usr/local \ + && rm -rf ${GO_VERSION}.linux-$(dpkg --print-architecture).tar.gz* \ + && ln -sf /usr/local/go/bin/go /usr/bin/go \ + && go version -RUN rclone --version +RUN cd /usr/local/src \ + && git clone https://github.com/rclone/rclone.git --filter=blob:none \ + && cd rclone \ + && git checkout ${RCLONE_VER} \ + # Patch deps version in go.mod to fix CVEs + && sed -i "s|golang.org/x/crypto v.*|golang.org/x/crypto ${GO_CRYPTO_VERSION}|g" go.mod \ + && sed -i "s|golang.org/x/oauth2 v.*|golang.org/x/oauth2 ${GO_OAUTH2_VERSION}|g" go.mod \ + && sed -i "s|golang.org/x/net v.*|golang.org/x/net ${GO_NET_VERSION}|g" go.mod \ + && go mod tidy \ + # Build rclone + && make \ + && mv ~/go/bin/rclone /usr/local/bin/ \ + && rclone version #====================================== # Install x264 from source diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml index 9e60d67f74..c214ce28f3 100644 --- a/.github/workflows/docker-test.yml +++ b/.github/workflows/docker-test.yml @@ -172,13 +172,16 @@ jobs: - name: Format and lint scripts run: | make format_shell_scripts + - name: Disable QEMU + if: matrix.test-strategy == 'test_node_relay' && contains(matrix.os, 'amd') == true + run: echo "DOCKER_ENABLE_QEMU=false >> $GITHUB_ENV" - name: Set up containerd image store feature uses: nick-invision/retry@master with: timeout_minutes: 10 max_attempts: 3 command: | - make setup_dev_env + DOCKER_ENABLE_QEMU=${DOCKER_ENABLE_QEMU} make setup_dev_env - name: Output Docker info run: docker info - name: Set up Python diff --git a/tests/charts/make/chart_setup_env.sh b/tests/charts/make/chart_setup_env.sh index 927acbf2c4..9e2629cbb3 100755 --- a/tests/charts/make/chart_setup_env.sh +++ b/tests/charts/make/chart_setup_env.sh @@ -3,6 +3,7 @@ echo "Set ENV variables" CLUSTER=${CLUSTER:-"minikube"} DOCKER_VERSION=${DOCKER_VERSION:-""} +DOCKER_ENABLE_QEMU=${DOCKER_ENABLE_QEMU:-"true"} HELM_VERSION=${HELM_VERSION:-"latest"} KUBERNETES_VERSION=${KUBERNETES_VERSION:-$(curl -L -s https://dl.k8s.io/release/stable.txt)} @@ -49,9 +50,7 @@ fi docker version docker buildx version docker buildx use default || true -if [ "$(dpkg --print-architecture)" = "amd64" ]; then - docker run --privileged --rm tonistiigi/binfmt --install all ; -else +if [ "${DOCKER_ENABLE_QEMU}" = "true" ]; then docker run --privileged --rm tonistiigi/binfmt --install all ; fi docker info