142 lines
4.1 KiB
Makefile
142 lines
4.1 KiB
Makefile
|
LINT_ARGS ?= --timeout 5m
|
||
|
GORELEASER_VERSION ?= v1.13.1
|
||
|
GORELEASER_ARGS ?= release --snapshot --rm-dist
|
||
|
GITCHLOG_ARGS ?=
|
||
|
SHELL := /bin/bash
|
||
|
|
||
|
BOUNCER_VERSION ?=
|
||
|
GIT_VERSION := $(shell git describe --always)
|
||
|
DATE_VERSION := $(shell date +%Y.%-m.%-d)
|
||
|
FULL_VERSION := v$(DATE_VERSION)-$(GIT_VERSION)$(if $(shell git diff --stat),-dirty,)
|
||
|
|
||
|
DOCKER_IMAGE_NAME ?= cadoles/bouncer
|
||
|
DOCKER_IMAGE_TAG ?= $(FULL_VERSION)
|
||
|
|
||
|
GOTEST_ARGS ?= -short
|
||
|
|
||
|
OPENWRT_DEVICE ?= 192.168.1.1
|
||
|
|
||
|
watch: tools/modd/bin/modd deps ## Watching updated files - live reload
|
||
|
( set -o allexport && source .env && set +o allexport && tools/modd/bin/modd )
|
||
|
|
||
|
.PHONY: test
|
||
|
test: test-go ## Executing tests
|
||
|
|
||
|
test-go: deps
|
||
|
( set -o allexport && source .env && set +o allexport && go test -v -count=1 $(GOTEST_ARGS) ./... )
|
||
|
|
||
|
test-install-script: tools/bin/bash_unit
|
||
|
tools/bin/bash_unit ./misc/script/test_install.sh
|
||
|
|
||
|
tools/bin/bash_unit:
|
||
|
mkdir -p tools/bin
|
||
|
cd tools/bin && bash <(curl -s https://raw.githubusercontent.com/pgrange/bash_unit/master/install.sh)
|
||
|
|
||
|
lint: ## Lint sources code
|
||
|
golangci-lint run --enable-all $(LINT_ARGS)
|
||
|
|
||
|
build: build-bouncer ## Build artefacts
|
||
|
|
||
|
build-bouncer: deps ## Build executable
|
||
|
CGO_ENABLED=0 go build \
|
||
|
-v \
|
||
|
-ldflags "\
|
||
|
-X 'main.GitRef=$(shell git rev-parse --short HEAD)' \
|
||
|
-X 'main.ProjectVersion=$(FULL_VERSION)' \
|
||
|
-X 'main.BuildDate=$(shell date --utc --rfc-3339=seconds)' \
|
||
|
" \
|
||
|
-o ./bin/bouncer \
|
||
|
./cmd/bouncer
|
||
|
|
||
|
.env:
|
||
|
cp -f .env.dist .env
|
||
|
|
||
|
config.yml:
|
||
|
bin/bouncer config dump > config.yml
|
||
|
|
||
|
run: .env
|
||
|
( set -o allexport && source .env && set +o allexport && bin/bouncer $(BOUNCER_CMD))
|
||
|
|
||
|
.PHONY: deps
|
||
|
deps: .env
|
||
|
|
||
|
.PHONY: goreleaser
|
||
|
goreleaser: deps
|
||
|
( set -o allexport && source .env && set +o allexport && VERSION=$(GORELEASER_VERSION) curl -sfL https://goreleaser.com/static/run | GORELEASER_CURRENT_TAG="$(FULL_VERSION)" bash /dev/stdin $(GORELEASER_ARGS) )
|
||
|
|
||
|
.PHONY: start-release
|
||
|
start-release:
|
||
|
if [ -z "$(BOUNCER_VERSION)" ]; then echo "You must define environment variable BOUNCER_VERSION"; exit 1; fi
|
||
|
|
||
|
git flow release start $(BOUNCER_VERSION)
|
||
|
|
||
|
# Update package.json version
|
||
|
jq '.version = "$(BOUNCER_VERSION)"' package.json | sponge package.json
|
||
|
git add package.json
|
||
|
git commit -m "chore: bump to version $(BOUNCER_VERSION)" --allow-empty
|
||
|
|
||
|
echo "Commit you additional modifications then execute 'make finish-release'"
|
||
|
|
||
|
.PHONY: finish-release
|
||
|
finish-release:
|
||
|
git flow release finish -m "v$(BOUNCER_VERSION)"
|
||
|
git push --all
|
||
|
git push --tags
|
||
|
|
||
|
install-git-hooks:
|
||
|
git config core.hooksPath .githooks
|
||
|
|
||
|
docker-build:
|
||
|
docker build -t $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) .
|
||
|
|
||
|
docker-release:
|
||
|
docker push $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
|
||
|
|
||
|
gitea-release: tools/gitea-release/bin/gitea-release.sh goreleaser
|
||
|
mkdir -p .gitea-release
|
||
|
rm -rf .gitea-release/*
|
||
|
|
||
|
cp dist/*.tar.gz .gitea-release/
|
||
|
cp dist/*.apk .gitea-release/
|
||
|
cp dist/*.deb .gitea-release/
|
||
|
cp dist/*.rpm .gitea-release/
|
||
|
|
||
|
GITEA_RELEASE_PROJECT="bouncer" \
|
||
|
GITEA_RELEASE_ORG="Cadoles" \
|
||
|
GITEA_RELEASE_BASE_URL="https://forge.cadoles.com" \
|
||
|
GITEA_RELEASE_VERSION="$(FULL_VERSION)" \
|
||
|
GITEA_RELEASE_NAME="$(FULL_VERSION)" \
|
||
|
GITEA_RELEASE_COMMITISH_TARGET="$(GIT_VERSION)" \
|
||
|
GITEA_RELEASE_IS_DRAFT="false" \
|
||
|
GITEA_RELEASE_BODY="" \
|
||
|
GITEA_RELEASE_ATTACHMENTS="$$(find .gitea-release/* -type f)" \
|
||
|
tools/gitea-release/bin/gitea-release.sh
|
||
|
|
||
|
tools/gitea-release/bin/gitea-release.sh:
|
||
|
mkdir -p tools/gitea-release/bin
|
||
|
curl --output tools/gitea-release/bin/gitea-release.sh https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/gitea/gitea-release.sh
|
||
|
chmod +x tools/gitea-release/bin/gitea-release.sh
|
||
|
|
||
|
tools/modd/bin/modd:
|
||
|
mkdir -p tools/modd/bin
|
||
|
GOBIN=$(PWD)/tools/modd/bin go install github.com/cortesi/modd/cmd/modd@latest
|
||
|
|
||
|
full-version:
|
||
|
@echo $(FULL_VERSION)
|
||
|
|
||
|
.bouncer-token:
|
||
|
bin/bouncer auth create-token --role writer --subject dev-writer > .bouncer-token
|
||
|
|
||
|
run-redis:
|
||
|
docker kill bouncer-redis || exit 0
|
||
|
docker run --rm -t \
|
||
|
--name bouncer-redis \
|
||
|
-v $(PWD)/data/redis:/data \
|
||
|
-p 6379:6379 \
|
||
|
redis:alpine3.17 \
|
||
|
redis-server --save 60 1 --loglevel warning
|
||
|
|
||
|
redis-shell:
|
||
|
docker exec -it \
|
||
|
bouncer-redis \
|
||
|
redis-cli
|