Skip to content
Snippets Groups Projects
.pack.mk 2.68 KiB
Newer Older
#
# CI packaging rules
#

SED_REPLACE_VERSION_REGEX = 's/-\([0-9]\+\)-g[0-9a-f]\+$$/.\1/'
RWS_BASE_URL = https://rws.tarantool.org
PRODUCT_NAME = tarantool

VARDIR ?=/tmp/t

GIT_DESCRIBE = $(shell git describe HEAD)
GIT_TAG = $(shell git tag --points-at HEAD)
MAJOR_VERSION = $(word 1, $(subst ., ,${GIT_DESCRIBE}))
MINOR_VERSION = $(word 2, $(subst ., ,${GIT_DESCRIBE}))
VERSION = ${MAJOR_VERSION}.${MINOR_VERSION}

TARANTOOL_SERIES = series-${MAJOR_VERSION}
S3_SOURCE_REPO_URL = s3://tarantool_repo/sources

prepare:
	rm -rf build packpack
	git clone https://github.com/packpack/packpack.git

package: prepare
	if [ "${OS}" = "alpine" ]; then \
		if [ -n "${GIT_TAG}" ]; then \
			export VERSION="$$(echo ${GIT_TAG} | sed 's/-/_/' | sed 's/entrypoint/alpha0/')"; \
			RELEASE="$(word 1, $(subst -, ,${GIT_DESCRIBE}))"; \
			TYPE="$(word 2, $(subst -, ,${GIT_DESCRIBE}))"; \
			PATCH="$(word 3, $(subst -, ,${GIT_DESCRIBE}))"; \
			if [ "$${TYPE}" = "entrypoint" ]; then \
				TYPE="alpha0"; \
			export VERSION="$${RELEASE}_$${TYPE}_p$${PATCH}"; \
		fi; \
	else \
		if [ -n "${GIT_TAG}" ]; then \
			export VERSION="$$(echo ${GIT_TAG} | sed 's/-/~/')"; \
		else \
			export VERSION="$$(echo ${GIT_DESCRIBE} | sed ${SED_REPLACE_VERSION_REGEX} | sed 's/-/~/').dev"; \
	echo VERSION=$${VERSION}; \
	PACKPACK_EXTRA_DOCKER_RUN_PARAMS="--network=host --volume ${VARDIR}:${VARDIR} ${PACKPACK_EXTRA_DOCKER_RUN_PARAMS}" \
	TARBALL_EXTRA_ARGS="--exclude=*.exe --exclude=*.dll" \
	PRESERVE_ENVVARS="TARBALL_EXTRA_ARGS,${PRESERVE_ENVVARS}" \
	./packpack/packpack

deploy:
	if [ -z "${REPO_TYPE}" ]; then \
		echo "Env variable 'REPO_TYPE' must be defined!"; \
		exit 1; \
	fi

	# Use different repos for vanilla and GC64 version.
	if [ "${GC64}" = "true" ]; then \
		RWS_ENDPOINT=${RWS_BASE_URL}/${REPO_TYPE}/${TARANTOOL_SERIES}-gc64/${OS}/${DIST}; \
	else \
		RWS_ENDPOINT=${RWS_BASE_URL}/${REPO_TYPE}/${TARANTOOL_SERIES}/${OS}/${DIST}; \
	fi; \
	CURL_CMD="curl \
		--location \
		--fail \
		--silent \
		--show-error \
		--retry 5 \
		--retry-delay 5 \
		--request PUT $${RWS_ENDPOINT} \
		--user $${RWS_AUTH} \
		--form product=${PRODUCT_NAME}"; \
	for f in $$(ls -I '*build*' -I '*.changes' ./build); do \
		CURL_CMD="$${CURL_CMD} --form $$(basename $${f})=@./build/$${f}"; \
	done; \
	echo $${CURL_CMD}; \
	$${CURL_CMD}

source: prepare
	if [ -n "${GIT_TAG}" ]; then \
		export VERSION=${GIT_TAG}; \
	else \
		export VERSION="$$(echo ${GIT_DESCRIBE} | sed ${SED_REPLACE_VERSION_REGEX}).dev"; \
	echo VERSION=$${VERSION}; \
	TARBALL_COMPRESSOR=gz \
	./packpack/packpack tarball

source-deploy: source
	aws --endpoint-url ${AWS_S3_ENDPOINT_URL} s3 cp build/*.tar.gz ${S3_SOURCE_REPO_URL}/ --acl public-read