99 lines
3.2 KiB
Bash
Executable File
99 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/";
|
|
PACKAGE_DOWNLOAD="${BASE_FOLDER}package-download/";
|
|
if [ ! -d "${PACKAGE_DOWNLOAD}" ]; then
|
|
mkdir "${PACKAGE_DOWNLOAD}";
|
|
fi;
|
|
VERSION=$(git tag --list | sort -V | tail -n1 | sed -e "s/^v//");
|
|
file_last_published="${BASE_FOLDER}last.published";
|
|
go_flag="$1";
|
|
|
|
if [ -z "${VERSION}" ]; then
|
|
echo "Version must be set in the form x.y.z without any leading characters";
|
|
exit;
|
|
fi;
|
|
# compare version, if different or newer, deploy
|
|
if [ -f "${file_last_published}" ]; then
|
|
LAST_PUBLISHED_VERSION=$(cat "${file_last_published}");
|
|
if dpkg --compare-versions "${VERSION}" le "${LAST_PUBLISHED_VERSION}"; then
|
|
echo "git tag version ${VERSION} is not newer than previous published version ${LAST_PUBLISHED_VERSION}";
|
|
exit;
|
|
fi;
|
|
fi;
|
|
|
|
# read in the .env.deploy file and we must have
|
|
# for gitea
|
|
# GITEA_PUBLISH: must be set with a value to trigger publish run
|
|
# GITEA_UPLOAD_FILENAME
|
|
# GITEA_USER
|
|
# GITEA_DEPLOY_TOKEN
|
|
# GITEA_URL_DL
|
|
# GITEA_URL_PUSH
|
|
# for gitlab
|
|
# GITLAB_PUBLISH: must be set with a value to trigger publish run
|
|
# GITLAB_USER
|
|
# GITLAB_TOKEN
|
|
# GITLAB_URL
|
|
if [ ! -f "${BASE_FOLDER}.env.deploy" ]; then
|
|
echo "Deploy enviroment file .env.deploy is missing";
|
|
exit;
|
|
fi;
|
|
set -o allexport;
|
|
cd "${BASE_FOLDER}" || exit;
|
|
# shellcheck source=.env.deploy
|
|
source .env.deploy;
|
|
cd - || exit;
|
|
set +o allexport;
|
|
|
|
if [ "${go_flag}" != "go" ]; then
|
|
echo "No go flag given";
|
|
echo "Would publish ${VERSION}";
|
|
echo "[END]";
|
|
exit;
|
|
fi;
|
|
|
|
echo "[START]";
|
|
# gitea
|
|
# skip iof
|
|
if [ -n "${GITEA_PUBLISH}" ]; then
|
|
if [ -n "${GITEA_UPLOAD_FILENAME}" ] &&
|
|
[ -n "${GITEA_URL_DL}" ] && [ -n "${GITEA_URL_PUSH}" ] &&
|
|
[ -n "${GITEA_USER}" ] && [ -n "${GITEA_TOKEN}" ]; then
|
|
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
|
curl -LJO \
|
|
--output-dir "${PACKAGE_DOWNLOAD}" \
|
|
"${GITEA_URL_DL}"/v"${VERSION}".zip;
|
|
fi;
|
|
if [ ! -f "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" ]; then
|
|
echo "Version file does not exist for ${VERSION}";
|
|
else
|
|
curl --user "${GITEA_USER}":"${GITEA_TOKEN}" \
|
|
--upload-file "${PACKAGE_DOWNLOAD}${GITEA_UPLOAD_FILENAME}-v${VERSION}.zip" \
|
|
"${GITEA_URL_PUSH}"?version="${VERSION}";
|
|
echo "${VERSION}" > "${file_last_published}";
|
|
fi;
|
|
else
|
|
echo "Missing either GITEA_UPLOAD_FILENAME, GITEA_URL_DL, GITEA_URL_PUSH, GITEA_USER or GITEA_TOKEN environment variable";
|
|
fi;
|
|
fi;
|
|
|
|
# gitlab
|
|
if [ -n "${GITLAB_PUBLISH}" ]; then
|
|
if [ -n "${GITLAB_URL}" ] && [ -n "${GITLAB_DEPLOY_TOKEN}" ]; then
|
|
curl --data tag=v"${VERSION}" \
|
|
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
|
"${GITLAB_URL}";
|
|
curl --data branch=master \
|
|
--header "Deploy-Token: ${GITLAB_DEPLOY_TOKEN}" \
|
|
"${GITLAB_URL}";
|
|
echo "${VERSION}" > "${file_last_published}";
|
|
else
|
|
echo "Missing GITLAB_URL or GITLAB_DEPLOY_TOKEN environment variable";
|
|
fi;
|
|
fi;
|
|
echo "";
|
|
echo "[DONE]";
|
|
|
|
# __END__
|