Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • dev-smart-pointer-refactor-2
  • topics
  • outgoingmessagesviewer
  • qt6
  • dev-smart-pointer-refactor
  • gse-interface-dev
  • crash-report-dev
  • riccardo-dev
  • roccaraso2024
  • euroc2024
  • euroc2023
  • roccaraso2023
  • euroc-2021
14 results

.gitlab-ci.yml

Blame
  • .gitlab-ci.yml 3.34 KiB
    # Copyright (c) 2022 Skyward Experimental Rocketry
    # Authors: Alberto Nidasio
    #
    # Permission is hereby granted, free of charge, to any person obtaining a copy
    # of this software and associated documentation files (the "Software"), to deal
    # in the Software without restriction, including without limitation the rights
    # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    # copies of the Software, and to permit persons to whom the Software is
    # furnished to do so, subject to the following conditions:
    #
    # The above copyright notice and this permission notice shall be included in
    # all copies or substantial portions of the Software.
    #
    # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    # THE SOFTWARE.
    
    variables:
      GIT_SUBMODULE_STRATEGY: recursive
      QT_VERSION: 5.15.2
    
    stages:
      - lint
      - build
      - release
    
    default:
      image: registry.skywarder.eu/avn/swd/docker/miosix:latest
    
    # Stage lint
    
    cppcheck:
      stage: lint
      script:
        - cppcheck --version
        - ./scripts/linter.py --cppcheck src
    
    format:
      stage: lint
      script:
        - clang-tidy --version
        - clang-format --version
        - ./scripts/linter.py --format src
    
    find:
      stage: lint
      script:
        - /usr/bin/python3 --version
        - ./scripts/linter.py --find src
    
    # Stage build
    
    build_linux:
      stage: build
      image: registry.skywarder.eu/avn/swd/docker/qt/linux
      before_script:
        - QMAKE=/opt/qt/$QT_VERSION/gcc_64/bin/qmake
      script:
        - cmake -Bbuild -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=RelWithDebInfo .
        - cmake --build build -j 16
        - cd build
        - linuxdeploy --plugin qt -e skywardhub -d ../deployment/linuxdeploy/skywardhub.desktop -i ../deployment/linuxdeploy/SkywardLogo.png --appdir AppDir
        - appimagetool AppDir
        - mv SkywardHub-x86_64.AppImage ../SkywardHub-$CI_COMMIT_SHORT_SHA-x86_64.AppImage
      artifacts:
        name: Linux AppImage
        paths:
          - SkywardHub-$CI_COMMIT_SHORT_SHA-x86_64.AppImage
        expire_in: 7 days
    
    build_windows:
      stage: build
      image: registry.skywarder.eu/avn/swd/docker/qt/windows
      before_script:
        - export PATH=/home/gitlab-runner/mxe/usr/bin:$PATH
      script:
        - x86_64-w64-mingw32.static-cmake -Bbuild -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=RelWithDebInfo .
        - x86_64-w64-mingw32.static-cmake --build build -j 16
        - mv build/skywardhub.exe SkywardHub-$CI_COMMIT_SHORT_SHA.exe
      artifacts:
        name: Windows executable
        paths:
          - SkywardHub-$CI_COMMIT_SHORT_SHA.exe
        expire_in: 7 days
    
    post_on_slack:
      stage: release
      image: curlimages/curl
      script:
        - |
          curl -XPOST -H "Content-type: application/json" -H "api-key: $SKYWARD_API_KEY" -d "{
            \"project_id\": $CI_PROJECT_ID,
            \"pipeline_id\": $CI_PIPELINE_ID,
            \"message\": \"SkywardHub just dropped a new build!\",
            \"commit_message\": \"${CI_COMMIT_MESSAGE//[$'\n']}\",
            \"channel_id\": \"$SLACK_CHANNEL_ID\"
          }" https://api.skywarder.eu/swd/post_job_artifacts
      rules:
        - if: $CI_COMMIT_BRANCH == "main"