Files
meshstream/.github/workflows/pr-validation.yml
2025-05-02 13:20:57 -07:00

102 lines
2.2 KiB
YAML

name: PR Validation
on:
pull_request:
branches: [ "main" ]
workflow_dispatch:
env:
GO_VERSION: '1.24'
NODE_VERSION: '20'
jobs:
validate-go:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: true
- name: Install Protocol Buffers Compiler
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install protoc-gen-go
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Generate Protocol Buffers
run: make gen-proto
- name: Install Go dependencies
run: go mod download
- name: Run Go tests
run: make test
- name: Check go fmt
run: make fmt-check
- name: Build binary
run: make build
validate-web:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: 'web/pnpm-lock.yaml'
- name: Install pnpm
uses: pnpm/action-setup@v3
with:
version: latest
run_install: false
- name: Install web dependencies
working-directory: ./web
run: pnpm install
- name: Run ESLint
run: make web-lint
- name: Run web tests
run: make web-test
- name: Build web assets
run: make web-build
- name: Upload web test results
uses: actions/upload-artifact@v4
if: always()
with:
name: web-test-results
path: web/coverage
check-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
run: make docker-build
env:
MESHSTREAM_SITE_TITLE: "Meshstream Test"
MESHSTREAM_SITE_DESCRIPTION: "Meshtastic Network Monitoring Test"
- name: Check Docker image
run: docker images meshstream