diff --git a/publish/publish.sh b/publish/publish.sh index c56ac3e..9655976 100755 --- a/publish/publish.sh +++ b/publish/publish.sh @@ -9,16 +9,85 @@ VERSION=$(git tag --list | sort -V | tail -n1 | sed -e "s/^v//"); file_last_published="${BASE_FOLDER}last.published"; go_flag="$1"; +function gitea_publish +{ + _GITEA_PUBLISH="${1}" + _GITEA_UPLOAD_FILENAME="${2}" + _GITEA_URL_DL="${3}" + _GITEA_URL_PUSH="${4}" + _GITEA_USER="${5}" + _GITEA_TOKEN="${6}" + _PACKAGE_DOWNLOAD="${7}" + _VERSION="${8}" + _file_last_published="${9}" + + if [ -z "${_GITEA_PUBLISH}" ]; then + return + fi; + if [ -n "${_GITEA_UPLOAD_FILENAME}" ] && + [ -n "${_GITEA_URL_DL}" ] && [ -n "${_GITEA_URL_PUSH}" ] && + [ -n "${_GITEA_USER}" ] && [ -n "${_GITEA_TOKEN}" ]; then + echo "> Publish ${_VERSION} to: ${_GITEA_URL_PUSH}"; + if [ ! -f "${_PACKAGE_DOWNLOAD}${_GITEA_UPLOAD_FILENAME}-v${_VERSION}.zip" ]; then + echo "> Download: ${_PACKAGE_DOWNLOAD}${_GITEA_UPLOAD_FILENAME}-v${_VERSION}.zip"; + 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 "[!] Package file does not exist for version: ${_VERSION}"; + else + response=$(curl --user "${_GITEA_USER}":"${_GITEA_TOKEN}" \ + --upload-file "${_PACKAGE_DOWNLOAD}${_GITEA_UPLOAD_FILENAME}-v${_VERSION}.zip" \ + "${_GITEA_URL_PUSH}"?version="${_VERSION}"); + status=$(echo "${response}" | jq .errors[].status); + message=$(echo "${response}" | jq .errors[].message); + if [ -n "${status}" ]; then + echo "[!] Error ${status}: ${message}"; + else + echo "> Publish completed"; + fi; + 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; +} + +function gitlab_publish +{ + _GITLAB_PUBLISH="${1}"; + _GITLAB_URL="${2}"; + _GITLAB_DEPLOY_TOKEN="${3}"; + _PACKAGE_DOWNLOAD="${4}" + _VERSION="${5}" + _file_last_published="${6}" + if [ -z "${GITLAB_PUBLISH}" ]; then + return; + fi; + 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; +} + + if [ -z "${VERSION}" ]; then - echo "Version must be set in the form x.y.z without any leading characters"; + 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; + echo "[!] git tag version ${VERSION} is not newer than previous published version ${LAST_PUBLISHED_VERSION}"; fi; fi; @@ -36,62 +105,30 @@ fi; # GITLAB_TOKEN # GITLAB_URL if [ ! -f "${BASE_FOLDER}.env.deploy" ]; then - echo "Deploy enviroment file .env.deploy is missing"; + echo "[!] Deploy enviroment file .env.deploy is missing"; exit; fi; set -o allexport; -cd "${BASE_FOLDER}" || exit; +cd "${BASE_FOLDER}" || exit # shellcheck source=.env.deploy source .env.deploy; -cd - || exit; +cd - >/dev/null 2>&1 || exit; set +o allexport; if [ "${go_flag}" != "go" ]; then - echo "No go flag given"; - echo "Would publish ${VERSION}"; + 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; +gitea_publish "${GITEA_PUBLISH}" "${GITEA_UPLOAD_FILENAME}" "${GITEA_URL_DL}" "${GITEA_URL_PUSH}" "${GITEA_USER}" "${GITEA_TOKEN}" "${PACKAGE_DOWNLOAD}" "${VERSION}" "${file_last_published}"; +gitea_publish "${PR_GITEA_PUBLISH}" "${PR_GITEA_UPLOAD_FILENAME}" "${PR_GITEA_URL_DL}" "${PR_GITEA_URL_PUSH}" "${PR_GITEA_USER}" "${PR_GITEA_TOKEN}" "${PACKAGE_DOWNLOAD}" "${VERSION}" "${file_last_published}"; # 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; +# gitlab_publish "${GITLAB_PUBLISH}" "${GITLAB_URL}" "${GITLAB_DEPLOY_TOKEN}" "${PACKAGE_DOWNLOAD}" "${VERSION}" "${file_last_published}"; echo ""; echo "[DONE]";