From 3231c93caea22a41bd9736bd04cbcba77dc95edb Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Fri, 10 Jul 2026 06:19:43 +0000
Subject: [PATCH] ci: add CodeQL code scanning workflow (#722)
---
.github/workflows/codeql.yml | 144 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 144 insertions(+), 0 deletions(-)
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 0000000..5876202
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,144 @@
+# The contents of this file are subject to the terms of the Common Development and
+# Distribution License (the License). You may not use this file except in compliance with the
+# License.
+#
+# You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+# specific language governing permission and limitations under the License.
+#
+# When distributing Covered Software, include this CDDL Header Notice in each file and include
+# the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+# Header, with the fields enclosed by brackets [] replaced by your own identifying
+# information: "Portions copyright [year] [name of copyright owner]".
+#
+# Copyright 2026 3A Systems, LLC.
+
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ 'sustaining/4.10.x','master', 'issues/**', 'features/**' ]
+ pull_request:
+ branches: [ 'master' ]
+ schedule:
+ # Weekly run, Mondays at 03:27 UTC
+ - cron: '27 3 * * 1'
+ # Allows running this workflow manually from the Actions tab or via the gh CLI.
+ workflow_dispatch:
+
+# Cancel superseded runs on the same ref to avoid the long-running,
+# eventually-cancelled analyses seen with the previous default setup.
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ analyze:
+ name: Analyze (${{ matrix.language }})
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 360
+ permissions:
+ # Required to upload results to code scanning.
+ security-events: write
+ # Only needed for workflows in private repositories.
+ actions: read
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ # java-kotlin is extracted from source, so build-mode 'none' lets
+ # CodeQL build its model without invoking Maven. This large
+ # multi-module Maven build is expensive to compile, and 'none' avoids
+ # the long, eventually-cancelled autobuild that the previous default
+ # setup hit.
+ #
+ # For higher precision on Java (dataflow through compiled dependencies)
+ # switch that entry to 'manual' and uncomment the Maven build below.
+ - language: java-kotlin
+ os: ubuntu-latest
+ build-mode: none
+ # 'actions' scans the workflow YAML under .github/workflows for
+ # injection, over-privileged permissions and untrusted-input issues.
+ - language: actions
+ os: ubuntu-latest
+ build-mode: none
+ # 'ruby' (interpreted) covers the few .rb helper/extension scripts.
+ - language: ruby
+ os: ubuntu-latest
+ build-mode: none
+ # C/C++ (the Windows native launcher/service under
+ # opendj-server-legacy/src/build-tools/windows) has no 'none' build
+ # mode, so it is compiled manually with nmake/MSVC on Windows, exactly
+ # as the main Build workflow does.
+ - language: c-cpp
+ os: windows-latest
+ build-mode: manual
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v7
+ with:
+ submodules: recursive
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v4
+ with:
+ languages: ${{ matrix.language }}
+ build-mode: ${{ matrix.build-mode }}
+ queries: security-and-quality
+ # Exclude test and integration-test sources. With build-mode 'none'
+ # CodeQL extracts straight from source, so paths-ignore reliably
+ # scopes the analysis (it is honored for compiled languages only when
+ # build-mode is 'none').
+ config: |
+ paths-ignore:
+ - '**/src/test/**'
+ - '**/src/it/**'
+
+ # --- C/C++ manual build (Windows native executables) -----------------
+ - name: Setup MSVC Developer Command Prompt (x86)
+ if: matrix.language == 'c-cpp'
+ uses: ilammy/msvc-dev-cmd@v1
+ env:
+ # Opt in to Node.js 24 for this action, which still ships on Node.js 20.
+ # See https://github.com/ilammy/msvc-dev-cmd/issues/99
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
+ with:
+ arch: x86
+ - name: Build Windows native executables
+ if: matrix.language == 'c-cpp'
+ shell: cmd
+ run: |
+ cd opendj-server-legacy\src\build-tools\windows
+ nmake all
+ # ---------------------------------------------------------------------
+
+ # --- Java manual build (only used if the java entry is set to 'manual')
+ # - name: Set up JDK 11
+ # if: matrix.language == 'java-kotlin'
+ # uses: actions/setup-java@v5
+ # with:
+ # java-version: '11'
+ # distribution: 'zulu'
+ # - name: Cache Maven packages
+ # if: matrix.language == 'java-kotlin'
+ # uses: actions/cache@v6
+ # with:
+ # path: ~/.m2/repository
+ # key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }}
+ # restore-keys: ${{ runner.os }}-m2-repository
+ # - name: Build with Maven
+ # if: matrix.language == 'java-kotlin'
+ # env:
+ # MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10
+ # run: mvn --batch-mode --errors -DskipTests -Dmaven.test.skip=true clean compile --file pom.xml
+ # ---------------------------------------------------------------------
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v4
+ with:
+ category: "/language:${{ matrix.language }}"
--
Gitblit v1.10.0