From b3a0d671c8b696628f5536f53a4463d52dffe20f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 13 Jun 2022 10:56:07 +0200 Subject: [PATCH] jibri: add support for arm64 Use Debian's Chromium and ChromeDriver instead of Google's. This has the limitation of not being able to control the version we ship, however. --- .github/workflows/unstable.yml | 6 +-- Makefile | 6 +-- jibri/Dockerfile | 2 + jibri/build/install-chrome.sh | 41 ++++++++++++------- .../policies/managed/managed_policies.json | 3 ++ .../policies/managed/managed_policies.json | 1 - 6 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 jibri/rootfs/etc/chromium/policies/managed/managed_policies.json diff --git a/.github/workflows/unstable.yml b/.github/workflows/unstable.yml index 24866f0..3f96233 100644 --- a/.github/workflows/unstable.yml +++ b/.github/workflows/unstable.yml @@ -141,8 +141,7 @@ jobs: build-args: | JITSI_REPO=${{ secrets.JITSI_REPO }} BASE_TAG=${{ needs.version.outputs.base }} - # FIXME jibri does not support linux/arm64 - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 cache-from: type=gha cache-to: type=gha,mode=max - name: Dryrun @@ -156,8 +155,7 @@ jobs: build-args: | JITSI_REPO=jitsi BASE_TAG=${{ needs.version.outputs.base }} - # FIXME jibri does not support linux/arm64 - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 cache-from: type=gha cache-to: type=gha,mode=max diff --git a/Makefile b/Makefile index 452cc92..08cbc1e 100644 --- a/Makefile +++ b/Makefile @@ -4,15 +4,15 @@ JITSI_BUILD ?= unstable JITSI_REPO ?= jitsi NATIVE_ARCH ?= $(shell uname -m) -JITSI_MULTIARCH_SERVICES := base base-java web prosody jicofo jvb -JITSI_AMD64ONLY_SERVICES := jigasi jibri +JITSI_MULTIARCH_SERVICES := base base-java web prosody jicofo jvb jibri +JITSI_AMD64ONLY_SERVICES := jigasi ifeq ($(NATIVE_ARCH),x86_64) TARGETPLATFORM := linux/amd64 JITSI_SERVICES := base base-java web prosody jicofo jvb jigasi jibri else ifeq ($(NATIVE_ARCH),aarch64) TARGETPLATFORM := linux/arm64 - JITSI_SERVICES := base base-java web prosody jicofo jvb + JITSI_SERVICES := base base-java web prosody jicofo jvb jibri else TARGETPLATFORM := unsupported JITSI_SERVICES := dummy diff --git a/jibri/Dockerfile b/jibri/Dockerfile index da3c708..5e844c8 100644 --- a/jibri/Dockerfile +++ b/jibri/Dockerfile @@ -12,6 +12,8 @@ RUN apt-dpkg-wrap apt-get update && \ apt-dpkg-wrap apt-get install -y jibri libgl1-mesa-dri procps jitsi-upload-integrations jq && \ apt-cleanup +ARG TARGETPLATFORM=unset +ARG USE_CHROMIUM=0 #ARG CHROME_RELEASE=latest #ARG CHROMEDRIVER_MAJOR_RELEASE=latest ARG CHROME_RELEASE=102.0.5005.61 diff --git a/jibri/build/install-chrome.sh b/jibri/build/install-chrome.sh index 195ac45..2f3ce9b 100755 --- a/jibri/build/install-chrome.sh +++ b/jibri/build/install-chrome.sh @@ -2,25 +2,36 @@ set -o pipefail -xeu -if [ "${CHROME_RELEASE}" = "latest" ]; then - wget -qO - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmour > /etc/apt/trusted.gpg.d/google.gpg - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list +if [ "${USE_CHROMIUM}" = 1 -o "${TARGETPLATFORM}" = "linux/arm64" ]; then + echo "Using Debian's Chromium" apt-dpkg-wrap apt-get update - apt-dpkg-wrap apt-get install -y google-chrome-stable + apt-dpkg-wrap apt-get install -y chromium chromium-driver chromium-sandbox apt-cleanup + chromium --version else - curl -4so "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" - apt-dpkg-wrap apt-get update - apt-dpkg-wrap apt-get install -y "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" - apt-cleanup -fi + if [ "${CHROME_RELEASE}" = "latest" ]; then + wget -qO - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmour > /etc/apt/trusted.gpg.d/google.gpg + echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list + apt-dpkg-wrap apt-get update + apt-dpkg-wrap apt-get install -y google-chrome-stable + apt-cleanup + else + curl -4so "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" + apt-dpkg-wrap apt-get update + apt-dpkg-wrap apt-get install -y "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" + apt-cleanup + fi -if [ "${CHROMEDRIVER_MAJOR_RELEASE}" = "latest" ]; then - CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE)" -else - CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROMEDRIVER_MAJOR_RELEASE})" + google-chrome --version + + if [ "${CHROMEDRIVER_MAJOR_RELEASE}" = "latest" ]; then + CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE)" + else + CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROMEDRIVER_MAJOR_RELEASE})" + fi + + curl -4Ls "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_RELEASE}/chromedriver_linux64.zip" | zcat >> /usr/bin/chromedriver + chmod +x /usr/bin/chromedriver fi -curl -4Ls "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_RELEASE}/chromedriver_linux64.zip" | zcat >> /usr/bin/chromedriver -chmod +x /usr/bin/chromedriver chromedriver --version diff --git a/jibri/rootfs/etc/chromium/policies/managed/managed_policies.json b/jibri/rootfs/etc/chromium/policies/managed/managed_policies.json new file mode 100644 index 0000000..3fb0619 --- /dev/null +++ b/jibri/rootfs/etc/chromium/policies/managed/managed_policies.json @@ -0,0 +1,3 @@ +{ + "CommandLineFlagSecurityWarningsEnabled": false +} diff --git a/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json b/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json index 1fbf2e1..3fb0619 100644 --- a/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json +++ b/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json @@ -1,4 +1,3 @@ { "CommandLineFlagSecurityWarningsEnabled": false } -