149 lines
3.5 KiB
YAML
149 lines
3.5 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: '3'
|
|
|
|
dotenv: ['.env.local', '.env']
|
|
|
|
vars:
|
|
version: '{{ coalesce .version .v "latest" }}'
|
|
folder: '{{ coalesce .folder .f "nginx" }}'
|
|
registry: '{{ coalesce .registry .r "gitea.bensherriff.com/bsherriff" }}'
|
|
platform: '{{ coalesce .platform .p "linux/amd64,linux/arm64" }}'
|
|
image: '{{.registry}}/aviation-{{.folder}}:{{.version}}'
|
|
build_date:
|
|
sh: date -u +%Y-%m-%dT%H:%M:%SZ
|
|
vcs_ref:
|
|
sh: git rev-parse HEAD
|
|
context: '{{ coalesce .context .ctx "." }}'
|
|
dockerfile: >
|
|
{{- if or (eq .folder "nginx") (eq .folder "ui") -}}
|
|
{{.folder}}/Dockerfile
|
|
{{- else if eq .folder "api" -}}
|
|
crates/api/Dockerfile
|
|
{{- else if eq .folder "scheduler" -}}
|
|
crates/scheduler/Dockerfile
|
|
{{- else -}}
|
|
{{ fail (printf "Invalid folder '%s'. Valid: nginx, ui, api, scheduler" .folder) }}
|
|
{{- end -}}
|
|
|
|
tasks:
|
|
default:
|
|
cmds:
|
|
- task: docker-up
|
|
silent: true
|
|
|
|
test:
|
|
cmds:
|
|
- task: docker-backend
|
|
- task: dev-servers
|
|
|
|
dev-servers:
|
|
deps:
|
|
- task: run-api
|
|
- task: run-scheduler
|
|
- task: run-ui
|
|
|
|
# API Commands
|
|
build-api:
|
|
dir: crates/api
|
|
cmd: cargo build
|
|
format-api:
|
|
dir: crates/api
|
|
cmd: cargo fmt
|
|
run-api:
|
|
dir: crates/api
|
|
cmd: cargo run
|
|
silent: true
|
|
|
|
# Scheduler Commands
|
|
build-scheduler:
|
|
dir: crates/scheduler
|
|
cmd: cargo build
|
|
format-scheduler:
|
|
dir: crates/scheduler
|
|
cmd: cargo fmt
|
|
run-scheduler:
|
|
dir: crates/scheduler
|
|
cmd: cargo run
|
|
silent: true
|
|
|
|
# UI Commands
|
|
build-ui:
|
|
dir: ui
|
|
cmd: npm run build
|
|
format-ui:
|
|
dir: ui
|
|
cmd: npm run format
|
|
clean-ui:
|
|
dir: ui
|
|
cmd: rm -rf node_modules dist stats.html
|
|
run-ui:
|
|
dir: ui
|
|
cmd: npm run dev
|
|
silent: true
|
|
|
|
# Docker Commands
|
|
docker-backend:
|
|
cmd: docker compose --profile backend up -d
|
|
docker-up:
|
|
cmd: docker compose --profile backend --profile api up -d
|
|
docker-down:
|
|
cmd: docker compose --profile backend --profile api down
|
|
docker-clean:
|
|
cmd: docker compose --profile backend --profile api down -v
|
|
docker-refresh:
|
|
cmds:
|
|
- task: docker-clean
|
|
- task: docker-up
|
|
|
|
build:
|
|
desc: Build a specific docker image from a folder
|
|
cmds:
|
|
- |
|
|
docker buildx build \
|
|
-f {{.dockerfile}} \
|
|
-t {{.image}} \
|
|
--load \
|
|
--build-arg BUILD_DATE={{.build_date}} \
|
|
--build-arg BUILD_VERSION={{.version}} \
|
|
--build-arg VCS_REF={{.vcs_ref}} \
|
|
{{.context}}
|
|
|
|
push:
|
|
desc: Build and push a specific docker image from a folder
|
|
cmds:
|
|
- |
|
|
docker buildx create \
|
|
--use \
|
|
--driver docker-container \
|
|
--bootstrap \
|
|
--name default-builder \
|
|
--platform {{.platform}} \
|
|
|| true
|
|
ignore_error: true
|
|
- |
|
|
docker buildx build \
|
|
-f {{.dockerfile}} \
|
|
--platform {{.platform}} \
|
|
-t {{.image}} \
|
|
--push \
|
|
--build-arg BUILD_DATE={{.build_date}} \
|
|
--build-arg BUILD_VERSION={{.version}} \
|
|
--build-arg VCS_REF={{.vcs_ref}} \
|
|
{{.context}}
|
|
.
|
|
|
|
psql:
|
|
cmd: docker exec -it aviation-postgres psql -U ${POSTGRES_USER} -d ${POSTGRES_DB} -P pager=off
|
|
|
|
cert:
|
|
cmds:
|
|
- ./scripts/generate_ca_cert.sh
|
|
- ./scripts/generate_server_cert.sh ${TLS_HOST} nginx
|
|
- ./scripts/generate_server_cert.sh ${API_HOST} api
|
|
silent: true
|
|
cert-clean:
|
|
cmds:
|
|
- rm -rf ./data/certificates
|
|
silent: true
|