feat(makefile): updating Makefile with cadoles methods.
Adding Docker image release and build rules Updating nfpm packaging methods.
This commit is contained in:
parent
194c1864c4
commit
77bb3ba59b
34
Makefile
34
Makefile
|
@ -1,23 +1,17 @@
|
||||||
|
##################################################
|
||||||
|
# Makefile for Cadoles Kubernetes Skeletor project
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
COMMIT_ID ?= $(shell git rev-parse --short --verify HEAD)
|
||||||
|
CURRENT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD | tr -c '[:alnum:]\n\r' '_'| tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
IMAGE_REPO ?= reg.cadoles.com/cadoles
|
||||||
|
IMAGE_VERSION ?= 1.2.2-$(CURRENT_BRANCH)
|
||||||
|
|
||||||
|
IMAGES_DIR := .
|
||||||
|
|
||||||
PACKAGE_VERSION ?= $(shell git describe --always | rev | cut -d '/' -f 1 | rev)
|
PACKAGE_VERSION ?= $(shell git describe --always | rev | cut -d '/' -f 1 | rev)
|
||||||
NFPM_PACKAGER ?= deb
|
NFPM_PACKAGER ?= deb
|
||||||
|
|
||||||
build: clean generate
|
include main.mk
|
||||||
CGO_ENABLED=0 misc/script/build
|
include packages.mk
|
||||||
|
|
||||||
generate:
|
|
||||||
go generate ./...
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf bin
|
|
||||||
|
|
||||||
package: dist
|
|
||||||
PACKAGE_VERSION=$(PACKAGE_VERSION) \
|
|
||||||
nfpm package \
|
|
||||||
--config misc/packaging/nfpm.yml \
|
|
||||||
--target ./dist \
|
|
||||||
--packager $(NFPM_PACKAGER)
|
|
||||||
|
|
||||||
dist:
|
|
||||||
mkdir -p dist
|
|
||||||
|
|
||||||
.PHONY: build
|
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
#
|
||||||
|
# $1: IMAGE_NAME
|
||||||
|
#
|
||||||
|
define build_image
|
||||||
|
echo "Building ${IMAGE_REPO}/$1";\
|
||||||
|
docker build \
|
||||||
|
-t "${IMAGE_REPO}/$1:$(IMAGE_VERSION)" \
|
||||||
|
-f ${IMAGES_DIR}/Dockerfile \
|
||||||
|
.
|
||||||
|
endef
|
||||||
|
|
||||||
|
#
|
||||||
|
# $1: IMAGE_NAME
|
||||||
|
# $2: IMAGE_TAG
|
||||||
|
#
|
||||||
|
define scan_image
|
||||||
|
echo "Scanning ${IMAGE_REPO}/$1"; \
|
||||||
|
mkdir -p .trivy/$(IMAGE_REPO)/$1; \
|
||||||
|
tools/trivy/bin/trivy --cache-dir .trivy/.cache image -o ".trivy/$(IMAGE_REPO)/$1/$2/report.txt" $(TRIVY_ARGS) $(IMAGE_REPO)/$1:$2 ; \
|
||||||
|
cat ".trivy/$(IMAGE_REPO)/$1/$2report.txt"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define install_trivy
|
||||||
|
mkdir -p tools/trivy/bin ; \
|
||||||
|
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b ./tools/trivy/bin v0.27.1
|
||||||
|
endef
|
||||||
|
|
||||||
|
define release_image
|
||||||
|
docker tag $(IMAGE_REPO)/$1:$(IMAGE_VERSION) $(IMAGE_REPO)/$1:$(IMAGE_VERSION)-$(COMMIT_ID) ; \
|
||||||
|
docker tag $(IMAGE_REPO)/$1:$(IMAGE_VERSION) $(IMAGE_REPO)/$1:$(IMAGE_VERSION); \
|
||||||
|
docker tag $(IMAGE_REPO)/$1:$(IMAGE_VERSION) $(IMAGE_REPO)/$1:$(IMAGE_VERSION)-latest; \
|
||||||
|
docker push $(IMAGE_REPO)/$1:$(IMAGE_VERSION)-latest ; \
|
||||||
|
docker push $(IMAGE_REPO)/$1:$(IMAGE_VERSION) ; \
|
||||||
|
docker push $(IMAGE_REPO)/$1:$(IMAGE_VERSION)-$(COMMIT_ID)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#list:
|
||||||
|
build: ${IMAGES_DIR}/*
|
||||||
|
$(call build_image,werther)
|
||||||
|
|
||||||
|
scan: ${IMAGES_DIR}/*
|
||||||
|
$(call install_trivy)
|
||||||
|
$(call scan_image,werther)
|
||||||
|
|
||||||
|
tools/trivy/bin/trivy:
|
||||||
|
mkdir -p tools/trivy/bin
|
||||||
|
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b ./tools/trivy/bin v0.27.1
|
||||||
|
|
||||||
|
|
||||||
|
release: ${IMAGES_DIR}/*
|
||||||
|
$(call release_image,werther,base); \
|
||||||
|
git tag -f -a $(IMAGE_VERSION) -m "Version $(IMAGE_VERSION) released"; \
|
||||||
|
git tag -f -a $(IMAGE_VERSION)-$(COMMIT_ID) -m "Version $(IMAGE_VERSION)-$(COMMIT_ID) released"; \
|
||||||
|
git tag -f -a $(IMAGE_VERSION)-latest -m "Version $(IMAGE_VERSION)-latest released"; \
|
||||||
|
|
||||||
|
_release:
|
||||||
|
docker tag $(IMAGE_FULL_NAME):$(IMAGE_TAG) $(IMAGE_FULL_NAME):$(IMAGE_TAG)-$(IMAGE_VERSION)-$(COMMIT_ID)
|
||||||
|
docker tag $(IMAGE_FULL_NAME):$(IMAGE_TAG) $(IMAGE_FULL_NAME):$(IMAGE_TAG)-$(IMAGE_VERSION)
|
||||||
|
docker tag $(IMAGE_FULL_NAME):$(IMAGE_TAG) $(IMAGE_FULL_NAME):$(IMAGE_TAG)-latest
|
||||||
|
docker push $(IMAGE_FULL_NAME):$(IMAGE_TAG)-$(IMAGE_VERSION)-$(DAY_SUFFIX_TAG)
|
||||||
|
docker push $(IMAGE_FULL_NAME):$(IMAGE_TAG)-$(IMAGE_VERSION)
|
||||||
|
docker push $(IMAGE_FULL_NAME):$(IMAGE_TAG)-latest
|
||||||
|
|
||||||
|
_test: tools/bin/bash_unit
|
||||||
|
tools/bin/bash_unit ./tests/test_$(IMAGE_TAG).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)
|
||||||
|
|
||||||
|
up:
|
||||||
|
skaffold dev -p dev --default-repo ${IMAGE_REPO}
|
||||||
|
|
||||||
|
|
||||||
|
##include recipes/*.mk
|
|
@ -0,0 +1,18 @@
|
||||||
|
bin: clean generate
|
||||||
|
CGO_ENABLED=-1 misc/script/build
|
||||||
|
|
||||||
|
generate:
|
||||||
|
go generate ./...
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf bin
|
||||||
|
|
||||||
|
package: dist bin
|
||||||
|
PACKAGE_VERSION=$(PACKAGE_VERSION) \
|
||||||
|
nfpm package \
|
||||||
|
--config misc/packaging/nfpm.yml \
|
||||||
|
--target ./dist \
|
||||||
|
--packager $(NFPM_PACKAGER)
|
||||||
|
|
||||||
|
dist:
|
||||||
|
mkdir -p dist
|
Loading…
Reference in New Issue