golang-fft/.github/workflows/build.yml
Sean Sube 2026148ba3
Some checks failed
Build and Test / test (push) Has been cancelled
Build and Test / docker-test (push) Has been cancelled
Build and Test / lint (push) Has been cancelled
Build and Test / security (push) Has been cancelled
raw robot output
2025-08-11 16:23:29 -05:00

130 lines
2.6 KiB
YAML

name: Build and Test
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Install dependencies
run: go mod download
- name: Run tests
run: go test -v .
- name: Run benchmarks
run: go test -bench=. -benchmem .
- name: Build application
run: go build -o fft .
- name: Check binary
run: |
ls -la fft
file fft
docker-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and test in Docker
run: |
# Create Dockerfile
cat > Dockerfile << 'EOF'
FROM golang:1.21-bullseye
WORKDIR /app
# Copy source files
COPY . .
# Download dependencies
RUN go mod download
# Build the application
RUN go build -o fft .
# Run tests
RUN go test -v .
# Run benchmarks
RUN go test -bench=. -benchmem .
# Show binary info
RUN ls -la fft
RUN file fft
# Show Go environment
RUN go version
RUN go env GOOS GOARCH GOAMD64
EOF
# Build container
docker build -t golang-fft .
# Run tests in container
docker run --rm golang-fft go test -v .
# Run benchmarks in container
docker run --rm golang-fft go test -bench=. -benchmem .
# Show binary info
docker run --rm golang-fft ls -la fft
docker run --rm golang-fft file fft
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: latest
security:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
if: always()
with:
sarif_file: 'trivy-results.sarif'