name: Main on: [push, pull_request] jobs: lint: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2.3.1 with: python-version: '3.9' cache: 'pip' - name: Install dependencies run: | sudo apt update -y python -m pip install --upgrade pip pip install -r requirements.txt sudo snap install shellcheck pip install ansible-lint - name: Checks and linters run: | /snap/bin/shellcheck algo install.sh ansible-playbook main.yml --syntax-check ansible-lint -x experimental,package-latest,unnamed-task -v *.yml roles/{local,cloud-*}/*/*.yml scripted-deploy: runs-on: ubuntu-20.04 strategy: matrix: UBUNTU_VERSION: ["20.04"] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2.3.1 with: python-version: '3.9' cache: 'pip' - name: Install dependencies run: | sudo apt update -y sudo apt install -y \ wireguard \ libxml2-utils \ crudini \ fping \ strongswan \ libstrongswan-standard-plugins \ openresolv python3 -m pip install --upgrade pip python3 -m pip install -r requirements.txt sudo snap refresh lxd sudo lxd init --auto - name: Provision env: DEPLOY: cloud-init UBUNTU_VERSION: ${{ matrix.UBUNTU_VERSION }} REPOSITORY: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || github.repository }} BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }} run: | ssh-keygen -f ~/.ssh/id_rsa -t rsa -N '' # sed -i "s/^reduce_mtu:\s0$/reduce_mtu: 80/" config.cfg sudo -E ./tests/pre-deploy.sh - name: Deployment run: | until sudo lxc exec algo -- test -f /var/log/cloud-init-output.log; do echo 'Log file not found, Sleep for 3 seconds'; sleep 3; done ( sudo lxc exec algo -- tail -f /var/log/cloud-init-output.log & ) until sudo lxc exec algo -- test -f /var/lib/cloud/data/result.json; do echo 'Cloud init is not finished. Sleep for 30 seconds'; sleep 30; done sudo lxc exec algo -- test -f /opt/algo/configs/localhost/.config.yml sudo lxc exec algo -- tar zcf /root/algo-configs.tar -C /opt/algo/configs/ . sudo lxc file pull algo/root/algo-configs.tar ./ sudo tar -C ./configs -zxf algo-configs.tar - name: Tests run: | set -x sudo -E bash -x ./tests/wireguard-client.sh sudo env "PATH=$PATH" ./tests/ipsec-client.sh docker-deploy: runs-on: ubuntu-20.04 strategy: matrix: UBUNTU_VERSION: ["20.04"] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2.3.1 with: python-version: '3.9' cache: 'pip' - name: Install dependencies run: | set -x sudo apt update -y sudo apt install -y \ wireguard \ libxml2-utils \ crudini \ fping \ strongswan \ libstrongswan-standard-plugins \ openresolv python3 -m pip install --upgrade pip python3 -m pip install -r requirements.txt sudo snap refresh lxd sudo lxd init --auto - name: Provision env: DEPLOY: docker UBUNTU_VERSION: ${{ matrix.UBUNTU_VERSION }} REPOSITORY: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || github.repository }} BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }} run: | ssh-keygen -f ~/.ssh/id_rsa -t rsa -N '' sed -i "s/^reduce_mtu:\s0$/reduce_mtu: 80/" config.cfg sudo -E ./tests/pre-deploy.sh - name: Deployment env: DEPLOY: docker UBUNTU_VERSION: ${{ matrix.UBUNTU_VERSION }} run: | docker build -t local/algo . ./tests/local-deploy.sh ./tests/update-users.sh - name: Tests run: | set -x sudo bash -x ./tests/wireguard-client.sh sudo env "PATH=$PATH" bash -x ./tests/ipsec-client.sh sudo bash -x ./tests/ssh-tunnel.sh