Improve dev container and taskfile
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing

This commit is contained in:
Jan Bader 2022-04-08 20:14:40 +00:00
parent 9b5119d3dd
commit 6b3026dc8e
16 changed files with 110 additions and 75 deletions

View File

@ -5,31 +5,32 @@ vars:
tasks:
default:
desc: Build budgeteer in production mode
deps: [frontend, cover]
cmds:
- task: build-prod
- task: backend
- task: cover
sqlc:
desc: sqlc code generation
sources:
- ./sqlc.yaml
- ./postgres/schema/*
- ./postgres/queries/*
generates:
- ./postgres/*.sql.go
run:
desc: Start budgeteer
deps: [backend]
cmds:
- sqlc generate
- ./build/budgeteer{{exeExt}}
gomod:
desc: Go modules
sources:
- ./go.mod
- ./go.sum
method: checksum
dev:
desc: Build budgeteer in dev mode (without frontend)
cmds:
- go mod download
- task: backend
build:
ci:
desc: Run CI build
deps: [go-lint, go-vet, go-fmt, js-tsc, js-lint]
cmds:
- task: default
backend:
desc: Build budgeteer
deps: [go-mod, go-sqlc]
sources:
- ./go.mod
- ./go.sum
@ -43,29 +44,37 @@ tasks:
cmds:
- go build -o ./build/budgeteer{{exeExt}} ./cmd/budgeteer
build-dev:
desc: Build budgeteer in dev mode
deps: [gomod, sqlc]
go-vet:
cmds:
- go vet
- go fmt
- golangci-lint run
- task: build
build-prod:
desc: Build budgeteer in prod mode
deps: [gomod, sqlc, frontend]
go-fmt:
cmds:
- go vet
- go fmt
- golangci-lint run
- task: build
ci:
desc: Run CI build
go-lint:
cmds:
- task: build-prod
- task: cover
- golangci-lint run
go-sqlc:
desc: sqlc code generation
sources:
- ./sqlc.yaml
- ./postgres/schema/*
- ./postgres/queries/*
generates:
- ./postgres/*.sql.go
cmds:
- sqlc generate
go-mod:
desc: Go modules
sources:
- ./go.mod
- ./go.sum
method: checksum
cmds:
- go mod download
cover:
desc: Run test and analyze coverage
@ -75,26 +84,40 @@ tasks:
frontend:
desc: Build vue frontend
dir: web
deps: [js-build]
sources:
- web/src/**/*
generates:
- web/dist/**/*
frontend-dev:
desc: Run dev-server for frontend
dir: web
cmds:
- yarn run dev
js-build:
dir: web
deps: [js-mod]
cmds:
- yarn build
js-mod:
dir: web
cmds:
- yarn
- yarn build
- yarn run vue-tsc --noEmit
- yarn run eslint "./src/**"
docker:
desc: Build budgeeter:latest
deps: [build-prod]
sources:
- ./build/budgeteer{{exeExt}}
- ./build/Dockerfile
js-tsc:
dir: web
deps: [js-mod]
cmds:
- docker build -t {{.IMAGE_NAME}}:latest ./build
- docker push {{.IMAGE_NAME}}:latest
- yarn run vue-tsc --noEmit
js-lint:
dir: web
deps: [js-mod]
cmds:
- yarn run eslint "./src/**"
dev-docker:
desc: Build budgeeter:dev
@ -106,14 +129,8 @@ tasks:
- docker build -t {{.IMAGE_NAME}}:dev . -f docker/Dockerfile.dev
- docker push {{.IMAGE_NAME}}:dev
run:
desc: Start budgeteer
deps: [build-dev]
run-dev:
desc: Run dev environment in docker
deps: [dev-docker]
cmds:
- ./build/budgeteer{{exeExt}}
rundocker:
desc: Start docker-compose
deps: [docker]
cmds:
- docker-compose up -d
- docker-compose -f docker/docker-compose.dev.yml -p budgeteer up -d

View File

@ -17,22 +17,22 @@ import (
func main() {
cfg, err := config.LoadConfig()
if err != nil {
log.Fatalf("Could not load config: %v", err)
log.Fatalf("load config: %v", err)
}
queries, err := postgres.Connect("pgx", cfg.DatabaseConnection)
if err != nil {
log.Fatalf("Failed connecting to DB: %v", err)
log.Fatalf("connect to database: %v", err)
}
static, err := fs.Sub(web.Static, "dist")
if err != nil {
panic("couldn't open static files")
panic("open static files")
}
tokenVerifier, err := jwt.NewTokenVerifier(cfg.SessionSecret)
if err != nil {
panic(fmt.Errorf("couldn't create token verifier: %w", err))
panic(fmt.Errorf("create token verifier: %w", err))
}
handler := &server.Handler{

View File

@ -6,10 +6,10 @@ RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
FROM alpine
RUN apk --no-cache add go nodejs yarn bash curl git git-perl
RUN yarn global add @vue/cli
ENV PATH="/root/.yarn/bin/:${PATH}"
WORKDIR /src/web
ADD web/package.json web/yarn.lock /src/web/
RUN yarn
WORKDIR /src
VOLUME /go
VOLUME /.cache
COPY --from=godeps /root/go/bin/task /root/go/bin/sqlc /root/go/bin/golangci-lint /usr/local/bin/

View File

@ -6,11 +6,10 @@ services:
command: task -w run
ports:
- 1323:1323
user: '1000'
volumes:
- ~/budgeteer:/src
- ~/.go:/go
- ~/.cache:/.cache
- go-cache:/go
- yarn-cache:/.cache
environment:
BUDGETEER_DB: postgres://budgeteer:budgeteer@db:5432/budgeteer
BUDGETEER_SESSION_SECRET: random string for JWT authorization
@ -19,13 +18,11 @@ services:
frontend:
image: hub.javil.eu/budgeteer:dev
command: bash -c "cd web; yarn run dev"
command: task frontend-dev
ports:
- 3000:3000
user: '1000'
volumes:
- ~/budgeteer:/src
- ~/.cache:/.cache
depends_on:
- backend
@ -49,3 +46,5 @@ services:
volumes:
db:
go-cache:
yarn-cache:

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: accounts.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: assignments.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: budgets.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: categories.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: cumultative-balances.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: payees.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: transactions.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: user_budgets.sql
package postgres

View File

@ -1,4 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.13.0
// source: users.sql
package postgres

View File

@ -22,9 +22,6 @@
"@types/file-saver": "^2.0.5",
"@typescript-eslint/parser": "^5.13.0",
"@vitejs/plugin-vue": "^2.0.0",
"@vue/cli-plugin-babel": "5.0.0-beta.7",
"@vue/cli-plugin-typescript": "~4.5.0",
"@vue/cli-service": "5.0.0-beta.7",
"eslint": "^8.10.0",
"eslint-plugin-vue": "^8.5.0",
"prettier": "2.5.1",