name: "[Ubuntu] Test & check build" on: [ push, pull_request ] jobs: lint-go: name: Lint go runs-on: ubuntu-latest steps: - uses: actions/setup-go@v3 with: go-version: ^1.17 - uses: actions/checkout@v3 - name: Run golangci-lint uses: golangci/golangci-lint-action@v3 with: version: latest args: "-E stylecheck,revive,gocritic --out-${NO_FUTURE}format colored-line-number" test-go: name: Test Go runs-on: ubuntu-22.04 env: WEB_FQDN: eduvpnghci PORTAL_USER: ci PORTAL_PASS: ci steps: - uses: actions/checkout@v3 - name: Setup server run: | git clone https://codeberg.org/eduvpn/deploy cd deploy sudo cp resources/repo+v3@eduvpn.org.asc /etc/apt/trusted.gpg.d/repo+v3@eduvpn.org.asc echo "deb https://repo.eduvpn.org/v3/deb jammy main" | sudo tee /etc/apt/sources.list.d/eduVPN_v3.list sudo apt-get -y update sudo apt-get install -y vpn-user-portal vpn-server-node vpn-maint-scripts sudo openssl req -nodes -subj "/CN=${WEB_FQDN}" -addext "subjectAltName = DNS:${WEB_FQDN}" -x509 -sha256 -newkey rsa:2048 -keyout "/etc/ssl/private/${WEB_FQDN}.key" -out "/etc/ssl/certs/${WEB_FQDN}.crt" -days 90 # Apache 2 PHP_VERSION=$(/usr/sbin/phpquery -V) sudo a2enmod ssl headers rewrite proxy_fcgi setenvif sudo a2dismod status sudo a2enconf "php${PHP_VERSION}-fpm" sudo cp resources/ssl.debian.conf /etc/apache2/mods-available/ssl.conf sudo cp resources/vpn.example.debian.conf "/etc/apache2/sites-available/${WEB_FQDN}.conf" sudo cp resources/localhost.debian.conf /etc/apache2/sites-available/localhost.conf sudo sed -i "s/vpn.example/${WEB_FQDN}/" "/etc/apache2/sites-available/${WEB_FQDN}.conf" sudo a2enconf vpn-user-portal sudo a2ensite "${WEB_FQDN}" localhost sudo a2dissite 000-default sudo systemctl restart apache2 # NETWORK sudo cp /etc/vpn-user-portal/keys/node.0.key /etc/vpn-server-node/keys/node.key sudo systemctl enable --now "php${PHP_VERSION}-fpm" sudo systemctl enable --now apache2 sudo /usr/libexec/vpn-server-node/server-config sudo -u www-data vpn-user-portal-account --add "${PORTAL_USER}" --password "${PORTAL_PASS}" # Update /etc/hosts to point to our server echo "127.0.0.1 ${WEB_FQDN}" | sudo tee -a /etc/hosts - name: Install Go run: | wget https://go.dev/dl/go1.19.4.linux-amd64.tar.gz -q -O go.tar.gz echo "c9c08f783325c4cf840a94333159cc937f05f75d36a8b307951d5bd959cf2ab8 go.tar.gz" | sha256sum --check sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go.tar.gz - name: Selenium dependencies run: | sudo apt-get -y update sudo apt-get -y install tar python3 python3-selenium - name: Test Go run: | # Add geckodriver and go to path export PATH=$PATH:/usr/local/go/bin ## Run tests SERVER_URI=https://${WEB_FQDN} make test build-lib: name: Build shared Go library runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: ^1.17 - run: make - uses: actions/upload-artifact@v3 with: name: shared-lib path: exports/lib/ retention-days: 1