mirror of
https://github.com/gogrlx/snack.git
synced 2026-04-02 05:08:42 -07:00
193 lines
5.9 KiB
YAML
193 lines
5.9 KiB
YAML
name: Integration Tests
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
branches: [master]
|
|
|
|
jobs:
|
|
unit-tests:
|
|
name: Unit Tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- run: go build ./...
|
|
- run: go vet ./...
|
|
- run: go test -race -coverprofile=coverage-unit.out ./...
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: coverage-unit
|
|
path: coverage-unit.out
|
|
|
|
debian:
|
|
name: Debian (apt)
|
|
runs-on: ubuntu-latest
|
|
container: debian:bookworm
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y sudo tree curl
|
|
- name: Integration tests
|
|
run: go test -v -tags integration -count=1 -coverprofile=coverage-debian.out ./apt/ ./dpkg/ ./detect/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-debian
|
|
path: coverage-debian.out
|
|
|
|
ubuntu:
|
|
name: Ubuntu (apt + snap)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y tree
|
|
sudo snap install hello-world 2>/dev/null; sudo snap remove hello-world 2>/dev/null
|
|
- name: Integration tests (apt)
|
|
run: sudo -E go test -v -tags integration -count=1 -coverprofile=coverage-ubuntu-apt.out ./apt/ ./dpkg/ ./detect/
|
|
- name: Integration tests (snap)
|
|
run: sudo -E go test -v -tags integration -count=1 -coverprofile=coverage-ubuntu-snap.out ./snap/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-ubuntu
|
|
path: coverage-ubuntu-*.out
|
|
|
|
fedora-dnf4:
|
|
name: Fedora 39 (dnf4)
|
|
runs-on: ubuntu-latest
|
|
container: fedora:39
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
dnf install -y tree sudo
|
|
- name: Integration tests
|
|
run: go test -v -tags integration -count=1 -coverprofile=coverage-fedora39.out ./dnf/ ./rpm/ ./detect/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-fedora39
|
|
path: coverage-fedora39.out
|
|
|
|
fedora-dnf5:
|
|
name: Fedora latest (dnf5)
|
|
runs-on: ubuntu-latest
|
|
container: fedora:latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
dnf install -y tree sudo
|
|
- name: Integration tests
|
|
run: go test -v -tags integration -count=1 -coverprofile=coverage-fedora-latest.out ./dnf/ ./rpm/ ./detect/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-fedora-latest
|
|
path: coverage-fedora-latest.out
|
|
|
|
alpine:
|
|
name: Alpine (apk)
|
|
runs-on: ubuntu-latest
|
|
container: alpine:latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
apk add --no-cache sudo tree bash
|
|
- name: Integration tests
|
|
run: go test -v -tags integration -count=1 -coverprofile=coverage-alpine.out ./apk/ ./detect/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-alpine
|
|
path: coverage-alpine.out
|
|
|
|
arch:
|
|
name: Arch Linux (pacman)
|
|
runs-on: ubuntu-latest
|
|
container: archlinux:latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Setup
|
|
run: |
|
|
pacman -Syu --noconfirm
|
|
pacman -S --noconfirm sudo tree
|
|
- name: Integration tests
|
|
run: go test -v -tags integration -count=1 -coverprofile=coverage-arch.out ./pacman/ ./detect/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-arch
|
|
path: coverage-arch.out
|
|
|
|
flatpak:
|
|
name: Ubuntu + Flatpak
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: Verify flatpak not installed
|
|
run: |
|
|
if command -v flatpak &>/dev/null; then echo "already installed"; else echo "not installed — good"; fi
|
|
- name: Install flatpak
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y flatpak
|
|
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
- name: Integration tests
|
|
run: sudo -E go test -v -tags integration -count=1 -coverprofile=coverage-flatpak.out ./flatpak/
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-flatpak
|
|
path: coverage-flatpak.out
|
|
|
|
codecov:
|
|
name: Upload Coverage
|
|
runs-on: ubuntu-latest
|
|
needs: [unit-tests, debian, ubuntu, fedora-dnf4, fedora-dnf5, alpine, arch, flatpak]
|
|
if: always()
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: coverage-*
|
|
merge-multiple: true
|
|
- name: List coverage files
|
|
run: ls -la coverage-*.out 2>/dev/null || echo "No coverage files found"
|
|
- uses: codecov/codecov-action@v5
|
|
with:
|
|
files: coverage-unit.out,coverage-debian.out,coverage-ubuntu-apt.out,coverage-ubuntu-snap.out,coverage-fedora39.out,coverage-fedora-latest.out,coverage-alpine.out,coverage-arch.out,coverage-flatpak.out
|
|
fail_ci_if_error: false
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|