2022-01-17 14:01:58 +01:00
|
|
|
name: Test Code Linux
|
2022-10-02 21:17:16 +02:00
|
|
|
|
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- main
|
|
|
|
pull_request:
|
2022-06-24 14:50:14 +02:00
|
|
|
|
2023-04-13 17:00:01 +02:00
|
|
|
concurrency:
|
|
|
|
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.actor_id }}
|
|
|
|
cancel-in-progress: true
|
|
|
|
|
2021-06-03 11:39:19 +02:00
|
|
|
jobs:
|
|
|
|
test:
|
|
|
|
strategy:
|
|
|
|
matrix:
|
2024-03-21 16:49:28 +01:00
|
|
|
arch: [ '386','amd64' ]
|
2024-06-13 12:39:19 +02:00
|
|
|
store: [ 'sqlite', 'postgres']
|
2024-10-09 20:17:25 +02:00
|
|
|
runs-on: ubuntu-22.04
|
2021-06-03 11:39:19 +02:00
|
|
|
steps:
|
|
|
|
- name: Install Go
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/setup-go@v5
|
2021-06-03 11:39:19 +02:00
|
|
|
with:
|
2024-09-12 13:46:28 +02:00
|
|
|
go-version: "1.23.x"
|
2022-03-22 13:12:11 +01:00
|
|
|
|
2022-01-17 14:01:58 +01:00
|
|
|
|
|
|
|
- name: Cache Go modules
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/cache@v4
|
2022-01-17 14:01:58 +01:00
|
|
|
with:
|
|
|
|
path: ~/go/pkg/mod
|
|
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
|
|
restore-keys: |
|
|
|
|
${{ runner.os }}-go-
|
|
|
|
|
2021-06-03 11:39:19 +02:00
|
|
|
- name: Checkout code
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-01-17 14:01:58 +01:00
|
|
|
|
2022-03-20 17:36:35 +01:00
|
|
|
- name: Install dependencies
|
2024-04-08 18:56:52 +02:00
|
|
|
run: sudo apt update && sudo apt install -y -q libgtk-3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-multilib libpcap-dev
|
|
|
|
|
|
|
|
- name: Install 32-bit libpcap
|
|
|
|
if: matrix.arch == '386'
|
|
|
|
run: sudo dpkg --add-architecture i386 && sudo apt update && sudo apt-get install -y libpcap0.8-dev:i386
|
2022-03-20 17:36:35 +01:00
|
|
|
|
2022-01-17 14:01:58 +01:00
|
|
|
- name: Install modules
|
|
|
|
run: go mod tidy
|
|
|
|
|
2024-02-23 12:00:43 +01:00
|
|
|
- name: check git status
|
|
|
|
run: git --no-pager diff --exit-code
|
|
|
|
|
2021-06-03 11:39:19 +02:00
|
|
|
- name: Test
|
2024-09-16 15:47:03 +02:00
|
|
|
run: CGO_ENABLED=1 GOARCH=${{ matrix.arch }} NETBIRD_STORE_ENGINE=${{ matrix.store }} go test -exec 'sudo --preserve-env=CI,NETBIRD_STORE_ENGINE' -timeout 6m -p 1 ./...
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
test_client_on_docker:
|
2023-10-12 15:42:36 +02:00
|
|
|
runs-on: ubuntu-20.04
|
2022-09-14 22:26:11 +02:00
|
|
|
steps:
|
|
|
|
- name: Install Go
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/setup-go@v5
|
2022-09-14 22:26:11 +02:00
|
|
|
with:
|
2024-09-12 13:46:28 +02:00
|
|
|
go-version: "1.23.x"
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Cache Go modules
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/cache@v4
|
2022-09-14 22:26:11 +02:00
|
|
|
with:
|
|
|
|
path: ~/go/pkg/mod
|
|
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
|
|
restore-keys: |
|
|
|
|
${{ runner.os }}-go-
|
|
|
|
|
|
|
|
- name: Checkout code
|
2024-09-11 21:49:05 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Install dependencies
|
2024-04-08 18:56:52 +02:00
|
|
|
run: sudo apt update && sudo apt install -y -q libgtk-3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-multilib libpcap-dev
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Install modules
|
|
|
|
run: go mod tidy
|
|
|
|
|
2024-02-23 12:00:43 +01:00
|
|
|
- name: check git status
|
|
|
|
run: git --no-pager diff --exit-code
|
|
|
|
|
2022-09-14 22:26:11 +02:00
|
|
|
- name: Generate Iface Test bin
|
2024-10-02 18:24:22 +02:00
|
|
|
run: CGO_ENABLED=0 go test -c -o iface-testing.bin ./client/iface/
|
2022-09-14 22:26:11 +02:00
|
|
|
|
2023-05-03 14:47:44 +02:00
|
|
|
- name: Generate Shared Sock Test bin
|
|
|
|
run: CGO_ENABLED=0 go test -c -o sharedsock-testing.bin ./sharedsock
|
|
|
|
|
2022-09-14 22:26:11 +02:00
|
|
|
- name: Generate RouteManager Test bin
|
2024-06-13 13:24:24 +02:00
|
|
|
run: CGO_ENABLED=0 go test -c -o routemanager-testing.bin ./client/internal/routemanager
|
|
|
|
|
|
|
|
- name: Generate SystemOps Test bin
|
|
|
|
run: CGO_ENABLED=1 go test -c -o systemops-testing.bin -tags netgo -ldflags '-w -extldflags "-static -ldbus-1 -lpcap"' ./client/internal/routemanager/systemops
|
2022-09-14 22:26:11 +02:00
|
|
|
|
2023-05-29 16:00:18 +02:00
|
|
|
- name: Generate nftables Manager Test bin
|
|
|
|
run: CGO_ENABLED=0 go test -c -o nftablesmanager-testing.bin ./client/firewall/nftables/...
|
|
|
|
|
2022-09-14 22:26:11 +02:00
|
|
|
- name: Generate Engine Test bin
|
2023-10-12 15:42:36 +02:00
|
|
|
run: CGO_ENABLED=1 go test -c -o engine-testing.bin ./client/internal
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Generate Peer Test bin
|
2023-04-27 17:50:45 +02:00
|
|
|
run: CGO_ENABLED=0 go test -c -o peer-testing.bin ./client/internal/peer/...
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- run: chmod +x *testing.bin
|
|
|
|
|
2023-05-03 14:47:44 +02:00
|
|
|
- name: Run Shared Sock tests in docker
|
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/sharedsock --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/sharedsock-testing.bin -test.timeout 5m -test.parallel 1
|
|
|
|
|
2022-09-14 22:26:11 +02:00
|
|
|
- name: Run Iface tests in docker
|
2022-09-30 13:47:11 +02:00
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/iface --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/iface-testing.bin -test.timeout 5m -test.parallel 1
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Run RouteManager tests in docker
|
2022-09-30 13:47:11 +02:00
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/internal/routemanager --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/routemanager-testing.bin -test.timeout 5m -test.parallel 1
|
2022-09-14 22:26:11 +02:00
|
|
|
|
2024-06-13 13:24:24 +02:00
|
|
|
- name: Run SystemOps tests in docker
|
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/internal/routemanager/systemops --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/systemops-testing.bin -test.timeout 5m -test.parallel 1
|
|
|
|
|
2023-05-29 16:00:18 +02:00
|
|
|
- name: Run nftables Manager tests in docker
|
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/firewall --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/nftablesmanager-testing.bin -test.timeout 5m -test.parallel 1
|
|
|
|
|
2023-10-12 15:42:36 +02:00
|
|
|
- name: Run Engine tests in docker with file store
|
2023-10-16 11:19:39 +02:00
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/internal -e NETBIRD_STORE_ENGINE="jsonfile" --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/engine-testing.bin -test.timeout 5m -test.parallel 1
|
2024-03-21 16:49:28 +01:00
|
|
|
|
2023-10-12 15:42:36 +02:00
|
|
|
- name: Run Engine tests in docker with sqlite store
|
2023-10-16 11:19:39 +02:00
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/internal -e NETBIRD_STORE_ENGINE="sqlite" --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/engine-testing.bin -test.timeout 5m -test.parallel 1
|
2022-09-14 22:26:11 +02:00
|
|
|
|
|
|
|
- name: Run Peer tests in docker
|
2024-09-11 21:49:05 +02:00
|
|
|
run: docker run -t --cap-add=NET_ADMIN --privileged --rm -v $PWD:/ci -w /ci/client/internal/peer --entrypoint /busybox/sh gcr.io/distroless/base:debug -c /ci/peer-testing.bin -test.timeout 5m -test.parallel 1
|