~aleteoryx/muditaos

da3a4382d8e52412d9fc1c41e68d247b4d3a6560 — Radoslaw Wicik 5 years ago 64c6c70
[EGD-4529] on release upload packages to GitHub assets

Uploading packages to github assets release is required for
Mudita Center application to be able to update phones.
M .github/workflows/main.yml => .github/workflows/main.yml +0 -6
@@ 20,12 20,6 @@ jobs:
          fetch-depth: 0
      - name: check commit messages
        run: ./tools/check_commit_messages.py
  build:
    if: github.event.pull_request.draft == false
    runs-on: self-hosted
    steps:
      - name: build
        run: echo "Placeholder for old CI scripts"
  check_copyright_and_style:
    name: check copyright and style
    if: github.event.pull_request.draft == false

M .github/workflows/releases.yaml => .github/workflows/releases.yaml +21 -6
@@ 27,13 27,17 @@ jobs:
        popd
    - name: "Build and package for RT1051"
      id: build_release_package 
      env:
        ASSETS_LOGIN: ${{ secrets.ASSETS_LOGIN }}
        ASSETS_TOKEN: ${{ secrets.ASSETS_TOKEN }}
      run: |
        ./configure.sh rt1051 RelWithDebInfo && \
        pushd build-rt1051-RelWithDebInfo && \
        export JOBS=${JOBS:-`nproc`} && \
        echo "JOBS=${JOBS}" && \
        make -j ${JOBS} && \
        make -j ${JOBS}  package && \
        make package-update VERBOSE=1 && \
        make package-standalone && \
        popd && \
        ./print_last_changes.sh && \
        uptime


@@ 48,15 52,26 @@ jobs:
        draft: true
        prerelease: true
        body: ${{steps.build_release_package.outputs.release_notes }}
    - name: Upload Release Package
      id: upload-release-package
    - name: Upload Standalone Package
      id: upload-stanalone-package
      uses: actions/upload-release-asset@v1.0.2
      env:
        GITHUB_TOKEN: ${{ secrets.GitHub_PAT }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        # here we have to use relative path with starting "./"
        asset_path: ./${{ steps.build_release_package.outputs.package_path }}/${{ steps.build_release_package.outputs.package-standalone }}
        asset_name: ${{ steps.build_release_package.outputs.package-standalone }}
        asset_content_type: ${{ steps.build_release_package.outputs.standalone-mime_type }}
    - name: Upload Update Package
      id: upload-update-package
      uses: actions/upload-release-asset@v1.0.2
      env:
        GITHUB_TOKEN: ${{ secrets.GitHub_PAT }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        # here we have to use relative path with starting "./"
        asset_path: ./${{ steps.build_release_package.outputs.package_path }}/${{steps.build_release_package.outputs.package}}
        asset_name: ${{ steps.build_release_package.outputs.package }}
        asset_content_type: ${{ steps.build_release_package.outputs.mime_type }}
        asset_path: ./${{ steps.build_release_package.outputs.package_path }}/${{ steps.build_release_package.outputs.package-update }}
        asset_name: ${{ steps.build_release_package.outputs.package-update }}
        asset_content_type: ${{ steps.build_release_package.outputs.update-mime_type }}


M CMakeLists.txt => CMakeLists.txt +55 -24
@@ 268,24 268,48 @@ if (${PROJECT_TARGET} STREQUAL "TARGET_RT1051")
        )

    # download the bootloader
    add_custom_target(ecoboot.bin
        COMMAND ${CMAKE_SOURCE_DIR}/tools/download_asset.py
        -w ${CMAKE_BINARY_DIR}/update ecoboot download
        > ${CMAKE_BINARY_DIR}/update/download_info.txt
        BYPRODUCTS update/ecoboot.bin
        COMMENT "Downloading ecoboot.bin"
        )
    set(ECOBOOT_FILE ${CMAKE_BINARY_DIR}/ecoboot.bin)
    set(ECOBOOT_DOWNLOAD_LOG ${CMAKE_BINARY_DIR}/download_info.txt)

    if(DEFINED ENV{ASSETS_LOGIN} AND DEFINED ENV{ASSETS_TOKEN})
        message("ecooboot download with tokens")
        add_custom_command(OUTPUT ${ECOBOOT_FILE}
            COMMAND ${CMAKE_SOURCE_DIR}/tools/download_asset.py
            -l $ENV{ASSETS_LOGIN}
            -t $ENV{ASSETS_TOKEN}
            -w ${CMAKE_BINARY_DIR} ecoboot download
            > ${ECOBOOT_DOWNLOAD_LOG}
            COMMENT "Downloading ecoboot.bin"
            BYPRODUCTS ${ECOBOOT_FILE} ${ECOBOOT_DOWNLOAD_LOG}
            )
    else()
        message("ecoboot download with git")
        add_custom_command(OUTPUT ${ECOBOOT_FILE}
            COMMAND ${CMAKE_SOURCE_DIR}/tools/download_asset.py
            -w ${CMAKE_BINARY_DIR} ecoboot download
            > ${ECOBOOT_DOWNLOAD_LOG}
            COMMENT "Downloading ecoboot.bin"
            BYPRODUCTS ${ECOBOOT_FILE} ${ECOBOOT_DOWNLOAD_LOG}
            )
    endif()

    add_custom_target(ecoboot.bin DEPENDS ${ECOBOOT_FILE})

    # generate version.json file (runs CMake script at build time)
    add_custom_target(
        version.json
    set(VERSION_JSON ${CMAKE_BINARY_DIR}/version.json)
    add_custom_command(OUTPUT ${VERSION_JSON}
        COMMAND ${CMAKE_COMMAND}
        -DSRC_DIR=${CMAKE_SOURCE_DIR}
        -DECOBOOT_DOWNLOAD_LOG=${ECOBOOT_DOWNLOAD_LOG}
        -B ${CMAKE_BINARY_DIR}
        -P ${CMAKE_SOURCE_DIR}/config/GenUpdateVersionJson.cmake
        DEPENDS ecoboot.bin
        DEPENDS ecoboot.bin ${ECOBOOT_DOWNLOAD_LOG}
        BYPRODUCTS ${VERSION_JSON}
        )
    install(FILES ${CMAKE_BINARY_DIR}/update/ecoboot.bin DESTINATION "./" COMPONENT Update)
    install(FILES ${CMAKE_BINARY_DIR}/update/version.json DESTINATION "./" COMPONENT Update)
    add_custom_target(version.json DEPENDS ${VERSION_JSON})

    multicomp_install(PROGRAMS ${ECOBOOT_FILE} DESTINATION "./" COMPONENTS Standalone Update)
    multicomp_install(FILES ${VERSION_JSON} DESTINATION "./" COMPONENTS Standalone Update)

    set(CPACK_SYSTEM_NAME "RT1051")
    # allow both standalone and update packages in RT1051 config


@@ 317,8 341,6 @@ endif()

message_serial_status()

include(tools/clang-tidy.cmake)

option (BUILD_DOC_WITH_ALL "Build documentation" OFF)

# check if Doxygen is installed


@@ 404,19 426,23 @@ if (${PROJECT_TARGET} STREQUAL "TARGET_RT1051")
    add_custom_target(package-standalone
        COMMAND zip -rq ${CMAKE_BINARY_DIR}/${PACKAGE_STANDALONE_FILE_NAME} "."
        WORKING_DIRECTORY ${PACKAGE_STAGING_DIRECTORY}/Standalone
        DEPENDS package-standalone-staged
        DEPENDS ${ECOBOOT_FILE} package-standalone-staged  PurePhone
        )
    set(UPDATE_STAGING_DIRECTORY ${PACKAGE_STAGING_DIRECTORY}/Update)
    add_custom_target(package-update-checksums
        COMMAND rhash
        -u ${PACKAGE_STAGING_DIRECTORY}/Update/checksums.txt
        -r ${PACKAGE_STAGING_DIRECTORY}/Update
        -u checksums.txt
        -r .
        WORKING_DIRECTORY ${UPDATE_STAGING_DIRECTORY}
        DEPENDS package-update-staged
        )
    set(PACKAGE_UPDATE_FILE_NAME ${PACKAGE_COMMON_NAME}-Update.tar)
    set(PACKAGE_UPDATE_MIME "application/x-tar")
    add_custom_target(package-update
        COMMAND tar
        -czf ${CMAKE_BINARY_DIR}/${PACKAGE_COMMON_NAME}-Update.tar.gz
        -cf ${CMAKE_BINARY_DIR}/${PACKAGE_UPDATE_FILE_NAME}
        -C ${PACKAGE_STAGING_DIRECTORY}/Update "."
        DEPENDS package-update-staged package-update-checksums
        DEPENDS ecoboot.bin version.json PurePhone package-update-staged package-update-checksums
        )
elseif (${PROJECT_TARGET} STREQUAL "TARGET_Linux")
    set(PACKAGE_STANDALONE_FILE_NAME ${PACKAGE_COMMON_NAME}-Standalone.tar.gz)


@@ 430,9 456,14 @@ elseif (${PROJECT_TARGET} STREQUAL "TARGET_Linux")
endif()

if (NOT "$ENV{GITHUB_WORKSPACE}" STREQUAL "")
    message("set-output name=package::${PACKAGE_STANDALONE_FILE_NAME}")
    message("::set-output name=package::${PACKAGE_STANDALONE_FILE_NAME}")
    
    message("set-output name=mime_type::${PACKAGE_STANDALONE_MIME}")
    message("::set-output name=mime_type::${PACKAGE_STANDALONE_MIME}")
    message("set-output name=package-standalone::${PACKAGE_STANDALONE_FILE_NAME}")
    message("::set-output name=package-standalone::${PACKAGE_STANDALONE_FILE_NAME}")
    message("set-output name=standalone-mime_type::${PACKAGE_STANDALONE_MIME}")
    message("::set-output name=standalone-mime_type::${PACKAGE_STANDALONE_MIME}")

    message("set-output name=package-update::${PACKAGE_UPDATE_FILE_NAME}")
    message("::set-output name=package-update::${PACKAGE_UPDATE_FILE_NAME}")
    message("set-output name=update-mime_type::${PACKAGE_UPDATE_MIME}")
    message("::set-output name=update-mime_type::${PACKAGE_UPDATE_MIME}")

endif()

M config/GenUpdateVersionJson.cmake => config/GenUpdateVersionJson.cmake +2 -2
@@ 8,7 8,7 @@ include(Version)
set(BOOTLOADER_INCLUDED "true")
set(BOOTLOADER_FILENAME "ecoboot.bin")
execute_process(
    COMMAND grep "release:" "${CMAKE_BINARY_DIR}/update/download_info.txt"
    COMMAND grep "release:" "${ECOBOOT_DOWNLOAD_LOG}"
    COMMAND awk "{print $2}"
    OUTPUT_VARIABLE BOOTLOADER_VERSION
    OUTPUT_STRIP_TRAILING_WHITESPACE


@@ 16,6 16,6 @@ execute_process(

configure_file(
    ${SRC_DIR}/config/version.json.cmake_template
    ${CMAKE_BINARY_DIR}/update/version.json
    ${CMAKE_BINARY_DIR}/version.json
    @ONLY
    )

M tools/download_asset.py => tools/download_asset.py +2 -2
@@ 52,7 52,7 @@ class Getter(object):
        try:
            gitConfigReader = self.gitRepo.config_reader()
            self.apitoken = gitConfigReader.get_value("user", "apitoken")
        except git.exc.NoOptionError as error:
        except: 
            pass

    def getGHLogin(self, args=None):


@@ 63,7 63,7 @@ class Getter(object):
        try:
            gitConfigReader = self.gitRepo.config_reader()
            self.ghLogin = gitConfigReader.get_value("user", "githublogin")
        except git.exc.NoOptionError as error:
        except:
            pass

    def findWorkDir(self):