|
33 | 33 | if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository }} |
34 | 34 | outputs: |
35 | 35 | version: ${{ steps.version.outputs.value }} |
| 36 | + should_run: ${{ steps.check_static_analysis.outputs.should_run }} |
36 | 37 |
|
37 | 38 | steps: |
38 | 39 | - name: Checkout repository |
|
43 | 44 | id: version |
44 | 45 | run: | |
45 | 46 | echo "value=$(python3 -u scripts/utils.py --version)" >>$GITHUB_OUTPUT |
| 47 | + - name: Check if static analysis is required |
| 48 | + id: check_static_analysis |
| 49 | + run: | |
| 50 | + python3 -u scripts/run_static_analysis.py --check-changed-files |
| 51 | + if [ $? -eq 0 ]; then |
| 52 | + echo "should_run=true" >> $GITHUB_OUTPUT |
| 53 | + else |
| 54 | + echo "should_run=false" >> $GITHUB_OUTPUT |
| 55 | + fi |
46 | 56 | - name: Remove artifacts |
47 | 57 | uses: swift-project/delete-artifact@swift |
48 | 58 | with: |
@@ -106,9 +116,58 @@ jobs: |
106 | 116 | with: |
107 | 117 | path: docs/html/ |
108 | 118 |
|
| 119 | + staticAnalysis: |
| 120 | + runs-on: ubuntu-22.04 |
| 121 | + needs: [ preBuild, checks ] |
| 122 | + if: ${{ needs.preBuild.outputs.should_run == 'true' }} |
| 123 | + steps: |
| 124 | + - name: Install Qt |
| 125 | + uses: jurplel/install-qt-action@v4 |
| 126 | + with: |
| 127 | + version: ${{ env.qt_version }} |
| 128 | + modules: 'qtmultimedia' |
| 129 | + cache: true |
| 130 | + - name: Install dependencies |
| 131 | + run: | |
| 132 | + sudo apt-get -y install dbus-x11 libglu1-mesa-dev libpulse-dev libdbus-1-dev ninja-build |
| 133 | + pip3 install requests conan |
| 134 | + - name: Checkout repository |
| 135 | + uses: actions/checkout@v4 |
| 136 | + with: |
| 137 | + submodules: true |
| 138 | + fetch-depth: 0 |
| 139 | + - name: Checkout externals |
| 140 | + if: ${{ env.use_externals == 'true' }} |
| 141 | + uses: actions/checkout@v4 |
| 142 | + env: |
| 143 | + EXTERNALS_PAT: ${{ secrets.EXTERNALS_PAT }} |
| 144 | + with: |
| 145 | + repository: ${{ env.externals }} |
| 146 | + ref: ${{ env.externals_sha }} |
| 147 | + token: ${{ env.EXTERNALS_PAT }} |
| 148 | + path: 'third_party/externals' |
| 149 | + - name: Install conan dependencies |
| 150 | + shell: bash |
| 151 | + env: |
| 152 | + ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} |
| 153 | + ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} |
| 154 | + run: | |
| 155 | + conan profile detect |
| 156 | + conan remote disable conancenter |
| 157 | + conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local |
| 158 | + conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN" |
| 159 | + conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_linux |
| 160 | + - name: Install conan dependencies |
| 161 | + shell: bash |
| 162 | + run: | |
| 163 | + mkdir build && pushd build |
| 164 | + cmake .. --preset ci-build-linux-no-pch |
| 165 | + popd .. |
| 166 | + python3 scripts/run_static_analysis.py --clang-tidy --build-path build --changed-files-ci |
| 167 | +
|
109 | 168 | buildLinux: |
110 | 169 | runs-on: ubuntu-22.04 |
111 | | - needs: [preBuild, checks] |
| 170 | + needs: [preBuild, checks, staticAnalysis] |
112 | 171 | env: |
113 | 172 | BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} |
114 | 173 | BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} |
@@ -218,7 +277,7 @@ jobs: |
218 | 277 |
|
219 | 278 | buildWin64: |
220 | 279 | runs-on: windows-2022 |
221 | | - needs: [preBuild, checks] |
| 280 | + needs: [preBuild, checks, staticAnalysis] |
222 | 281 | env: |
223 | 282 | BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} |
224 | 283 | BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} |
@@ -329,7 +388,7 @@ jobs: |
329 | 388 |
|
330 | 389 | buildMacOS: |
331 | 390 | runs-on: macos-13 |
332 | | - needs: [preBuild, checks] |
| 391 | + needs: [preBuild, checks, staticAnalysis] |
333 | 392 | env: |
334 | 393 | BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} |
335 | 394 | BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} |
@@ -438,7 +497,7 @@ jobs: |
438 | 497 |
|
439 | 498 | postBuild: |
440 | 499 | runs-on: ubuntu-22.04 |
441 | | - needs: [preBuild, checks, buildLinux, buildWin64, buildMacOS] |
| 500 | + needs: [preBuild, checks, staticAnalysis, buildLinux, buildWin64, buildMacOS] |
442 | 501 |
|
443 | 502 | steps: |
444 | 503 | - name: Download xswiftbus-thin |
|
0 commit comments