From 5d0cc9e0721ada248c7b63daa2ddff65ad899ad5 Mon Sep 17 00:00:00 2001 From: 4s3ti <4s3ti@4s3ti.net> Date: Wed, 17 Aug 2022 21:47:50 +0200 Subject: [PATCH] feat(ossupport): Jammy Support & CI Updates Add support for Ubuntu Jammy (22.04) Add CI tests for Ubuntu Jammy Remove CI tests for Ubuntu Xenial Rename CI tests stages Add new CI Scripts to get pipeline code more "DRY" Update CI Scripts to exit on error with /bin/bash -e Add semantic-release settings Add CI Release step for PiVPN automated versioning --- .releaserc | 28 +++++++ .travis.yml | 172 +++++++++++++++------------------------- auto_install/install.sh | 5 +- ciscripts/pre_checks.sh | 5 ++ ciscripts/startup.sh | 2 +- ciscripts/test.sh | 63 ++++++++++++--- 6 files changed, 152 insertions(+), 123 deletions(-) create mode 100644 .releaserc create mode 100644 ciscripts/pre_checks.sh diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..bea7959 --- /dev/null +++ b/.releaserc @@ -0,0 +1,28 @@ +{ + "name": "pivpn", + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "./CHANGELOG.md" + } + ], + ["@semantic-release/github", { + "assets": [ + {"path": "dist/asset.min.css", "label": "CSS distribution"}, + {"path": "dist/asset.min.js", "label": "JS distribution"} + ] + }] + ], + "release": { + "branches": [ "master", "beta", "test" ] + }, + + "branches": [ + {name: 'master'}, + {name: 'beta', channel: 'beta', prerelease: true}, + {name: 'test', channel: 'test', prerelease: true} + ] +} diff --git a/.travis.yml b/.travis.yml index c83f447..522e4b5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ stages: - lint - style - test + - release branches: only: @@ -21,7 +22,7 @@ jobs: include: - stage: lint name: "Shellcheck lint" - dist: focal + dist: jammy addons: apt: packages: @@ -35,7 +36,7 @@ jobs: - stage: style name: "Shell Style Guide" - dist: xenial + dist: jammy addons: snaps: - shfmt @@ -47,151 +48,106 @@ jobs: - find scripts/ -type f -exec shfmt -d -i 2 -ci -sr -bn {} \; - stage: test - name: "OpenVPN Xenial & Commands" - dist: xenial - virt: vm - arch: amd64 - before_script: - - cat /etc/os-release - - uname -a - - ip 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 - virt: vm - arch: amd64 - before_script: - - cat /etc/os-release - - uname -a - - ip 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" + name: "OpenVPN Bionic (18.04)" dist: bionic virt: vm arch: amd64 before_script: - - cat /etc/os-release - - uname -a - - ip a - - sudo chmod +x ciscripts/startup.sh + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.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 + - ./ciscripts/test.sh -o after_fail: - sudo journalctl -xe - stage: test - name: "Wireguard Bionic & Commands" + name: "Wireguard Bionic (18.04)" dist: bionic virt: vm arch: amd64 before_script: - - cat /etc/os-release - - uname -a - - ip a - - sudo apt update -y - - sudo chmod +x ciscripts/startup.sh + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.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 + - ./ciscripts/test.sh -w after_fail: - sudo journalctl -xe - stage: test - name: "OpenVPN Focal & Commands" + name: "OpenVPN Focal (20.04)" dist: focal virt: vm arch: amd64 before_script: - - cat /etc/os-release - - uname -a - - ip a - - sudo chmod +x ciscripts/startup.sh + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.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 + - ./ciscripts/test.sh -o after_fail: - sudo journalctl -xe - stage: test - name: "Wireguard Focal & Commands" + name: "Wireguard Focal (20.04)" dist: focal virt: vm arch: amd64 before_script: - - cat /etc/os-release - - uname -a - - ip a - - sudo chmod +x ciscripts/startup.sh + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.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 + - ./ciscripts/test.sh -w after_fail: - sudo journalctl -xe + + - stage: test + name: "OpenVPN Jammy (22.04)" + dist: jammy + virt: vm + arch: amd64 + before_script: + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.sh + - ./ciscripts/startup.sh -o + script: + - sudo ./auto_install/install.sh --unattended ciscripts/ci_openvpn.conf + - ./ciscripts/test.sh -o + after_fail: + - sudo journalctl -xe + + - stage: test + name: "Wireguard Jammy (22.04)" + dist: jammy + virt: vm + arch: amd64 + before_script: + - sudo chmod +x ciscripts/*.sh + - ./ciscripts/pre_checks.sh + - ./ciscripts/startup.sh -w + script: + - sudo ./auto_install/install.sh --unattended ciscripts/ci_wireguard.conf + - ./ciscripts/test.sh -w + after_fail: + - sudo journalctl -xe + + - stage: "release" + name: "release" + if: type = push + dist: jammy + virt: vm + arch: amd64 + language: node_js + node_js: + - "node" + install: + - npm install @semantic-release/github -D + - npm install @semantic-release/changelog -D + script: + - npx semantic-release \ No newline at end of file diff --git a/auto_install/install.sh b/auto_install/install.sh index 66c1df3..8fed96b 100755 --- a/auto_install/install.sh +++ b/auto_install/install.sh @@ -351,7 +351,8 @@ distroCheck() { ["11"]="bullseye" ["16.04"]="xenial" ["18.04"]="bionic" - ["20.04"]="focal") + ["20.04"]="focal" + ["22.04"]="jammy") OSCN="${VER_MAP["${VER}"]}" # Alpine support @@ -363,7 +364,7 @@ distroCheck() { case "${PLAT}" in Debian | Raspbian | Ubuntu) case "${OSCN}" in - stretch | buster | bullseye | xenial | bionic | focal) + stretch | buster | bullseye | xenial | bionic | focal | jammy) : ;; *) diff --git a/ciscripts/pre_checks.sh b/ciscripts/pre_checks.sh new file mode 100644 index 0000000..2a06686 --- /dev/null +++ b/ciscripts/pre_checks.sh @@ -0,0 +1,5 @@ +#/bin/bash -e + +cat /etc/os-release +uname -a +ip a diff --git a/ciscripts/startup.sh b/ciscripts/startup.sh index aa03c8d..b411242 100644 --- a/ciscripts/startup.sh +++ b/ciscripts/startup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e interface=$(ip -o link \ | awk '{print $2}' \ diff --git a/ciscripts/test.sh b/ciscripts/test.sh index 2ba7e1f..6996747 100644 --- a/ciscripts/test.sh +++ b/ciscripts/test.sh @@ -1,14 +1,53 @@ -#!/bin/bash +#!/bin/bash -e -if command -v systemctl > /dev/null; then - systemctl status openvpn -elif command -v rc-service > /dev/null; then - rc-service openvpn status -fi +# Tests multiple pivpn commands -pivpn add -n foo -pivpn -qr foo -pivpn -bk -pivpn -l -pivpn -c -pivpn -r foo -y +testopenvpn() { + if command -v systemctl > /dev/null; then + systemctl status openvpn + elif command -v rc-service > /dev/null; then + rc-service openvpn status + fi + + pivpn add -n foo nopass -d 180 + pivpn add -p "$RANDOM$RANDOM" -n bar -d 180 + pivpn add -o -n foo + pivpn -bk + sudo ls ~pi/pivpnbackup/ | grep backup + pivpn -l + pivpn -c + pivpn -r foo -y + exit 0 +} + +testwireguard() { + if command -v systemctl > /dev/null; then + systemctl status wg-quick@wg0 + elif command -v rc-service > /dev/null; then + rc-service wg-quick status + fi + + pivpn add -n foo + pivpn -qr foo + pivpn -bk + sudo ls ~pi/pivpnbackup/ | grep backup + pivpn -l + pivpn -c + pivpn -r foo -y + exit 0 +} + +while true; do + case "${1}" in + -o | --openvpn) + testopenvpn + ;; + -w | --wireguard) + testwireguard + ;; + *) + err "unknown VPN protocol" + exit 1 + ;; + esac +done