Skip to content

Add more verification and caching to Actions Pipeline #8

Add more verification and caching to Actions Pipeline

Add more verification and caching to Actions Pipeline #8

Workflow file for this run

name: CI
on:
pull_request:
branches:
- main
jobs:
setup:
name: go mod download
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: setup cache
uses: actions/cache@v3
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download Dependencies
run: go mod download
fmt:
name: go fmt, vet, mod verify, mod tidy
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Run go fmt, vet, mod verify, mod tidy
run: |
go fmt ./...
git diff --exit-code
go vet ./...
git diff --exit-code
go mod verify
git diff --exit-code
go mod tidy
git diff --exit-code
lint:
name: golangci-Lint
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Run GolangCI-Lint
uses: golangci/golangci-lint-action@v8
with:
version: latest
security:
name: Vulnerability Check
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Run govulncheck
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
build:
name: build main.go
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Build Main Binary
run: go build -o main ./cmd/web/main.go
unit-tests:
name: unit-tests
needs: [fmt, lint, build]
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Run Unit Tests
run: go test -tags=unittest -v ./...
integration-tests:
name: integration-tests
needs: [fmt, lint, build, unit-tests]
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 1.24.3
- name: Run Integration Tests
run: go test -tags=integrationtest -v ./...