diff --git a/.jenkins_builds b/.jenkins_builds index acbf9c77..54a88dc7 100644 --- a/.jenkins_builds +++ b/.jenkins_builds @@ -53,7 +53,9 @@ pipeline { agent any steps { - sh 'echo skipping deliver' + sh 'scripts/deliver.sh /mnt/repertory "" aarch64' + sh 'scripts/deliver.sh /mnt/repertory' + sh 'scripts/deliver.sh /mnt/repertory "" "" "" "" 1 0' } } } diff --git a/scripts/deliver.cmd b/scripts/deliver.cmd new file mode 100644 index 00000000..9fe7bf0a --- /dev/null +++ b/scripts/deliver.cmd @@ -0,0 +1,13 @@ +@echo off + +setlocal + +set DEST=%~1 +set DIST=%~2 +set ARG1=%~3 +set ARG2=%~4 +set ARG3=%~5 + +pushd "%~dp0%" + call mingw64 -no-start ./deliver.sh "%DEST%" "%DIST%" "%ARG1%" "%ARG2%" "%ARG3%" 1 0 || exit 1 +popd diff --git a/scripts/deliver.sh b/scripts/deliver.sh new file mode 100644 index 00000000..4365a67a --- /dev/null +++ b/scripts/deliver.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +DEST_DIR=$1 +DIST_DIR=$2 + +CURRENT_DIR=$(dirname "$0") +CURRENT_DIR=$(realpath ${CURRENT_DIR}) + +SOURCE_DIR=${CURRENT_DIR}/.. +SOURCE_DIR=$(realpath ${SOURCE_DIR}) + +. "${CURRENT_DIR}/env.sh" "$3" "$4" "$5" "$6" "$7" + +function error_exit() { + echo $1 + exit $2 +} + +if [ ! -d "${PROJECT_DIST_DIR}" ]; then + error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2 +fi + +if [ "${DIST_DIR}" == "" ]; then + DIST_DIR="${CURRENT_DIR}/../dist" +fi +DIST_DIR=$(realpath "${DIST_DIR}") + +if [ ! -d "${DIST_DIR}" ]; then + error_exit "dist directory not found: ${DIST_DIR}" 2 +fi + +if [ "${DEST_DIR}" == "" ]; then + error_exit "dest directory not set" 2 +fi + +if [ ! -d "${DEST_DIR}" ]; then + error_exit "dest directory not found: ${DEST_DIR}" 2 +fi + +pushd "${SOURCE_DIR}" +BRANCH=$(git branch --show-current) +RELEASE=$(grep set\(PROJECT_RELEASE_ITER ./config.sh | sed s/\)//g | awk '{print $2}') +popd + +if [ "${BRANCH}" == "master" ] || [ "${BRANCH}" == "alpha" ] || [ "${BRANCH}" == "beta" ] || [ "${BRANCH}" == "rc" ]; then + DEST_DIR=${DEST_DIR}/${RELEASE} +else + DEST_DIR=${DEST_DIR}/nightly +fi + +FILE_PART=${PROJECT_NAME}_${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_REVISION_VERSION}-${PROJECT_RELEASE_ITER}-${PROJECT_GIT_REV}_${PROJECT_BUILD_ARCH}_${PROJECT_OS} +echo ${DEST_DIR} + +pushd "${DIST_DIR}" +cp -f ./${FILE_PART}.tar.gz ${DEST_DIR} || error_exit "failed to deliver file: ${FILE_PART}.tar.gz" 1 +cp -f ./${FILE_PART}.tar.gz.sha256 ${DEST_DIR} || error_exit "failed to deliver file: ${FILE_PART}.tar.gz.sha256" 1 +if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then + cp -f ./${FILE_PART}.tar.gz.sig ${DEST_DIR} || error_exit "failed to deliver file: ${FILE_PART}.tar.gz.sig" 1 +fi +popd + +error_exit "delivered ${FILE_PART}" 0 diff --git a/scripts/make_package.sh b/scripts/make_package.sh index 0a8069d4..ea25db5d 100755 --- a/scripts/make_package.sh +++ b/scripts/make_package.sh @@ -2,46 +2,46 @@ TEMP_DIR=$(mktemp -d) -DEST_DIR=$1 +DIST_DIR=$1 CURRENT_DIR=$(dirname "$0") CURRENT_DIR=$(realpath ${CURRENT_DIR}) . "${CURRENT_DIR}/env.sh" "$2" "$3" "$4" "$5" "$6" -function exit_and_clean() { +function error_exit() { echo $1 rm -rf ${TEMP_DIR} exit $2 } if [ ! -d "${PROJECT_DIST_DIR}" ]; then - echo "Dist directory not found: ${PROJECT_DIST_DIR}" - exit 1 + error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2 fi -if [ "${DEST_DIR}" == "" ]; then - DEST_DIR="${CURRENT_DIR}/../dist" +if [ "${DIST_DIR}" == "" ]; then + DIST_DIR="${CURRENT_DIR}/../dist" fi -DEST_DIR=$(realpath "${DEST_DIR}") +DIST_DIR=$(realpath "${DIST_DIR}") -if [ ! -d "${DEST_DIR}" ]; then - echo "Destination directory not found: ${DEST_DIR}" - exit 1 +if [ ! -d "${DIST_DIR}" ]; then + error_exit "dest directory not found: ${DIST_DIR}" 1 fi PACKAGE_ROOT="${PROJECT_DIST_DIR}/.." PACKAGE_ROOT=$(realpath "${PACKAGE_ROOT}") -rsync -av --progress ${PROJECT_DIST_DIR}/ ${TEMP_DIR}/${PROJECT_NAME}/ || exit_and_clean "Failed to rsync" 1 +rsync -av --progress ${PROJECT_DIST_DIR}/ ${TEMP_DIR}/${PROJECT_NAME}/ || error_exit "failed to rsync" 1 -pushd "${DEST_DIR}" -OUT_FILE=${PROJECT_NAME}_${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_REVISION_VERSION}-${PROJECT_RELEASE_ITER}-${PROJECT_GIT_REV}_${PROJECT_BUILD_ARCH}_${PROJECT_OS}.tar.gz -tar cvzf "${OUT_FILE}" -C ${TEMP_DIR} . || exit_and_clean "Failed to create archive" 1 -sha256sum "${OUT_FILE}" >"${OUT_FILE}.sha256" || exit_and_clean "Failed to create sha256 file" 1 +FILE_PART=${PROJECT_NAME}_${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_REVISION_VERSION}-${PROJECT_RELEASE_ITER}-${PROJECT_GIT_REV}_${PROJECT_BUILD_ARCH}_${PROJECT_OS} + +pushd "${DIST_DIR}" +OUT_FILE=${FILE_PART}.tar.gz +tar cvzf "${OUT_FILE}" -C ${TEMP_DIR} . || error_exit "failed to create archive" 1 +sha256sum "${OUT_FILE}" >"${OUT_FILE}.sha256" || error_exit "failed to create sha256 file" 1 if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then - openssl dgst -sha256 -sign "${PROJECT_PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_and_clean "Failed to create signature file" 1 - openssl dgst -sha256 -verify "${PROJECT_PUBLIC_KEY}" -signature "${OUT_FILE}.sig" "${OUT_FILE}" || exit_and_clean "Failed to validate signature file" 1 + openssl dgst -sha256 -sign "${PROJECT_PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || error_exit "failed to create signature file" 1 + openssl dgst -sha256 -verify "${PROJECT_PUBLIC_KEY}" -signature "${OUT_FILE}.sig" "${OUT_FILE}" || error_exit "failed to validate signature file" 1 fi popd -exit_and_clean "Created package successfully" 0 +error_exit "created package ${FILE_PART}" 0