File: ci.yml

package info (click to toggle)
polybar 3.7.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,108 kB
  • sloc: cpp: 30,424; python: 3,750; sh: 284; makefile: 83
file content (166 lines) | stat: -rw-r--r-- 4,790 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
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