image: debian:sid-slim

shellcheck:
  stage: test
  script:
    - apt-get update
    - apt-get dist-upgrade --yes
    - apt-get --no-install-recommends --yes install shellcheck
    - shellcheck debvm-*

codespell:
  stage: test
  script:
    - apt-get update
    - apt-get dist-upgrade --yes
    - apt-get --no-install-recommends --yes install codespell
    - codespell debvm-*

.test_script:
  script:
    - timeout 240s ./debvm-run -s 2222 &
    - |
      timeout=5
      sshopt="-o StrictHostKeyChecking=no $(if test "$RELEASE" = jessie; then echo -o PubkeyAcceptedKeyTypes=+ssh-rsa; fi)"
      ts=$(sleepenh 0 || [ $? -eq 1 ])
      for i in $(seq 30); do
        rv=0
        ssh $sshopt -o ConnectTimeout="$timeout" -i ~/.ssh/id -p 2222 root@localhost echo success || rv=$?
        test $rv -eq 0 && break
        ts=$(sleepenh "$ts" "$timeout" || [ $? -eq 1 ]);
        if test $i -eq 30; then
          echo "timeout reached" >&2
          exit 1
        fi
      done
    - ssh $sshopt -i ~/.ssh/id -p 2222 root@localhost poweroff

release_test:
  extends: .test_script
  stage: test
  parallel:
    matrix:
      - RELEASE:
        - sid
        - bookworm
        - bullseye
        - buster
        - stretch
        - jessie
  before_script:
    - apt-get update
    - apt-get dist-upgrade --yes
    - apt-get --no-install-recommends --yes install e2fsprogs genext2fs mmdebstrap openssh-client sleepenh qemu-kvm
    - ssh-keygen -f ~/.ssh/id -N ''
    - ./debvm-create -k ~/.ssh/id.pub -r "$RELEASE"

arch_test:
  extends: .test_script
  stage: test
  parallel:
    matrix:
      - ARCHITECTURE:
        - arm64
        - armhf
        - i386
        - ppc64el
        - s390x
  before_script:
    - |
      if [ ! -e /proc/sys/fs/binfmt_misc/status ]; then
        mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
      fi
    - apt-get update
    - apt-get dist-upgrade --yes
    - apt-get --no-install-recommends --yes install e2fsprogs genext2fs mmdebstrap openssh-client sleepenh qemu-system binfmt-support arch-test qemu-user-static
    - ssh-keygen -f ~/.ssh/id -N ''
    - ./debvm-create -k ~/.ssh/id.pub -a $ARCHITECTURE