name: CI on: workflow_dispatch: inputs: ref: description: 'ref' required: false push: pull_request: jobs: docs: runs-on: ubuntu-22.04 env: COLOR: "ON" steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.inputs.ref }} - name: Install Dependencies run: | sudo apt-get update sudo apt-get install -y python3-sphinx - name: Build Documentation run: | mkdir -p build cd build cmake -DDISABLE_ALL=ON -DBUILD_DOC=ON -DSPHINX_FLAGS="-W" .. make doc ipc: runs-on: ubuntu-22.04 env: COLOR: "ON" steps: - name: Install Dependencies run: | sudo apt-get update sudo apt-get install -y \ libxcb-composite0-dev \ libxcb-ewmh-dev \ libxcb-icccm4-dev \ libxcb-image0-dev \ libxcb-randr0-dev \ libxcb-util0-dev \ libxcb1-dev \ libcairo2-dev \ python3-xcbgen \ libuv1-dev \ xcb-proto - uses: actions/checkout@v4 with: submodules: true ref: ${{ github.event.inputs.ref }} - name: Build polybar-msg run: | mkdir -p build cd build cmake -DDISABLE_ALL=ON -DBUILD_POLYBAR_MSG=ON .. make polybar-msg build: runs-on: ubuntu-22.04 strategy: matrix: cxx: [g++, clang++] polybar_build_type: ["full"] build_type: ["Release"] include: - cxx: g++ polybar_build_type: "tests" build_type: "Coverage" - cxx: g++ polybar_build_type: "minimal" build_type: "Release" env: CXX: ${{ matrix.cxx }} BUILD_TYPE: ${{ matrix.build_type }} POLYBAR_BUILD_TYPE: ${{ matrix.polybar_build_type }} POLYBAR_DIR: ${{ github.workspace }} BUILD_DIR: "${{ github.workspace}}/build" MAKEFLAGS: "-j4" COLOR: "ON" steps: - name: Install Dependencies run: | sudo apt-get update sudo apt-get install -y \ libxcb-composite0-dev \ libxcb-ewmh-dev \ libxcb-icccm4-dev \ libxcb-image0-dev \ libxcb-randr0-dev \ libxcb-util0-dev \ libxcb1-dev \ libcairo2-dev \ python3-xcbgen \ libuv1-dev \ xcb-proto if [ "$POLYBAR_BUILD_TYPE" != "minimal" ]; then sudo apt-get install -y \ libxcb-xkb-dev \ libxcb-cursor-dev \ libxcb-xrm-dev \ i3-wm \ libcurl4-openssl-dev \ libjsoncpp-dev \ libasound2-dev \ libpulse-dev \ libnl-genl-3-dev \ libmpdclient-dev fi if [ "$POLYBAR_BUILD_TYPE" = "tests" ]; then sudo apt-get install -y lcov fi - uses: actions/checkout@v4 with: submodules: true ref: ${{ github.event.inputs.ref }} - name: Summary run: ./common/ci/summary.sh - name: Configure run: ./common/ci/configure.sh - name: Build run: | cd "$BUILD_DIR" make - name: Collect initial coverage if: ${{ matrix.polybar_build_type == 'tests' }} run: | lcov --capture --initial --no-external --directory . -o cov_base.info - name: Tests if: ${{ matrix.polybar_build_type == 'tests' }} run: | cd "$BUILD_DIR" make check - name: Collect coverage if: ${{ matrix.polybar_build_type == 'tests' }} run: | lcov --capture --no-external --directory . -o cov_tests.info lcov --add-tracefile cov_base.info --add-tracefile cov_tests.info -o cov_total.info lcov --remove cov_total.info "${PWD}/build/*" "${PWD}/tests/*" "${PWD}/lib/*" -o cov.info - name: Upload Coverage if: ${{ matrix.polybar_build_type == 'tests' }} uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests # We provide our own coverage files disable_search: true # Disable all plugins, we handle all preparations ourselves plugins: noop files: ./cov.info fail_ci_if_error: true verbose: true - name: Upload Logs if: failure() uses: actions/upload-artifact@v4 with: name: cmake path: | build/CMakeFiles/CMakeError.log build/CMakeFiles/CMakeOutput.log retention-days: 5