Develop #3
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,3 +6,4 @@ katenary
|
||||
*.env
|
||||
docker-compose*
|
||||
!examples/**/docker-compose*
|
||||
.credentials
|
||||
|
87
Makefile
87
Makefile
@@ -5,11 +5,12 @@ CTN:=$(shell which podman 2>&1 1>/dev/null && echo "podman" || echo "docker")
|
||||
PREFIX=~/.local
|
||||
|
||||
GO=container
|
||||
BLD_CMD=go build -o katenary -ldflags="-X 'main.Version=$(VERSION)'" ./cmd/*.go
|
||||
OUT=katenary
|
||||
BLD_CMD=go build -ldflags="-X 'main.Version=$(VERSION)'" -o $(OUT) ./cmd/*.go
|
||||
GOOS=linux
|
||||
GOARCH=amd64
|
||||
|
||||
BUILD_IMAGE=docker.io/golang:1.17
|
||||
BUILD_IMAGE=docker.io/golang:1.18-alpine
|
||||
|
||||
.PHONY: help clean build
|
||||
|
||||
@@ -46,11 +47,9 @@ help:
|
||||
$$ make build-all
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
build: pull katenary
|
||||
|
||||
build-all: pull dist dist/katenary-linux-amd64 dist/katenary-linux-arm64 dist/katenary.exe dist/katenary-darwin
|
||||
build-all: pull dist dist/katenary-linux-amd64 dist/katenary-linux-arm64 dist/katenary.exe dist/katenary-darwin-amd64 dist/katenary-freebsd-amd64 dist/katenary-freebsd-arm64
|
||||
|
||||
pull:
|
||||
ifneq ($(GO),local)
|
||||
@@ -62,47 +61,54 @@ dist:
|
||||
mkdir -p dist
|
||||
|
||||
dist/katenary-linux-amd64:
|
||||
@echo -e "\033[1;32mBuilding katenary for linux-amd64...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=amd64
|
||||
strip katenary
|
||||
mv katenary dist/katenary-linux-amd64
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for linux-amd64...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=amd64 OUT=$@
|
||||
|
||||
|
||||
dist/katenary-linux-arm64:
|
||||
@echo -e "\033[1;32mBuilding katenary for linux-arm...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=arm64
|
||||
strip katenary
|
||||
mv katenary dist/katenary-linux-arm64
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for linux-arm...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=arm64 OUT=$@
|
||||
|
||||
dist/katenary.exe:
|
||||
@echo -e "\033[1;32mBuilding katenary for windows...\033[0m"
|
||||
$(MAKE) katenary GOOS=windows GOARCH=amd64
|
||||
strip katenary
|
||||
mv katenary dist/katenary-windows.exe
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for windows...\033[0m"
|
||||
$(MAKE) katenary GOOS=windows GOARCH=amd64 OUT=$@
|
||||
|
||||
dist/katenary-darwin:
|
||||
@echo -e "\033[1;32mBuilding katenary for darwin...\033[0m"
|
||||
$(MAKE) katenary GOOS=darwin GOARCH=amd64
|
||||
strip katenary
|
||||
mv katenary dist/katenary-darwin
|
||||
dist/katenary-darwin-amd64:
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for darwin...\033[0m"
|
||||
$(MAKE) katenary GOOS=darwin GOARCH=amd64 OUT=$@
|
||||
|
||||
dist/katenary-freebsd-amd64:
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for freebsd...\033[0m"
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=amd64 OUT=$@
|
||||
|
||||
dist/katenary-freebsd-arm64:
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for freebsd-arm64...\033[0m"
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=arm64 OUT=$@
|
||||
|
||||
katenary: $(wildcard */*.go Makefile go.mod go.sum)
|
||||
@echo -e "\033[1;33mBuilding katenary $(VERSION)...\033[0m"
|
||||
ifeq ($(GO),local)
|
||||
@echo "=> Build in host using go"
|
||||
@echo
|
||||
else
|
||||
@echo "=> Build in container using" $(CTN)
|
||||
@echo
|
||||
endif
|
||||
echo $(BLD_CMD)
|
||||
ifeq ($(GO),local)
|
||||
$(BLD_CMD)
|
||||
else ifeq ($(CTN),podman)
|
||||
@podman run -e CGO_ENABLED=0 -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) --rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --userns keep-id -it docker.io/golang $(BLD_CMD)
|
||||
@podman run -e CGO_ENABLED=0 -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) \
|
||||
--rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --userns keep-id -it docker.io/golang $(BLD_CMD)
|
||||
else
|
||||
@docker run -e CGO_ENABLED=0 -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) --rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --user $(shell id -u):$(shell id -g) -e HOME=/tmp -it docker.io/golang $(BLD_CMD)
|
||||
@docker run -e CGO_ENABLED=0 -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) \
|
||||
--rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --user $(shell id -u):$(shell id -g) -e HOME=/tmp -it docker.io/golang $(BLD_CMD)
|
||||
endif
|
||||
echo "=> Stripping if possible"
|
||||
strip $(OUT) 2>/dev/null || echo "=> No strip available"
|
||||
|
||||
|
||||
|
||||
@@ -116,6 +122,33 @@ clean:
|
||||
rm -f katenary
|
||||
rm -rf dist
|
||||
|
||||
|
||||
tests: test
|
||||
test:
|
||||
@echo -e "\033[1;33mTesting katenary $(VERSION)...\033[0m"
|
||||
go test -v ./...
|
||||
|
||||
|
||||
.ONESHELL:
|
||||
push-release:
|
||||
@rm -f release.id
|
||||
# read personal access token from .git-credentials
|
||||
TOKEN=$(shell cat .credentials)
|
||||
# create the body of the release from latest tag
|
||||
# create a new release based on current tag and get the release id
|
||||
@curl -sSL -X POST \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "Authorization: token $$TOKEN" \
|
||||
-d "{\"tag_name\": \"$(VERSION)\", \"target_commitish\": \"\", \"name\": \"$(VERSION)\", \"draft\": true, \"prerelease\": true}" \
|
||||
https://api.github.com/repos/metal3d/katenary/releases | jq -r '.id' > release.id
|
||||
@echo "Release id: $$(cat release.id) created"
|
||||
@echo "Uploading assets..."
|
||||
# push all dist binary as assets to the release
|
||||
@for i in $$(find dist -type f -name "katenary*"); do
|
||||
curl -sSL -H "Authorization: token $$TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "Content-Type: application/octet-stream" \
|
||||
--data-binary @$$i \
|
||||
https://uploads.github.com/repos/metal3d/katenary/releases/$(shell cat release.id)/assets?name=$$(basename $$i)
|
||||
done
|
||||
@rm -f release.id
|
||||
|
Reference in New Issue
Block a user