From b51cd3096f199d3d957a42941cb7817d948dd1e7 Mon Sep 17 00:00:00 2001 From: Roman Fomin Date: Wed, 2 Aug 2023 22:54:55 +0700 Subject: [PATCH] upload AppImage on release, cosmetic fixes --- .github/workflows/main.yml | 22 +++++++++-- .github/workflows/win_msvc.yml | 2 +- CMakeLists.txt | 72 +++++++++++++++------------------- 3 files changed, 50 insertions(+), 46 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 23c73d54..203916fc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,11 +3,12 @@ name: Continuous Integration on: push: branches: [ master ] - tags-ignore: ['*'] + tags: ['*'] paths-ignore: ['**.md'] pull_request: branches: [ master ] paths-ignore: ['**.md'] + workflow_dispatch: jobs: build: @@ -104,12 +105,25 @@ jobs: cpack - name: Upload AppImage + if: runner.os == 'Linux' uses: actions/upload-artifact@v3 with: name: Woof-AppImage - path: | - build/*.appimage - if: runner.os == 'Linux' + path: build/*.appimage + + - name: Extract Version Number + if: ${{ contains(github.ref, 'tags') && runner.os == 'Linux' }} + shell: bash + run: echo "VERSION=${GITHUB_REF##*_}" >> $GITHUB_ENV + + - name: Release + if: ${{ contains(github.ref, 'tags') && runner.os == 'Linux' }} + uses: ncipollo/release-action@v1 + with: + name: Woof! ${{ env.VERSION }} + bodyFile: CHANGELOG.md + allowUpdates: true + artifacts: build/*.appimage cppcheck: name: Cppcheck diff --git a/.github/workflows/win_msvc.yml b/.github/workflows/win_msvc.yml index 5b7a9354..8d348146 100644 --- a/.github/workflows/win_msvc.yml +++ b/.github/workflows/win_msvc.yml @@ -1,4 +1,4 @@ -name: Artifacts +name: Continuous Integration on: push: diff --git a/CMakeLists.txt b/CMakeLists.txt index ca68d740..dd36da20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,53 +125,43 @@ if(WIN32) set(CPACK_GENERATOR ZIP) elseif(LINUX) set(CPACK_GENERATOR External) - set(CPACK_EXTERNAL_ENABLE_STAGING YES) - set(CPACK_EXTERNAL_PACKAGE_SCRIPT "${PROJECT_BINARY_DIR}/appimage-generate.cmake") + set(CPACK_EXTERNAL_ENABLE_STAGING YES) + set(CPACK_EXTERNAL_PACKAGE_SCRIPT "${PROJECT_BINARY_DIR}/appimage-generate.cmake") - file(GENERATE - OUTPUT "${PROJECT_BINARY_DIR}/appimage-generate.cmake" - CONTENT [[ - include(CMakePrintHelpers) - cmake_print_variables(CPACK_TEMPORARY_DIRECTORY) - cmake_print_variables(CPACK_TOPLEVEL_DIRECTORY) - cmake_print_variables(CPACK_PACKAGE_DIRECTORY) - cmake_print_variables(CPACK_PACKAGE_FILE_NAME) + file(GENERATE + OUTPUT "${PROJECT_BINARY_DIR}/appimage-generate.cmake" + CONTENT [[ + find_program(LINUXDEPLOY_EXECUTABLE + NAMES linuxdeploy linuxdeploy-x86_64.AppImage + PATHS ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy) - find_program(LINUXDEPLOY_EXECUTABLE - NAMES linuxdeploy linuxdeploy-x86_64.AppImage - PATHS ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy) + if(NOT LINUXDEPLOY_EXECUTABLE) + message(STATUS "Downloading linuxdeploy") + set(LINUXDEPLOY_EXECUTABLE ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/linuxdeploy) + file(DOWNLOAD + https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + ${LINUXDEPLOY_EXECUTABLE} + INACTIVITY_TIMEOUT 10) + execute_process(COMMAND + chmod +x ${LINUXDEPLOY_EXECUTABLE} COMMAND_ECHO STDOUT) + endif() - if (NOT LINUXDEPLOY_EXECUTABLE) - message(STATUS "Downloading linuxdeploy") - set(LINUXDEPLOY_EXECUTABLE ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/linuxdeploy) - file(DOWNLOAD - https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage - ${LINUXDEPLOY_EXECUTABLE} - INACTIVITY_TIMEOUT 10 - LOG ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/download.log - STATUS LINUXDEPLOY_DOWNLOAD) - execute_process(COMMAND chmod +x ${LINUXDEPLOY_EXECUTABLE} COMMAND_ECHO STDOUT) - endif() - - execute_process( - COMMAND - ${CMAKE_COMMAND} -E env - OUTPUT=${CPACK_PACKAGE_FILE_NAME}.appimage - VERSION=$,${CPACK_PACKAGE_VERSION},0.1.0> - ${LINUXDEPLOY_EXECUTABLE} - --appimage-extract-and-run - --appdir=${CPACK_TEMPORARY_DIRECTORY} - --executable=$ - --desktop-file=${CPACK_TEMPORARY_DIRECTORY}/share/applications/woof.desktop - --icon-file=${CPACK_TEMPORARY_DIRECTORY}/share/icons/hicolor/128x128/apps/woof.png - --output=appimage - # --verbosity=2 - ) - ]]) + execute_process(COMMAND + ${CMAKE_COMMAND} -E env + OUTPUT=${CPACK_PACKAGE_FILE_NAME}.appimage + VERSION=$,${CPACK_PACKAGE_VERSION},0.1.0> + ${LINUXDEPLOY_EXECUTABLE} + --appimage-extract-and-run + --appdir=${CPACK_TEMPORARY_DIRECTORY} + --executable=$ + --desktop-file=${CPACK_TEMPORARY_DIRECTORY}/share/applications/woof.desktop + --icon-file=${CPACK_TEMPORARY_DIRECTORY}/share/icons/hicolor/128x128/apps/woof.png + --output=appimage) + ]]) else() set(CPACK_GENERATOR TGZ) endif() -set(CPACK_SOURCE_GENERATOR TGZ ZIP EXTERNAL) +set(CPACK_SOURCE_GENERATOR TGZ ZIP) set(CPACK_SOURCE_IGNORE_FILES "/.git/;/build;/.vs/;/out/;CMakeSettings.json") set(CPACK_STRIP_FILES TRUE) include(CPack)