~aleteoryx/muditaos

7a55c370cfe9f5329e4ddcfcc8a97d3f425faa38 — Radoslaw Wicik 5 years ago 776a51e
[EGD-5855] Daily build scripts

Adding script for creating daily releases in docker environment
M .gitmodules => .gitmodules +1 -1
@@ 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

M CMakeLists.txt => CMakeLists.txt +1 -1
@@ 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}

M cmake/modules/Version.cmake => cmake/modules/Version.cmake +26 -3
@@ 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


@@ 35,6 36,14 @@ else()
            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
        OUTPUT_STRIP_TRAILING_WHITESPACE


@@ 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}")


A config/daily_build_environment => config/daily_build_environment +2 -0
@@ 0,0 1,2 @@
LOGIN=
TOKEN=

A config/daily_build_run_command => config/daily_build_run_command +15 -0
@@ 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}

M in_docker.sh => in_docker.sh +2 -2
@@ 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

A tools/daily_release.sh => tools/daily_release.sh +102 -0
@@ 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