# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the master branch on: push: branches: - master pull_request: branches: - master # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: formatting-check: name: check-clang-format runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run clang-format style check. uses: jidicula/clang-format-action@v4.5.0 with: clang-format-version: '14' check-path: '.' build-linux: needs: formatting-check # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v4 - name: Install dependencies uses: awalsh128/cache-apt-pkgs-action@latest with: packages: qt5-qmake libqt5websockets5-dev g++ make version: 1.0 # Runs a set of commands using the runners shell - name: qmake and build run: | cd $GITHUB_WORKSPACE qmake project-akashi.pro make mv bin/config_sample bin/config - name: Run tests run: | cd ${{github.workspace}}/bin_tests/ for test in ./unittest_*; do LD_LIBRARY_PATH=../bin:$LD_LIBRARY_PATH ./$test done; - name: Upload binary uses: actions/upload-artifact@v4 with: name: akashi-linux path: bin/ # coverage: # runs-on: ubuntu-latest # steps: # # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it # - uses: actions/checkout@v2 # - name: Install dependencies # uses: awalsh128/cache-apt-pkgs-action@latest # with: # packages: qt5-qmake libqt5websockets5-dev g++ make # version: 1.0 # # Runs a set of commands using the runners shell # - name: qmake and build # run: | # cd $GITHUB_WORKSPACE # qmake CONFIG+=coverage project-akashi.pro # make # - name: Run tests # run: | # cd ${{github.workspace}}/bin_tests/ # for test in ./unittest_*; do # LD_LIBRARY_PATH=../bin:$LD_LIBRARY_PATH ./$test # done; # - name: Copy coverage files # run: | # mkdir coverage # cd ${{github.workspace}} # gcov *.o # cp *.gcov ../coverage/ # - name: Codecov # uses: codecov/codecov-action@v3.1.0 # with: # files: coverage/* # - name: Upload coverage files # uses: actions/upload-artifact@v2 # with: # name: coverage statistics # path: coverage/ build-windows: needs: formatting-check runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: ilammy/msvc-dev-cmd@v1 - name: Cache Qt id: cache-qt uses: actions/cache@v1 # not v2! with: path: ../Qt key: ${{ runner.os }}-QtCache - name: Install Qt uses: jurplel/install-qt-action@v2 with: cached: ${{ steps.cache-qt.outputs.cache-hit }} - name: Build run: | cd $Env:GITHUB_WORKSPACE qmake "CONFIG += qtquickcompiler" project-akashi.pro nmake windeployqt bin\akashi.exe --release --no-opengl-sw mv bin\config_sample bin\config # As QTest seems to be non-functional on Windows runners this is commented out. If a solution is found, please fix and uncomment - 27.06.2022 / Salanto # - name: Run tests # run: | # windeployqt .\unittest_music_manager.exe --no-translations # $tests = Get-ChildItem -Filter "unittest_*.exe" -Path ".\" | Select -ExpandProperty Name # foreach ($test in $tests) {Write-Host(& ".\$test")} # working-directory: ${{ github.workspace }}/bin_tests - name: Deploy OpenSSL run: | curl https://download.firedaemon.com/FireDaemon-OpenSSL/openssl-1.1.1t.zip --output openssl-1.1.1.zip tar -xf openssl-1.1.1.zip copy .\openssl-1.1\x64\bin\libcrypto-1_1-x64.dll .\bin\libcrypto-1_1-x64.dll copy .\openssl-1.1\x64\bin\libssl-1_1-x64.dll .\bin\libssl-1_1-x64.dll - name: Upload zip uses: actions/upload-artifact@v4 with: name: akashi-windows path: bin\