dist: bionic
language: go
go:
  - 1.14.x
  - 1.13.x
  - tip
cache:
  directories:
  - /home/travis/.vagrant.d/boxes
matrix:
  include:
    - go: 1.14.x
      name: "verify-dependencies"
      script:
        - make verify-dependencies
    - go: 1.13.x
      name: "cgroup-systemd"
      env:
        - RUNC_USE_SYSTEMD=1
      script:
        - make all
        - sudo PATH="$PATH" make localintegration RUNC_USE_SYSTEMD=1
    - name: "fedora32"
      before_install:
        - sudo ./script/install-vagrant.sh
        - ln -sf Vagrantfile.fedora32 Vagrantfile
        - sudo vagrant up && sudo mkdir -p /root/.ssh && sudo sh -c "vagrant ssh-config >> /root/.ssh/config"
      script:
        - sudo ssh default -t 'cd /vagrant && sudo make localunittest'
        # cgroupv2+systemd: test on vagrant host itself as we need systemd
        - sudo ssh default -t 'cd /vagrant && sudo make localintegration RUNC_USE_SYSTEMD=yes'
        # same setup but with fs2 driver instead of systemd
        - sudo ssh default -t 'cd /vagrant && sudo make localintegration'
        # cgroupv2+systemd (rootless)
        - sudo ssh default -t 'cd /vagrant && sudo make localrootlessintegration RUNC_USE_SYSTEMD=yes'
        # same setup but with fs2 driver (rootless) instead of systemd
        - sudo ssh default -t 'cd /vagrant && sudo make localrootlessintegration'
    - name: "centos7"
      before_install:
        - sudo ./script/install-vagrant.sh
        - ln -sf Vagrantfile.centos7 Vagrantfile
        - sudo vagrant up && sudo mkdir -p /root/.ssh && sudo sh -c "vagrant ssh-config >> /root/.ssh/config"
      script:
        # kernel 3.10 (frankenized), systemd 219
        - sudo ssh default 'rpm -q centos-release kernel systemd'
        # FIXME: the following unit tests are skipped (TESTFLAGS=-short):
        #        FAIL: TestPidsSystemd: utils_test.go:55: exec_test.go:630: unexpected error: container_linux.go:353: starting container process caused: process_linux.go:326: applying cgroup configuration for process caused: mountpoint for devices not found
        #        FAIL: TestRunWithKernelMemorySystemd: exec_test.go:713: runContainer failed with kernel memory limit: container_linux.go:353: starting container process caused: process_linux.go:326: applying cgroup configuration for process caused: mkdir : no such file or directory
        - sudo ssh default -t 'sudo -i make -C /vagrant localunittest TESTFLAGS=-short'
        - sudo ssh default -t 'sudo -i make -C /vagrant localintegration'
        - sudo ssh default -t 'sudo -i make -C /vagrant localintegration RUNC_USE_SYSTEMD=1'
        # FIXME: rootless is skipped because of EPERM on writing cgroup.procs
        # - sudo ssh default -t 'sudo -i make -C /vagrant localrootlessintegration'

  allow_failures:
    - go: tip

go_import_path: github.com/opencontainers/runc

# `make ci` uses Docker.
sudo: required
services:
  - docker

before_install:
  - sudo apt-get -qq update
  - sudo apt-get install -y libseccomp-dev
  - GO111MODULE=off go get -u golang.org/x/lint/golint
  - GO111MODULE=off go get -u github.com/vbatts/git-validation
  - env | grep TRAVIS_

script:
  - git-validation -run DCO,short-subject -v
  - make
  - make clean ci cross
