From 7a55c370cfe9f5329e4ddcfcc8a97d3f425faa38 Mon Sep 17 00:00:00 2001 From: Radoslaw Wicik Date: Mon, 8 Mar 2021 20:09:21 +0100 Subject: [PATCH] [EGD-5855] Daily build scripts Adding script for creating daily releases in docker environment --- .gitmodules | 2 +- CMakeLists.txt | 2 +- cmake/modules/Version.cmake | 29 +++++++++- config/daily_build_environment | 2 + config/daily_build_run_command | 15 +++++ in_docker.sh | 4 +- tools/daily_release.sh | 102 +++++++++++++++++++++++++++++++++ 7 files changed, 149 insertions(+), 7 deletions(-) create mode 100644 config/daily_build_environment create mode 100644 config/daily_build_run_command create mode 100755 tools/daily_release.sh diff --git a/.gitmodules b/.gitmodules index 358c2a50e62fcd857df9fb25e3945d1f20db9549..1a4a11675cc05e6969a98972bfb26c60ef2aaca6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,7 +52,7 @@ url = ../pugixml.git [submodule "module-utils/magic_enum"] path = module-utils/magic_enum - url = git@github.com:Neargye/magic_enum.git + url = https://github.com/Neargye/magic_enum.git [submodule "module-utils/tinyexpr"] path = module-utils/tinyexpr url = https://github.com/codeplea/tinyexpr.git diff --git a/CMakeLists.txt b/CMakeLists.txt index baa6eacc05ca36aef984baeabb0eb6bfb5aaecc7..02a8080dac848380f1eea689a77d89742e9d5f48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -397,7 +397,7 @@ endif() if (${PROJECT_TARGET} STREQUAL "TARGET_RT1051") set(PACKAGE_STANDALONE_MIME "application/x-xz") - set(PACKAGE_STANDALONE_FILE_NAME ${PACKAGE_COMMON_NAME}-image.xz) + set(PACKAGE_STANDALONE_FILE_NAME ${PACKAGE_COMMON_NAME}-image.tar.xz) add_custom_target(package-standalone COMMAND tar -ScJf ${PACKAGE_STANDALONE_FILE_NAME} ${DISK_IMAGE_NAME} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} diff --git a/cmake/modules/Version.cmake b/cmake/modules/Version.cmake index 351a06537c50bfb2ce980c7941c6fb1c3459ab70..6a4f00aa52b1ceae2575e71b3082796d2eedae2b 100644 --- a/cmake/modules/Version.cmake +++ b/cmake/modules/Version.cmake @@ -16,6 +16,7 @@ if ("${GIT_REV}" STREQUAL "") set(GIT_DIFF "") set(GIT_TAG "N/A") set(GIT_BRANCH "N/A") + set(GIT_DAILY_TAG "N/A") else() execute_process( COMMAND bash -c "git diff --quiet --exit-code || echo +" @@ -24,9 +25,9 @@ else() WORKING_DIRECTORY ${SRC_DIR} ) execute_process( - COMMAND git describe --tags + COMMAND git describe --tags --match "release*" HEAD RESULT_VARIABLE ret - OUTPUT_VARIABLE GIT_TAG + OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${SRC_DIR} ERROR_QUIET @@ -34,6 +35,14 @@ else() if(NOT ret EQUAL "0") set(GIT_TAG "none") endif() + execute_process( + COMMAND git tag --points-at HEAD + RESULT_VARIABLE ret + OUTPUT_VARIABLE GIT_DAILY_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY ${SRC_DIR} + ERROR_QUIET + ) execute_process( COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE GIT_BRANCH @@ -63,8 +72,22 @@ else() ) endif() -string(REGEX MATCH "release-([0-9]*).([0-9]*).([0-9]*)" VERSION_RAW ${GIT_TAG}) +if (GIT_DAILY_TAG) + string(REPLACE "\n" ";" GIT_DAILY_TAG_LIST ${GIT_DAILY_TAG}) + list(LENGTH GIT_DAILY_TAG_LIST DAILY_LEN) + foreach(TAG_ITEM IN LISTS GIT_DAILY_TAG_LIST) + if(${TAG_ITEM} MATCHES "release-([0-9]+).([0-9]+).([0-9]+)") + break() + elseif(${TAG_ITEM} MATCHES "daily-([0-9]+).([0-9]+).([0-9]+)") + continue() + endif() + endforeach() +else() + string(REGEX MATCH "release-([0-9]+).([0-9]+).([0-9]+)" VERSION_RAW ${GIT_TAG}) +endif() + set(CMAKE_PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}") set(CMAKE_PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}") set(CMAKE_PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}") set(CMAKE_PROJECT_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}") + diff --git a/config/daily_build_environment b/config/daily_build_environment new file mode 100644 index 0000000000000000000000000000000000000000..0ba2f3e53a38704ed66015a0c0d7d67f1ddd954d --- /dev/null +++ b/config/daily_build_environment @@ -0,0 +1,2 @@ +LOGIN= +TOKEN= diff --git a/config/daily_build_run_command b/config/daily_build_run_command new file mode 100644 index 0000000000000000000000000000000000000000..d7694baabb23544a3966f271e8e587feb306b148 --- /dev/null +++ b/config/daily_build_run_command @@ -0,0 +1,15 @@ +#!/bin/bash + +#starting daily builder example +#please adjust paths to your needs + +# this script has removed execution bits on purpose, please do not set them! + +ARTEFACTS_LOCAL_DIR=$HOME/mudita/Artefacts +TOOLS_LOCAL_DIR=$HOME/mudita/PurePhone/tools +ENV_FILE=daily_build_environment +CONTAINER="wearemudita/mudita_os_builder:1.9" +WORK_DIR=$HOME/mudita/daily_build/ + + +docker run -v ${ARTEFACTS_LOCAL_DIR}:/artefacts -v ${TOOLS_LOCAL_DIR}:/scripts -v ${WORK_DIR}:/workdir -w /workdir --user "$(id -u):$(id -g)" --env-file=$ENV_FILE --entrypoint /scripts/daily_release.sh ${CONTAINER} diff --git a/in_docker.sh b/in_docker.sh index 54ef92ba2f3c3cea2152f14893409e3c4ca63f18..98e5acd347166af468a788a5bc97de62902e9d9d 100755 --- a/in_docker.sh +++ b/in_docker.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. # For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md CONTAINER_NAME="wearemudita/mudita_os_builder" @@ -11,7 +11,7 @@ STANDARD_OPTIONS="-v `pwd`:${PURE_HOME} --user \"$(id -u):$(id -g)\" --env HOME= RCFILE="/home/docker/.bashrc" if [[ $BASH_VERSINFO -lt 4 ]]; then - echo "Please update your bash to at last version 4" + echo "Please update your bash to at least version 4" echo "your is: ${BASH_VERSINFO}" exit 4 fi diff --git a/tools/daily_release.sh b/tools/daily_release.sh new file mode 100755 index 0000000000000000000000000000000000000000..bf4c80501231b86862b7ae504433aca43a71190d --- /dev/null +++ b/tools/daily_release.sh @@ -0,0 +1,102 @@ +#!/bin/bash -e +# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#script is used on CI for creating daily builds + +#this script should be run in docker container + +LOGIN=${LOGIN} +TOKEN=${TOKEN} +IMAGE_NAME=${IMAGE_NAME:-wearemudita/mudita_os_builder:1.9} +WORK_DIR=${WORK_DIR:-MuditaOS} +ARTEFACTS_DIR=${ARTEFACTS_DIR:-/artefacts} +REPOSITORY_URL=${REPOSITORY_URL:-https://${TOKEN}:x-oauth-basic@github.com/mudita/MuditaOS} + +CONFIG_LOG=config.log + +VARS_TO_CHECK=( + REPOSITORY_URL + LOGIN + TOKEN + IMAGE_NAME + ) + +function printVar(){ + echo "$1: '${!1}'" +} + +function checkVariables() { + I=0 + while [[ $I -lt ${#VARS_TO_CHECK[@]} ]] + do + printVar ${VARS_TO_CHECK[$I]} + if [[ -z "${!VARS_TO_CHECK[$I]}" ]]; then + echo "${VARS_TO_CHECK[$I]} is not set - aborting" 1>&2 + exit 1 + fi + I=$(( I + 1 )) + done +} + +function checkIfGit() { + if [[ -d .git ]]; then + echo .git; + else + git rev-parse --git-dir 2> /dev/null; + fi; +} + +function addTokens(){ + git config user.githublogin ${LOGIN} + git config user.apitoken ${TOKEN} +} + + +##################### script #################### +checkVariables + +if [ ! -d ${WORK_DIR} ]; then + mkdir ${WORK_DIR} +fi + +pushd ${WORK_DIR} + +if checkIfGit; then + git checkout master + git pull --ff-only +else + echo "not a git dir" + git clone ${REPOSITORY_URL} . + git checkout master +fi + +if [ ! -d ccache ]; then + mkdir ccache +fi + +CCACHE_DIR=$(pwd)/ccache +export CCACHE_DIR + + +DATE=$(date "+%Y.%m.%d") + +addTokens +git submodule update --init --recursive +git tag -f daily-${DATE} +git push --tags origin +./configure.sh rt1051 RelWithDebInfo -G Ninja &> ${CONFIG_LOG} +cat ${CONFIG_LOG} +PKG_NAME_PREFIX=$(cat ${CONFIG_LOG} | grep CPACK_PACKAGE_FILE_NAME | cut -f2 -d: | tr -d "'") +cd build-rt1051-RelWithDebInfo +ninja +ninja package-standalone +ninja package-update + +cp ${PKG_NAME_PREFIX}-image.tar.xz ${ARTEFACTS_DIR} +cp ${PKG_NAME_PREFIX}-Update.tar ${ARTEFACTS_DIR} + +popd + + +