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

View File

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

View File

@ -6,10 +6,10 @@ RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
FROM alpine FROM alpine
RUN apk --no-cache add go nodejs yarn bash curl git git-perl 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}" ENV PATH="/root/.yarn/bin/:${PATH}"
WORKDIR /src/web WORKDIR /src/web
ADD web/package.json web/yarn.lock /src/web/ ADD web/package.json web/yarn.lock /src/web/
RUN yarn
WORKDIR /src 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/ 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 command: task -w run
ports: ports:
- 1323:1323 - 1323:1323
user: '1000'
volumes: volumes:
- ~/budgeteer:/src - ~/budgeteer:/src
- ~/.go:/go - go-cache:/go
- ~/.cache:/.cache - yarn-cache:/.cache
environment: environment:
BUDGETEER_DB: postgres://budgeteer:budgeteer@db:5432/budgeteer BUDGETEER_DB: postgres://budgeteer:budgeteer@db:5432/budgeteer
BUDGETEER_SESSION_SECRET: random string for JWT authorization BUDGETEER_SESSION_SECRET: random string for JWT authorization
@ -19,13 +18,11 @@ services:
frontend: frontend:
image: hub.javil.eu/budgeteer:dev image: hub.javil.eu/budgeteer:dev
command: bash -c "cd web; yarn run dev" command: task frontend-dev
ports: ports:
- 3000:3000 - 3000:3000
user: '1000'
volumes: volumes:
- ~/budgeteer:/src - ~/budgeteer:/src
- ~/.cache:/.cache
depends_on: depends_on:
- backend - backend
@ -49,3 +46,5 @@ services:
volumes: volumes:
db: db:
go-cache:
yarn-cache:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -22,9 +22,6 @@
"@types/file-saver": "^2.0.5", "@types/file-saver": "^2.0.5",
"@typescript-eslint/parser": "^5.13.0", "@typescript-eslint/parser": "^5.13.0",
"@vitejs/plugin-vue": "^2.0.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": "^8.10.0",
"eslint-plugin-vue": "^8.5.0", "eslint-plugin-vue": "^8.5.0",
"prettier": "2.5.1", "prettier": "2.5.1",