summaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
blob: 9930eb7e85a05e7fa94e133331b568c9520e6bfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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://github.com/eduvpn/documentation
          cd documentation
          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