Add ci/cd commit validation and a makefile to do common operations
All checks were successful
Validate the build / validate-build (push) Successful in 1m1s

This commit is contained in:
2025-05-20 22:21:34 +02:00
parent eae48cf9ae
commit 5f450e206f
3 changed files with 76 additions and 0 deletions

View File

@ -0,0 +1,40 @@
name: Validate the build
run-name: ${{ gitea.actor }} is validating
on: [push]
jobs:
validate-build:
runs-on: ubuntu-latest
container:
image: node:current-alpine
steps:
- name: Install dependencies
run: |
echo "https://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories
echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
apk update
apk add --no-cache git make bash go
GOBIN=/usr/local/bin go install mvdan.cc/gofumpt@latest
export "PATH=$PATH:/root/go/bin"
echo "---------------------"
echo "Go version:"
go version
echo "---------------------"
- name: Check out repository code
uses: actions/checkout@v4
- name: Fetch dependencies
run: |
go mod download
- name: Validate the code and formatting
run: |
make validate
- name: Run tests
run: |
make test

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/reports
/bin

34
Makefile Normal file
View File

@ -0,0 +1,34 @@
BINARY_DIR = bin
BINARIES = $(patsubst cmd/%/,%,$(wildcard cmd/*/))
.PHONY: all build test coverage validate clean purge $(BINARIES)
all: build
build: $(BINARIES)
$(BINARY_DIR):
mkdir -p $(BINARY_DIR)
$(BINARIES): %: $(BINARY_DIR)
go build -o $(BINARY_DIR)/$@ ./cmd/$@/
test:
go test ./... -cover
coverage:
mkdir -p reports/
go test -coverprofile=reports/coverage.out ./... && go tool cover -html=reports/coverage.out
validate:
@test -z "$(shell gofumpt -l .)" && echo "No files need formatting" || (echo "Incorrect formatting in:"; gofumpt -l .; exit 1)
go vet ./...
clean:
rm -rf $(BINARY_DIR)
go clean
purge: clean
rm -rf reports