Merged in feature/localstackclean (pull request #53)

Clean Up Compose, Tasks, Fullsuite

* splitfiles
This commit is contained in:
Michael McGuinness
2025-02-05 22:45:32 +00:00
parent d0f4c5bd96
commit 9e6328d8f9
7 changed files with 119 additions and 41 deletions
+25
View File
@@ -0,0 +1,25 @@
---
services:
test-db:
image: postgres:17.2-alpine3.21
ports:
- 5432:5432
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_USER: ${DB_USER}
expose:
- 5432
volumes:
- test-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- test-server-network
volumes:
test-db-data:
networks:
test-server-network:
+28 -20
View File
@@ -33,16 +33,21 @@ tasks:
- touch .env
fullsuite:
cmds:
- task deps:tidy
- task build
- task lint
- task test:unit
- task test:integration:cmd:nocache
- task: deps:tidy
- task: compose:clean:test
- task: generate
- task: build:nogen
- task: lint:nogen
- task: test:unit:nogen
- task: test:integration:cmd:nocache
build:
deps:
- generate
cmds:
- task docker:build
- task: build:nogen
build:nogen:
cmds:
- task: docker:build
generate:
deps:
- db:generate
@@ -52,22 +57,25 @@ tasks:
deps:
- generate
cmds:
- task go:lint
- task db:lint
- task yaml:lint
- task json:lint
- task docker:lint
- task compose:lint
- task openapi:lint
- task: lint:nogen
lint:nogen:
cmds:
- task: go:lint
- task: db:lint
- task: yaml:lint
- task: json:lint
- task: docker:lint
- task: compose:lint
- task: openapi:lint
lint:fix:
cmds:
- task go:lint:fix
- task openapi:lint
- task db:lint
- task yaml:lint
- task json:lint:fix
- task docker:lint
- task compose:lint
- task: go:lint:fix
- task: openapi:lint
- task: db:lint
- task: yaml:lint
- task: json:lint:fix
- task: docker:lint
- task: compose:lint
go:lint:
cmds:
- golangci-lint run
+38 -6
View File
@@ -4,30 +4,62 @@
version: '3'
vars:
COMPOSE_FILE: "deployments/compose.yaml"
LOCAL_COMPOSE_FILE: "deployments/compose.local.yaml"
TEST_COMPOSE_FILE: "deployments/compose.test.yaml"
tasks:
build:test:
cmds:
- task: build
vars:
COMPOSE_FILE: '{{.TEST_COMPOSE_FILE}}'
build:
vars:
COMPOSE_FILE: '{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}'
cmds:
- docker compose -f {{.COMPOSE_FILE}} build
up:test:
cmds:
- docker compose -f {{.TEST_COMPOSE_FILE}} up --no-recreate -d
up:
cmds:
- docker compose -f {{.COMPOSE_FILE}} up --no-recreate -d
- task compose:init
- docker compose -f {{.LOCAL_COMPOSE_FILE}} up --no-recreate -d
- task: init
init:
cmds:
- aws sqs create-queue --queue-name $QNAME_DOCUMENT_CLEAN
- aws sqs create-queue --queue-name $QNAME_DOCUMENT_INIT
- aws sqs create-queue --queue-name $QNAME_QUERY_RUNNER
- aws s3 mb s3://$BUCKET_IN
down:test:
cmds:
- task: down
vars:
COMPOSE_FILE: '{{.TEST_COMPOSE_FILE}}'
down:
vars:
COMPOSE_FILE: '{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}'
cmds:
- docker compose -f {{.COMPOSE_FILE}} down
clean:
deps:
- down
clean:test:
cmds:
- task: down:test
- docker volume rm deployments_test-db-data
clean:
cmds:
- task: down
- docker volume rm deployments_db-data
lint:
cmds:
- task: lint:file
vars:
COMPOSE_FILE: '{{.LOCAL_COMPOSE_FILE}}'
- task: lint:file
vars:
COMPOSE_FILE: '{{.TEST_COMPOSE_FILE}}'
lint:file:
internal: true
vars:
COMPOSE_FILE: '{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}'
cmds:
- docker compose -f {{.COMPOSE_FILE}} config -q --resolve-image-digests
+12 -6
View File
@@ -8,13 +8,19 @@ vars:
tasks:
generate:
deps:
- mig
cmds:
- task db:mig
- sqlc generate --file sqlc.yml
lint:
deps:up:
internal: true
cmds:
- task compose:up:test
- sleep 3
lint:
deps:
- deps:up
cmds:
- task compose:up
- sleep 2
- sqlc vet --file sqlc.yml
mig:create:
cmds:
@@ -23,7 +29,7 @@ tasks:
test -z "$name" && echo "Error: Name is required." && exit 1
migrate create -ext sql -dir {{.MIGRATIONS}} $name
mig:
deps:
- deps:up
cmds:
- task compose:up
- sleep 2
- migrate -path {{.MIGRATIONS}} -database {{.DB_URI}} up
-3
View File
@@ -4,9 +4,6 @@
version: '3'
tasks:
download:
cmds:
- go mod download
tidy:novendor:
cmds:
- go mod tidy
+16 -6
View File
@@ -14,23 +14,33 @@ tasks:
cmds:
- rm -rf mocks/*
- mockery
unit:
cmds:
- task: unit:nocoverage
- task: unit:getcoverage
unit:short:
deps:
- mocks:generate
cmds:
- go test -short {{.INTERNAL}} {{.API}} {{.PKG}}
unit:nocoverage:
deps:
- mocks:generate
unit:nogen:
cmds:
- task: unit:cmd
- task: unit:getcoverage
unit:cmd:
internal: true
cmds:
- mkdir -p {{.OUT_DIR}}
- |
go test {{.INTERNAL}} {{.API}} {{.PKG}} \
-coverpkg={{.INTERNAL}},{{.API}},{{.PKG}} \
-coverprofile={{.COVERAGE_FILE}}
unit:
unit:nocoverage:
deps:
- unit:nocoverage
- mocks:generate
cmds:
- task: unit:cmd
unit:getcoverage:
vars:
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out"
@@ -53,7 +63,7 @@ tasks:
cmds:
- task generate
- task docker:build
- task test:integration:cmd:nocache
- task: integration:cmd:nocache
integration:cmd:nocache:
cmds:
- go test -count=1 -v ./test/...