| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: smoke-extra
- on:
- push:
- branches:
- - master
- pull_request:
- types: [opened, synchronize, labeled, reopened]
- paths:
- - '.github/workflows/smoke**'
- - '**Makefile'
- - '**.go'
- - '**.proto'
- - 'go.mod'
- - 'go.sum'
- jobs:
- smoke-extra-libvirt:
- if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'smoke-test-extra')
- name: ${{ matrix.target }}
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- target:
- - freebsd-amd64
- - openbsd-amd64
- - netbsd-amd64
- - linux-amd64-ipv6disable
- env:
- VAGRANT_DEFAULT_PROVIDER: libvirt
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version: '1.25'
- check-latest: true
- - name: add hashicorp source
- run: wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
- - name: install vagrant and libvirt
- run: |
- sudo apt-get update && sudo apt-get install -y vagrant libvirt-daemon-system libvirt-dev
- sudo chmod 666 /dev/kvm
- sudo usermod -aG libvirt $(whoami)
- sudo chmod 666 /var/run/libvirt/libvirt-sock
- vagrant plugin install vagrant-libvirt
- - name: ${{ matrix.target }}
- run: make smoke-vagrant/${{ matrix.target }}
- timeout-minutes: 30
- # linux-386 needs VirtualBox, which conflicts with KVM/libvirt -- isolated job.
- smoke-extra-virtualbox:
- if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'smoke-test-extra')
- name: linux-386
- runs-on: ubuntu-latest
- env:
- VAGRANT_DEFAULT_PROVIDER: virtualbox
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version: '1.25'
- check-latest: true
- - name: add hashicorp source
- run: wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
- - name: install vagrant and virtualbox
- run: |
- sudo apt-get update && sudo apt-get install -y vagrant virtualbox
- sudo rmmod kvm_amd kvm_intel kvm 2>/dev/null || true
- - name: linux-386
- run: make smoke-vagrant/linux-386
- timeout-minutes: 30
- smoke-windows:
- if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'smoke-test-extra')
- name: Run windows smoke test
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version: '1.25'
- check-latest: true
- # WSL2 + Ubuntu so the smoke can run a real linux peer with its own
- # netns. iputils-ping is needed for the in-WSL ping check. WSL1 has no
- # real kernel and would lack /dev/net/tun, so we have to force WSL2.
- - uses: Vampire/setup-wsl@v3
- with:
- distribution: Ubuntu-24.04
- additional-packages: iputils-ping iproute2
- # Vampire/setup-wsl provisions WSL1 even when the WSL2 platform is present.
- # Convert the distro to WSL2 explicitly before we try to use /dev/net/tun.
- - name: convert distro to WSL2
- shell: pwsh
- run: |
- wsl --set-version Ubuntu-24.04 2
- wsl --shutdown
- wsl --list --verbose
- - name: build windows nebula
- run: make bin-windows
- - name: build linux nebula for WSL
- shell: bash
- env:
- GOOS: linux
- GOARCH: amd64
- run: |
- mkdir -p build/linux-amd64
- go build -o build/linux-amd64/nebula ./cmd/nebula
- - name: run smoke-windows
- shell: pwsh
- working-directory: ./.github/workflows/smoke
- run: ./smoke-windows.ps1
- timeout-minutes: 15
|