Skip to content

Makefile abstraction

Makefile abstraction

To get the development process smoother, we can rely on Makefile abstract for some often-used commands:


Example of most used commands

For serving mkdocs

make serve-docs

For Testing

make test

For Deploying with docker-compose

make rebuild

All Makefile's targets

Refer to the current Makefile to validate all options:

CONTAINER_ID := $$(docker ps -aqf "name=budget-tracker-api-v2")

logs:
    docker logs $(CONTAINER_ID)

sonar:
    docker run -d -p 9000:9000 sonarqube:community && sleep 60
    docker run --net=host \
        --rm \
        -e SONAR_HOST_URL="http://localhost:9000"  \
        -v "$(pwd):/usr/src" \
        sonarsource/sonar-scanner-cli

static-docker-build:
    docker build . -t budget-tracker-api:local

test:
    shellcheck hack/docs/generate_api_docs.sh
    staticcheck -checks='-S1021' ./...
    go test ./... -cover -coverprofile=coverage.out 
    $(MAKE) helm-test
    shellcheck hack/docs/generate_api_docs.sh

helm-test:
    helm unittest -f helm/budget-tracker/templates/tests/deployment_test.yaml helm/budget-tracker --failfast --color
    helm unittest -f helm/budget-tracker/templates/tests/service_test.yaml helm/budget-tracker --failfast --color
    helm unittest -f helm/budget-tracker/templates/tests/secret_test.yaml helm/budget-tracker --failfast --color
    helm unittest -f helm/budget-tracker/templates/tests/hpa_test.yaml helm/budget-tracker --failfast --color
    helm unittest -f helm/budget-tracker/templates/tests/namespace_test.yaml helm/budget-tracker --failfast --color

helm-docs:
    helm-docs helm/budget-tracker/

rebuild:
    $(MAKE) helm-test
    docker-compose down; docker-compose up -d --build

rebuild-standalone:
    $(MAKE) helm-test
    docker-compose -f docker-compose-standalone.yml down; docker-compose -f docker-compose-standalone.yml up -d --build

k8s-apply:
    if [[ -f helm/budget-tracker/Chat.lock ]]; then rm helm/budget-tracker/Chart.lock; fi
    $(MAKE) helm-test
    $(MAKE) helm-docs
    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm repo update
    helm dependency build helm/budget-tracker
    helm template --release-name local-dev ./helm/budget-tracker | kubectl apply -f -
    if [[ -f helm/budget-tracker/Chart.lock ]]; then rm helm/budget-tracker/Chart.lock; fi

k8s-destroy:
    if [[ -f helm/budget-tracker/Chat.lock ]]; then rm helm/budget-tracker/Chart.lock; fi
    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm repo update
    helm dependency build helm/budget-tracker
    helm template --release-name local-dev ./helm/budget-tracker | kubectl delete -f -
    if [[ -f helm/budget-tracker/Chart.lock ]]; then rm helm/budget-tracker/Chart.lock; fi

generate-docs:
    $(MAKE) helm-test
    $(MAKE) helm-docs
    ./hack/docs/generate_api_docs.sh

serve-docs:
    $(MAKE) generate-docs
    $(MAKE) helm-docs
    mkdocs serve -f docs/mkdocs.yml