Improve dev container and taskfile
This commit is contained in:
parent
9b5119d3dd
commit
6b3026dc8e
129
Taskfile.yml
129
Taskfile.yml
@ -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
|
|
@ -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{
|
||||||
|
@ -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/
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user