Nota: Tu administrador de sitio debe habilitar el escaneo de código para tu instancia de GitHub Enterprise Server antes de que puedas utilizar esta característica. Para obtener más información, consulta "Configurar el escaneo de código en tu aplicativo."
About using the CodeQL CLI for escaneo de código
You can use the CodeQL CLI to run escaneo de código on code that you're processing in a third-party continuous integration (CI) system. Escaneo de código es una característica que utilizas para analizar el código en un repositorio de GitHub para encontrar vulnerabilidades de seguridad y errores de código. Cualquier problema que se identifique con el análisis se muestra en GitHub Enterprise Server. For information, see "About escaneo de código with CodeQL." For recommended specifications (RAM, CPU cores, and disk) for running CodeQL analysis, see "Recommended hardware resources for running CodeQL."
Alternatively, you can use GitHub Actions to run escaneo de código within GitHub Enterprise Server. For information about escaneo de código using actions, see "Setting up escaneo de código for a repository." For an overview of the options for CI systems, see "About CodeQL escaneo de código in your CI system".
Note: The CodeQL CLI is available to customers with an Advanced Security license.
Downloading the CodeQL CLI
You should download the CodeQL bundle from https://github.com/github/codeql-action/releases. The bundle contains:
- CodeQL CLI product
- A compatible version of the queries and libraries from https://github.com/github/codeql
- Precompiled versions of all the queries included in the bundle
You should always use the CodeQL bundle as this ensures compatibility and also gives much better performance than a separate download of the CodeQL CLI and checkout of the CodeQL queries. If you will only be running the CLI on one specific platform, download the appropriate codeql-bundle-PLATFORM.tar.gz
file. Alternatively, you can download codeql-bundle.tar.gz
, which contains the CLI for all supported platforms.
Setting up the CodeQL CLI in your CI system
You need to make the full contents of the CodeQL CLI bundle available to every CI server that you want to run CodeQL escaneo de código analysis on. For example, you might configure each server to copy the bundle from a central, internal location and extract it. Alternatively, you could use the REST API to get the bundle directly from GitHub, ensuring that you benefit from the latest improvements to queries. Updates to the CodeQL CLI are released every 2-3 weeks. For example:
$ wget https://HOSTNAME/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
$ tar -xvzf ../codeql-bundle-linux64.tar.gz
After you extract the CodeQL CLI bundle, you can run the codeql
executable on the server:
- By executing
/<extraction-root>/codeql/codeql
, where<extraction-root>
is the folder where you extracted the CodeQL CLI bundle. - By adding
/<extraction-root>/codeql
to yourPATH
, so that you can run the executable as justcodeql
.
Testing the CodeQL CLI set up
After you extract the CodeQL CLI bundle, you can run the following command to verify that the CLI is correctly set up to create and analyze databases.
codeql resolve qlpacks
if/<extraction-root>/codeql
is on thePATH
./<extraction-root>/codeql/codeql resolve qlpacks
otherwise.
Extract from successful output:
codeql/cpp-all (/<extraction-root>/qlpacks/codeql/cpp-all/<version>)
codeql/cpp-examples (/<extraction-root>/qlpacks/codeql/cpp-examples/<version>)
codeql/cpp-queries (/<extraction-root>/qlpacks/codeql/cpp-queries/<version>)
codeql/csharp-all (/<extraction-root>/qlpacks/codeql/charp-all/<version>)
codeql/csharp-examples (/<extraction-root>/qlpacks/codeql/charp-examples/<version>)
codeql/csharp-queries (/<extraction-root>/qlpacks/codeql/charp-queries/<version>)
codeql/java-all (/<extraction-root>/qlpacks/codeql/java-all/<version>)
codeql/java-examples (/<extraction-root>/qlpacks/codeql/java-examples/<version>)
codeql/java-queries (/<extraction-root>/qlpacks/codeql/java-queries/<version>)
codeql/javascript-all (/<extraction-root>/qlpacks/codeql/javascript-all/<version>)
codeql/javascript-examples (/<extraction-root>/qlpacks/codeql/javascript-examples/<version>)
codeql/javascript-queries (/<extraction-root>/qlpacks/codeql/javascript-queries/<version>)
codeql/python-all (/<extraction-root>/qlpacks/codeql/python-all/<version>)
codeql/python-examples (/<extraction-root>/qlpacks/codeql/python-examples/<version>)
codeql/python-queries (/<extraction-root>/qlpacks/codeql/python-queries/<version>)
codeql/ruby-all (/<extraction-root>/qlpacks/codeql/ruby-all/<version>)
codeql/ruby-examples (/<extraction-root>/qlpacks/codeql/ruby-examples/<version>)
codeql/ruby-queries (/<extraction-root>/qlpacks/codeql/ruby-queries/<version>)
...
You should check that the output contains the expected languages and also that the directory location for the qlpack files is correct. The location should be within the extracted CodeQL CLI bundle, shown above as <extraction root>
, unless you are using a checkout of github/codeql
. If the CodeQL CLI is unable to locate the qlpacks for the expected languages, check that you downloaded the CodeQL bundle and not a standalone copy of the CodeQL CLI.
Generating a token for authentication with GitHub Enterprise Server
Each CI server needs a GitHub App or personal access token for the CodeQL CLI to use to upload results to GitHub Enterprise Server. You must use an access token or a GitHub App with the security_events
write permission. If CI servers already use a token with this scope to checkout repositories from GitHub Enterprise Server, you could potentially allow the CodeQL CLI to use the same token. Otherwise, you should create a new token with the security_events
write permission and add this to the CI system's secret store. For information, see "Building GitHub Apps" and "Creating a personal access token."
Next steps
You're now ready to configure the CI system to run CodeQL analysis, generate results, and upload them to GitHub Enterprise Server where the results will be matched to a branch or pull request and displayed as escaneo de código alerts. For detailed information, see "Configuring CodeQL CLI in your CI system."