summaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
blob: 6236dab11d06e8d98de404bd9eb4e6782e576f9e (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
97
98
99
name: "[Ubuntu] Test & check build"

on: [ push, pull_request ]

jobs:
  lint:
    name: Linting
    runs-on: ubuntu-latest

    steps:
      - uses: actions/setup-go@v3
        with:
          go-version: ^1.22
      - 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"
      - name: Install ruff
        run: pip install ruff
      - name: Run ruff
        run: |
          ruff check wrappers/python/eduvpn_common
          ruff format --check wrappers/python/eduvpn_common

  test:
    name: Run Tests
    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
      - uses: actions/setup-go@v3
        with:
          go-version: ^1.22
      - 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.22
      - run: make
      - uses: actions/upload-artifact@v3
        with:
          name: shared-lib
          path: exports/lib/
          retention-days: 1