fix(ci/debianrepo): avoid running docker arm64 (#551)

The issue at https://github.com/ooni/probe/issues/1741 is that running `docker --platform linux/arm64` segfaults when running `sudo apt-get update -q` inside the `arm64` docker environment.

As far as the `debianrepo` rule is concerned, we can fix the issue by taking advantage of Debian multi-arch. We now configure Debian multi-arch and install the package inside a `debian:stable` environment.

We keep using docker. In principle we could not. But the Ubuntu environment provided by GitHub actions does not support multi-arch for arm. Also, I'd like testing this rule to be possible also locally (where I don't have Debian).
This commit is contained in:
Simone Basso 2021-10-21 16:55:00 +02:00 committed by GitHub
parent b7b87ee0de
commit 9848f3713e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 14 deletions

View File

@ -3,33 +3,36 @@ name: debianrepo
on: on:
push: push:
branches: branches:
- "stable"
- "release/**" - "release/**"
- "master"
- "debianrepo"
jobs: jobs:
test_386: test_386:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: ./E2E/debian.sh docker i386 - run: sudo ./E2E/debian.sh docker i386
- run: sudo cat DEBIAN_INSTALLED_PACKAGE.txt
test_amd64: test_amd64:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: ./E2E/debian.sh docker amd64 - run: sudo ./E2E/debian.sh docker amd64
- run: sudo cat DEBIAN_INSTALLED_PACKAGE.txt
test_arm: test_arm:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: sudo apt-get update -q - run: sudo ./E2E/debian.sh docker armhf
- run: sudo apt-get install -y qemu-user-static - run: sudo cat DEBIAN_INSTALLED_PACKAGE.txt
- run: ./E2E/debian.sh docker armhf
build_arm64: test_arm64:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: sudo apt-get update -q - run: sudo ./E2E/debian.sh docker arm64
- run: sudo apt-get install -y qemu-user-static - run: sudo cat DEBIAN_INSTALLED_PACKAGE.txt
- run: ./E2E/debian.sh docker arm64

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
/*.asc /*.asc
/coverage.cov /coverage.cov
/*.deb /*.deb
/DEBIAN_INSTALLED_PACKAGE.txt
/debops-ci /debops-ci
.DS_Store .DS_Store
/*.jsonl /*.jsonl

View File

@ -8,12 +8,14 @@ set -e
install_flow() { install_flow() {
set -x set -x
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
dpkg --add-architecture "$1"
apt-get update apt-get update
apt-get install --yes gnupg apt-get install --yes gnupg
apt-key adv --verbose --keyserver hkp://keyserver.ubuntu.com --recv-keys 'B5A08F01796E7F521861B449372D1FF271F2DD50' apt-key adv --verbose --keyserver hkp://keyserver.ubuntu.com --recv-keys 'B5A08F01796E7F521861B449372D1FF271F2DD50'
echo "deb http://deb.ooni.org/ unstable main" | tee /etc/apt/sources.list.d/ooniprobe.list echo "deb [arch=$1] http://deb.ooni.org/ unstable main" | tee /etc/apt/sources.list.d/ooniprobe.list
apt-get update apt-get update
apt-get install --yes ooniprobe-cli apt-get install --yes ooniprobe-cli
dpkg -l | grep ooniprobe-cli > DEBIAN_INSTALLED_PACKAGE.txt
} }
docker_flow() { docker_flow() {
@ -23,8 +25,8 @@ docker_flow() {
exit 1 exit 1
} }
set -x set -x
docker pull --platform "linux/$1" debian:stable docker pull debian:stable
docker run --platform "linux/$1" -v "$(pwd):/ooni" -w /ooni debian:stable ./E2E/debian.sh install docker run -v "$(pwd):/ooni" -w /ooni debian:stable ./E2E/debian.sh install "$1"
} }
if [ "$1" = "docker" ]; then if [ "$1" = "docker" ]; then
@ -35,10 +37,10 @@ if [ "$1" = "docker" ]; then
docker_flow "$2" docker_flow "$2"
elif [ "$1" = "install" ]; then elif [ "$1" = "install" ]; then
install_flow install_flow "$2"
else else
echo "usage: $0 docker {i386,amd64,armhf,arm64}" 1>&2 echo "usage: $0 docker {i386,amd64,armhf,arm64}" 1>&2
echo " $0 install" 1>&2 echo " $0 install {i386,amd64,armhf,arm64}" 1>&2
exit 1 exit 1
fi fi