# Copyright (C) 2021-2024 Saturneric # # This file is part of GpgFrontend. # # GpgFrontend is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GpgFrontend is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GpgFrontend. If not, see . # # The initial version of the source code is inherited from # the gpg4usb project, which is under GPL-3.0-or-later. # # All the source code of GpgFrontend was modified and released by # Saturneric starting on May 12, 2021. # # SPDX-License-Identifier: GPL-3.0-or-later name: "CodeQL" on: push: branches: [main] pull_request: branches: [main] schedule: - cron: "19 14 * * 2" env: BUILD_TYPE: Debug jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: ["cpp"] steps: - name: Checkout repository uses: actions/checkout@v4 with: lfs: "false" submodules: recursive - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: Install Dependence run: | sudo apt-get update sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo sudo apt-get -y install gcc g++ ninja-build sudo apt-get -y install libarchive-dev libgpgme-dev sudo apt-get -y install gpg - name: Build gpg-error run: | git clone --depth 1 --branch libgpg-error-1.51 git://git.gnupg.org/libgpg-error.git ${{github.workspace}}/third_party/libgpg-error cd ${{github.workspace}}/third_party/libgpg-error ./autogen.sh ./configure --enable-maintainer-mode && make -j4 sudo make install cd ${{github.workspace}} - name: Build assuan run: | git clone --depth 1 --branch libassuan-2.5.7 git://git.gnupg.org/libassuan.git ${{github.workspace}}/third_party/libassuan cd ${{github.workspace}}/third_party/libassuan ./autogen.sh ./configure --enable-maintainer-mode && make -j4 sudo make install cd ${{github.workspace}} - name: Build GpgME run: | git clone --depth 1 --branch gpgme-1.24.2 git://git.gnupg.org/gpgme.git ${{github.workspace}}/third_party/gpgme cd ${{github.workspace}}/third_party/gpgme ./autogen.sh ./configure --enable-maintainer-mode --enable-languages=cpp && make -j4 sudo make install cd ${{github.workspace}} - name: Build googletest run: | git clone --depth 1 --branch v1.15.0 https://github.com/google/googletest.git ${{github.workspace}}/third_party/googletest cd ${{github.workspace}}/third_party/googletest mkdir build && cd build cmake -G Ninja -DBUILD_SHARED_LIBS=ON .. ninja sudo ninja install - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: "6.7.2" cache: "true" - name: Configure CMake && Build GpgFrontend run: | cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON cmake --build ${{github.workspace}}/build --config {{$env.BUILD_TYPE}} -- -v - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3