gha: use ssh -tt to have a tty

Github Actions execution environments lack tty, which is needed for
integration tests. We have used script utility before to provide a fake
tty, but it appears to be buggy on CentOS 7.

Since we use ssh anyway to access Vagant VM, add -tt to forcefully
allocate a tty.

Apparently, neither "TERM=xterm" nor "stty size" is needed for
any tests to work, so remove those, too.

Finally, unit tests do not need a terminal, so remove the "script"
from those.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
Kir Kolyshkin
2021-01-15 19:30:51 -08:00
parent dbbe7e60c7
commit a91210f499
+16 -12
View File
@@ -1,3 +1,9 @@
# NOTE Github Actions execution environments lack a terminal, needed for
# some integration tests. Two ways to get a terminal are used below:
#
# 1. script utility -- for "local" integration tests;
# 2. ssh -tt -- for Vagrant VMs (script is buggy on CentOS 7).
name: ci
on:
push:
@@ -61,7 +67,7 @@ jobs:
- name: unit test
if: matrix.rootless != 'rootless'
run: sudo -E PATH="$PATH" script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm make localunittest'
run: sudo -E PATH="$PATH" -- make localunittest
- name: add rootless user
if: matrix.rootless == 'rootless'
@@ -74,12 +80,12 @@ jobs:
sudo chown -R rootless.rootless /home/rootless
- name: integration test (fs driver)
run: sudo -E PATH="$PATH" script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm make local${{ matrix.rootless }}integration'
run: sudo -E PATH="$PATH" script -e -c 'make local${{ matrix.rootless }}integration'
- name: integration test (systemd driver)
# can't use systemd driver with cgroupv1
if: matrix.rootless != 'rootless'
run: sudo -E PATH="$PATH" script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm make RUNC_USE_SYSTEMD=yes local${{ matrix.rootless }}integration'
run: sudo -E PATH="$PATH" script -e -c 'make RUNC_USE_SYSTEMD=yes local${{ matrix.rootless }}integration'
# cgroup v2 unified hierarchy + very recent kernel (openat2)
@@ -103,19 +109,17 @@ jobs:
- name: unit tests
run: ssh default 'cd /vagrant && sudo make localunittest'
# The integration tests require tty which GH actions lack;
# wrap those in "script" to emulate tty.
- name: cgroupv2 with systemd
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo make -C /vagrant localintegration RUNC_USE_SYSTEMD=yes'"
run: ssh -tt default "sudo make -C /vagrant localintegration RUNC_USE_SYSTEMD=yes"
- name: cgroupv2 with fs2
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo make -C /vagrant localintegration'"
run: ssh -tt default "sudo make -C /vagrant localintegration"
- name: cgroupv2 with systemd (rootless)
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo make -C /vagrant localrootlessintegration RUNC_USE_SYSTEMD=yes'"
run: ssh -tt default "sudo make -C /vagrant localrootlessintegration RUNC_USE_SYSTEMD=yes"
- name: cgroupv2 with fs2 (rootless)
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo make -C /vagrant localrootlessintegration'"
run: ssh -tt default "sudo make -C /vagrant localrootlessintegration"
# kernel 3.10 (frankenized), systemd 219
@@ -140,12 +144,12 @@ jobs:
run: ssh default 'sudo -i make -C /vagrant localunittest'
- name: integration tests (fs cgroup driver)
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo -i make -C /vagrant localintegration'"
run: ssh -tt default "sudo -i make -C /vagrant localintegration"
- name: integration tests (systemd cgroup driver)
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo -i make -C /vagrant localintegration RUNC_USE_SYSTEMD=1'"
run: ssh -tt default "sudo -i make -C /vagrant localintegration RUNC_USE_SYSTEMD=1"
- name: rootless integration
# FIXME: rootless is skipped because of EPERM on writing cgroup.procs
if: false
run: ssh default "script -e -c /bin/bash -c 'stty rows 40 cols 80; TERM=xterm sudo -i make -C /vagrant localrootlessintegration'"
run: ssh default "sudo -i make -C /vagrant localrootlessintegration"