diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1dad14d..327a2b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -171,3 +171,46 @@ jobs: - name: Fix the Dir Permission for Post checkout run: | sudo chown -R $USER $PWD + test-multi-package: + needs: [build, prepare] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + test: ["btcpayserver-regtest", "electrum"] + steps: + - uses: actions/checkout@v2 + - name: Setup Test Prefix + run: | + echo "TEST_PREFIX=sudo chown -R $USER_NAME $BUILD_DIR && cd $BUILD_DIR && make BUILD_DIR=$BUILD_DIR/build" >> $GITHUB_ENV + - name: Prepare Podman Container Running Environment + run: | + sudo apt-get update + sudo apt-get upgrade podman + - name: Fetch CADR image cache + id: cache-cadr-image + uses: actions/cache/restore@v3 + env: + cache-name: cache-cadr-image + with: + path: CADR_image.tar + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Dockerfile', 'debcrafter-version', 'tests/data/microsoft_apt.list', 'tests/data/microsoft_key.gpg') }} + - name: Load Running Environment Image + run: | + $PODMAN_CMD load < CADR_image.tar + mkdir build + - name: Download Pre-built Debian Packages + uses: thecodenebula/download-artifact@e9e49e9bbce8ff2b901957ee034714cab099644a + with: + #name: ${{ join(fromJson(needs.prepare.outputs.sources), '\n') }} + path: packages + - name: Test multi-package CADR integration + run: | + mkdir -p build + mv packages/*/*.deb build/ + eval $SPAWN_CONTAINER + eval $EXECUTE_CMD bash -c "\"$TEST_PREFIX test-here-multi-package-${{ matrix.test }}\"" + $PODMAN_CMD rm -f $CONTAINER_NAME + - name: Fix the Dir Permission for Post checkout + run: | + sudo chown -R $USER $PWD diff --git a/tests/multi-package/btcpayserver-regtest.sh b/tests/multi-package/btcpayserver-regtest.sh index 361e0ee..599080a 100755 --- a/tests/multi-package/btcpayserver-regtest.sh +++ b/tests/multi-package/btcpayserver-regtest.sh @@ -10,6 +10,14 @@ preload_config echo '127.0.0.1 example.com' | sudo tee -a /etc/hosts >/dev/null +if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; +then + sudo systemctl start dbus.service + sudo systemctl start user@$UID.service + export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus + export XDG_RUNTIME_DIR=/run/user/$UID +fi + sudo apt-get install -y bitcoin-regtest lnd btcpayserver python3-selenium selfhost-clearnet python3-lnpbp-testkit echo "Starting selenium test" >&2 diff --git a/tests/multi-package/btcpayserver-regtest/selenium_after_install.py b/tests/multi-package/btcpayserver-regtest/selenium_after_install.py index c76d342..fe2c908 100755 --- a/tests/multi-package/btcpayserver-regtest/selenium_after_install.py +++ b/tests/multi-package/btcpayserver-regtest/selenium_after_install.py @@ -5,6 +5,7 @@ import subprocess from time import sleep import sys +import os from lnpbp_testkit.cadr import network # This is not public, but we control the API, so let's break privacy for now from lnpbp_testkit.parsing import parse_simple_config_lines @@ -50,6 +51,8 @@ def is_synced(self): chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("ignore-certificate-errors") +if "DISPLAY" not in os.environ: + chrome_options.add_argument("headless=new") driver = webdriver.Chrome(chrome_options=chrome_options) eprint("Registering an admin account") diff --git a/tests/multi-package/electrum.sh b/tests/multi-package/electrum.sh index c4618d1..ea73d07 100755 --- a/tests/multi-package/electrum.sh +++ b/tests/multi-package/electrum.sh @@ -8,7 +8,7 @@ test_dir="$(realpath "$(dirname "$0")/..")" preload_config -sudo apt-get install -y bitcoin-regtest bitcoin-cli electrs electrum-trustless-regtest jq +sudo apt-get install -y bitcoin-regtest bitcoin-cli electrs electrum-trustless-regtest jq libfuse2 fuse3 # Heavily inspired by the one in electrs itself