From 6b3026dc8e0f7277757b7b36e83c1a229ffbd776 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Fri, 8 Apr 2022 20:14:40 +0000 Subject: [PATCH] Improve dev container and taskfile --- Taskfile.yml | 137 +++++++++++++++------------ cmd/budgeteer/main.go | 8 +- docker/Dockerfile.dev | 4 +- docker/docker-compose.dev.yml | 11 +-- postgres/accounts.sql.go | 2 + postgres/assignments.sql.go | 2 + postgres/budgets.sql.go | 2 + postgres/categories.sql.go | 2 + postgres/cumultative-balances.sql.go | 2 + postgres/db.go | 2 + postgres/models.go | 2 + postgres/payees.sql.go | 2 + postgres/transactions.sql.go | 2 + postgres/user_budgets.sql.go | 2 + postgres/users.sql.go | 2 + web/package.json | 3 - 16 files changed, 110 insertions(+), 75 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 92e2fdc..2f165d9 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -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 @@ -103,17 +126,11 @@ tasks: - ./web/package.json - ./web/yarn.lock cmds: - - docker build -t {{.IMAGE_NAME}}:dev . -f docker/Dockerfile.dev - - docker push {{.IMAGE_NAME}}:dev - - run: - desc: Start budgeteer - deps: [build-dev] + - docker build -t {{.IMAGE_NAME}}:dev . -f docker/Dockerfile.dev + - docker push {{.IMAGE_NAME}}: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 \ No newline at end of file diff --git a/cmd/budgeteer/main.go b/cmd/budgeteer/main.go index 71b6eb1..8f9d1d7 100644 --- a/cmd/budgeteer/main.go +++ b/cmd/budgeteer/main.go @@ -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{ diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev index 6b2533d..dcccf17 100644 --- a/docker/Dockerfile.dev +++ b/docker/Dockerfile.dev @@ -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/ \ No newline at end of file diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 50d5413..d7245cf 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -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: diff --git a/postgres/accounts.sql.go b/postgres/accounts.sql.go index e14b73a..e9ad575 100644 --- a/postgres/accounts.sql.go +++ b/postgres/accounts.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: accounts.sql package postgres diff --git a/postgres/assignments.sql.go b/postgres/assignments.sql.go index 633b6d0..efbd1d9 100644 --- a/postgres/assignments.sql.go +++ b/postgres/assignments.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: assignments.sql package postgres diff --git a/postgres/budgets.sql.go b/postgres/budgets.sql.go index 780c998..6d3183e 100644 --- a/postgres/budgets.sql.go +++ b/postgres/budgets.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: budgets.sql package postgres diff --git a/postgres/categories.sql.go b/postgres/categories.sql.go index d31dd18..429ccf9 100644 --- a/postgres/categories.sql.go +++ b/postgres/categories.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: categories.sql package postgres diff --git a/postgres/cumultative-balances.sql.go b/postgres/cumultative-balances.sql.go index ea7e6ef..98f3aed 100644 --- a/postgres/cumultative-balances.sql.go +++ b/postgres/cumultative-balances.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: cumultative-balances.sql package postgres diff --git a/postgres/db.go b/postgres/db.go index 8d02508..4593f0b 100644 --- a/postgres/db.go +++ b/postgres/db.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 package postgres diff --git a/postgres/models.go b/postgres/models.go index 8e01747..0763fd4 100644 --- a/postgres/models.go +++ b/postgres/models.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 package postgres diff --git a/postgres/payees.sql.go b/postgres/payees.sql.go index 005562d..1e9f25b 100644 --- a/postgres/payees.sql.go +++ b/postgres/payees.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: payees.sql package postgres diff --git a/postgres/transactions.sql.go b/postgres/transactions.sql.go index d238098..68ec37c 100644 --- a/postgres/transactions.sql.go +++ b/postgres/transactions.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: transactions.sql package postgres diff --git a/postgres/user_budgets.sql.go b/postgres/user_budgets.sql.go index 4740c0e..7ecb0dd 100644 --- a/postgres/user_budgets.sql.go +++ b/postgres/user_budgets.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: user_budgets.sql package postgres diff --git a/postgres/users.sql.go b/postgres/users.sql.go index bd295b2..07b9b26 100644 --- a/postgres/users.sql.go +++ b/postgres/users.sql.go @@ -1,4 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.13.0 // source: users.sql package postgres diff --git a/web/package.json b/web/package.json index 0ab8faf..8e43209 100644 --- a/web/package.json +++ b/web/package.json @@ -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",