language: shell

addons:
  hosts:
    - pivpn.test
  apt:
    packages:
      - shellcheck

services:
  - docker

stages:
  - lint
  - test

branches:
  only:
    - test
    - master

jobs:
  allow_failures:
    - stage: lint

  include:
    - stage: lint
      name: "Shellcheck lint"
      dist: linux
      script:
        - shellcheck auto_install/install.sh
        - find scripts/ -type f -exec shellcheck {} \;

    - stage: test
      name: "OpenVPN Xenial & Commands"
      dist: xenial
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -o
      script:
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_openvpn.conf
      after_script:
        - systemctl status openvpn
        - pivpn add -n foo nopass -d 180
        - pivpn add -p "$RANDOM$RANDOM" -n bar -d 180
        - pivpn add -o -n foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe

    - stage: test
      name: "Wireguard Xenial & Commands"
      dist: xenial
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -w
      script: 
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_wireguard.conf
      after_script:
        - systemctl status wg-quick@wg0
        - pivpn add -n foo
        - pivpn -qr foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe

    - stage: test
      name: "OpenVPN Bionic & Commands"
      dist: bionic
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -o
      script:
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_openvpn.conf
        - systemctl status openvpn
        - pivpn add -n foo nopass -d 180
        - pivpn add -p "$RANDOM$RANDOM" -n bar -d 180
        - pivpn add -o -n foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe

    - stage: test
      name: "Wireguard Bionic & Commands"
      dist: bionic
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo apt update -y
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -w
      script: 
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_wireguard.conf
        - systemctl status wg-quick@wg0
        - pivpn add -n foo
        - pivpn -qr foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe

    - stage: test
      name: "OpenVPN Focal & Commands"
      dist: focal
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -o
      script:
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_openvpn.conf
        - systemctl status openvpn
        - pivpn add -n foo nopass -d 180
        - pivpn add -p "$RANDOM$RANDOM" -n bar -d 180
        - pivpn add -o -n foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe

    - stage: test
      name: "Wireguard Focal & Commands"
      dist: focal
      before_script: 
        - cat /etc/os-release
        - uname -a
        - sudo chmod +x ciscripts/startup.sh
        - ./ciscripts/startup.sh -w
      script: 
        - sudo ./auto_install/install.sh --unattended ciscripts/ci_wireguard.conf
        - systemctl status wg-quick@wg0
        - pivpn add -n foo
        - pivpn -qr foo
        - pivpn -bk
        - ls ~pi/pivpnbackup/ | grep backup
        - pivpn -l
        - pivpn -c
        - pivpn -r foo -y
      after_fail:
        - sudo journalctl -xe