---
title: Запуск средства выполнения CodeQL в системе CI
shortTitle: Run CodeQL runner
intro: '{% data variables.code-scanning.codeql_runner %} можно использовать для выполнения {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} в сторонней системе непрерывной интеграции.'
product: '{% data reusables.gated-features.code-scanning %}'
redirect_from:
- /github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system
- /github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system
- /code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system
- /code-security/secure-coding/running-codeql-runner-in-your-ci-system
- /code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system/running-codeql-runner-in-your-ci-system
versions:
fpt: '*'
ghes: '*'
ghae: '*'
ghec: '*'
type: how_to
topics:
- Advanced Security
- Code scanning
- CodeQL
- Repositories
- Pull requests
- Integration
- CI
- SARIF
ms.openlocfilehash: 7e60376ed165a3af2da7f000c37d326cb33ade99
ms.sourcegitcommit: b617c4a7a1e4bf2de3987a86e0eb217d7031490f
ms.translationtype: MT
ms.contentlocale: ru-RU
ms.lasthandoff: 11/11/2022
ms.locfileid: '148161097'
---
{% ifversion codeql-runner-supported %}
{% data reusables.code-scanning.deprecation-codeql-runner %} {% data reusables.code-scanning.beta %} {% data reusables.code-scanning.enterprise-enable-code-scanning %}
## Сведения о {% data variables.code-scanning.codeql_runner %}
{% data variables.code-scanning.codeql_runner %} — это средство, которое можно использовать для запуска {% data variables.product.prodname_code_scanning %} в коде, обрабатываемом в сторонней системе непрерывной интеграции (CI). {% data reusables.code-scanning.about-code-scanning %} Дополнительные сведения см. в статье [Сведения о {% data variables.product.prodname_code_scanning %} с {% data variables.product.prodname_codeql %}](/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql).
Во многих случаях проще настроить {% data variables.product.prodname_code_scanning %} {% data variables.product.prodname_codeql %} с помощью {% data variables.product.prodname_codeql_cli %} непосредственно в системе CI.
Вы также можете использовать {% data variables.product.prodname_actions %} для запуска {% data variables.product.prodname_code_scanning %} в {% data variables.product.product_name %}. Дополнительные сведения см. в разделе [Настройка {% data variables.product.prodname_code_scanning %} для репозитория](/code-security/secure-coding/setting-up-code-scanning-for-a-repository).
{% data variables.code-scanning.codeql_runner %} — это программа командной строки, которая выполняет анализ {% data variables.product.prodname_codeql %} при извлечении репозитория {% data variables.product.prodname_dotcom %}. Вы добавляете средство выполнения в свою стороннюю систему, а затем вызываете это средство выполнения для анализа кода и отправки результатов в {% data variables.product.product_name %}. Эти результаты отображаются в репозитории как оповещения {% data variables.product.prodname_code_scanning %}.
{% note %}
**Примечание.** {% ifversion fpt or ghec %}
* {% data variables.code-scanning.codeql_runner %} использует интерфейс командной строки {% data variables.product.prodname_codeql %} для анализа кода и, следовательно, имеет те же условия лицензии. Его можно бесплатно использовать в общедоступных репозиториях, которые хранятся на {% data variables.product.prodname_dotcom_the_website %}, а также можно использовать в частных репозиториях, принадлежащих клиентам с лицензией {% data variables.product.prodname_advanced_security %}. Дополнительные сведения см. в разделах [Условия {% data variables.product.product_name %} {% data variables.product.prodname_codeql %}](https://securitylab.github.com/tools/codeql/license) и [Интерфейс командной строки {% data variables.product.prodname_codeql %}](https://codeql.github.com/docs/codeql-cli/).
{% else %}
* {% data variables.code-scanning.codeql_runner %} доступен клиентам с лицензией {% data variables.product.prodname_advanced_security %}.
{% endif %} {% ifversion ghae %}
* {% data variables.code-scanning.codeql_runner %} не следует путать с интерфейсом командной строки {% data variables.product.prodname_codeql %}. CLI {% data variables.product.prodname_codeql %} — это интерфейс командной строки, который позволяет создавать базы данных {% data variables.product.prodname_codeql %} для исследования безопасности и выполнять запросы {% data variables.product.prodname_codeql %}.
Дополнительные сведения см. в разделе [{% data variables.product.prodname_codeql_cli %}](https://codeql.github.com/docs/codeql-cli/).
{% endif %} {% endnote %}
## Скачивание {% data variables.code-scanning.codeql_runner %}
{% data variables.code-scanning.codeql_runner %} можно скачать из https://{% ifversion fpt or ghec %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases. В некоторых операционных системах может потребоваться изменить разрешения для скачанного файла, прежде чем его можно будет запустить.
В Linux
```shell
chmod +x codeql-runner-linux
```
Действия для MacOS.
```shell
chmod +x codeql-runner-macos
sudo xattr -d com.apple.quarantine codeql-runner-macos
```
В Windows изменение разрешений для файла `codeql-runner-win.exe` обычно не требуется.
## Добавление {% data variables.code-scanning.codeql_runner %} в систему CI
Скачав {% data variables.code-scanning.codeql_runner %} и убедившись, что он может быть выполнен, следует сделать средство выполнения доступным для каждого сервера CI, который планируется использовать для {% data variables.product.prodname_code_scanning %}. Например, можно настроить каждый сервер для копирования средства выполнения из центрального внутреннего расположения. Кроме того, можно использовать REST API для получения средства выполнения непосредственно из {% data variables.product.prodname_dotcom %}, например:
```shell
wget https://{% ifversion fpt or ghec %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases/latest/download/codeql-runner-linux
chmod +x codeql-runner-linux
```
Помимо этого, каждому серверу CI также потребуется следующее.
- {% data variables.product.prodname_github_app %} или {% data variables.product.pat_generic %} для использования {% data variables.code-scanning.codeql_runner %}. Необходимо использовать маркер доступа с областью `repo` или {% data variables.product.prodname_github_app %} с разрешением на запись `security_events`, а также разрешениями на чтение `metadata` и `contents`. Дополнительные сведения см. в [разделах Создание {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps)и [Создание {% data variables.product.pat_generic %}](/github/authenticating-to-github/creating-a-personal-access-token).
- Доступ к пакету {% data variables.product.prodname_codeql %}, связанному с этим выпуском {% data variables.code-scanning.codeql_runner %}. Этот пакет содержит запросы и библиотеки, необходимые для анализа {% data variables.product.prodname_codeql %}, а также интерфейс командной строки {% data variables.product.prodname_codeql %}, который используется средством выполнения внутренним образом. Дополнительные сведения см. в разделе "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)".
Существуют следующие варианты предоставления доступа к пакету {% data variables.product.prodname_codeql %}.
1. Разрешите серверам CI доступ к https://{% ifversion fpt or ghec %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action, чтобы {% data variables.code-scanning.codeql_runner %} мог скачать пакет автоматически.
1. Скачайте или извлеките пакет вручную, сохраните его вместе с другими центральными ресурсами и используйте `--codeql-path` флаг , чтобы указать расположение пакета в вызовах для инициализации {% data variables.code-scanning.codeql_runner %}.
## Вызов {% data variables.code-scanning.codeql_runner %}
Необходимо вызвать {% data variables.code-scanning.codeql_runner %} из расположения возврата репозитория, который требуется проанализировать. При этом используются две следующие основные команды.
1. `init` требуется для инициализации средства выполнения и создания базы данных {% data variables.product.prodname_codeql %} для каждого анализируемого языка. Эти базы данных заполняются и анализируются последующими командами.
1. `analyze` требуется для заполнения баз данных {% data variables.product.prodname_codeql %}, анализа их и отправки результатов в {% data variables.product.product_name %}.
Для обеих команд необходимо указать URL-адрес {% data variables.product.product_name %}, *владельца/имя* репозитория, а также {% data variables.product.prodname_github_apps %} или {% data variables.product.pat_generic %} для проверки подлинности. Кроме того, необходимо указать расположение пакета CodeQL, если сервер CI не имеет доступа для его загрузки непосредственно из репозитория `github/codeql-action`.
Вы можете настроить, где {% data variables.code-scanning.codeql_runner %} хранит пакет CodeQL для последующего анализа на сервере с помощью флага `--tools-dir` и где он хранит временные файлы во время анализа с помощью `--temp-dir`.
Для просмотра ссылки на командную строку для средства выполнения используйте флаг `-h`. Например, чтобы вывести список всех команд, выполните `codeql-runner-OS -h`, а чтобы вывести список всех флагов, доступных для команды `init`, выполните `codeql-runner-OS init -h` (где `OS` зависит от используемого исполняемого файла). Дополнительные сведения см. в разделе [Настройка {% data variables.product.prodname_code_scanning %} в системе CI](/code-security/secure-coding/configuring-codeql-runner-in-your-ci-system#codeql-runner-command-reference).
{% data reusables.code-scanning.upload-sarif-alert-limit %}
### Простой пример
В этом примере запускается анализ {% data variables.product.prodname_codeql %} на сервере CI Linux для репозитория `octo-org/example-repo`, размещенного в `{% data variables.command_line.git_url_example %}`. Процесс очень прост, так как репозиторий содержит только языки, которые можно анализировать с помощью {% data variables.product.prodname_codeql %} напрямую, без сборки (то есть Go, JavaScript, Python и TypeScript).
В этом примере сервер имеет доступ к загрузке пакета {% data variables.product.prodname_codeql %} непосредственно из репозитория `github/codeql-action`, поэтому нет необходимости использовать флаг `--codeql-path`.
1. Извлеките репозиторий для анализа.
1. Перейдите в каталог, в который извлечен репозиторий.
1. Инициализируйте {% data variables.code-scanning.codeql_runner %} и создайте базы данных {% data variables.product.prodname_codeql %} для обнаруженных языков.
```shell
$ echo "$TOKEN" | /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo
--github-url {% data variables.command_line.git_url_example %} --github-auth-stdin
> Cleaning temp directory /srv/checkout/example-repo/codeql-runner
> ...
> Created CodeQL database at /srv/checkout/example-repo/codeql-runner/codeql_databases/javascript.
```
{% data reusables.code-scanning.codeql-runner-analyze-example %}
### Пример со скомпилированным языком
Этот пример аналогичен предыдущему, но на этот раз репозиторий содержит код на C/C++, C# или Java. Чтобы создать базу данных {% data variables.product.prodname_codeql %} для этих языков, интерфейс командной строки должен выполнять мониторинг сборки. В конце процесса инициализации средство выполнения сообщает команду, необходимую для настройки среды перед сборкой кода. Вы должны выполнить эту команду, прежде чем вызывать обычный процесс сборки CI, а затем выполнить команду `analyze`.
1. Извлеките репозиторий для анализа.
1. Перейдите в каталог, в который извлечен репозиторий.
1. Инициализируйте {% data variables.code-scanning.codeql_runner %} и создайте базы данных {% data variables.product.prodname_codeql %} для обнаруженных языков.
```shell
$ echo "$TOKEN" | /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo-2
--github-url {% data variables.command_line.git_url_example %} --github-auth-stdin
> Cleaning temp directory /srv/checkout/example-repo-2/codeql-runner
> ...
> CodeQL environment output to "/srv/checkout/example-repo-2/codeql-runner/codeql-env.json"
and "/srv/checkout/example-repo-2/codeql-runner/codeql-env.sh".
Please export these variables to future processes so that CodeQL can monitor the build, for example by running
". /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh".
```
1. Получите скрипт, созданный действием `init` для настройки среды для мониторинга сборки. Обратите внимание на начальную точку и пробел в следующем фрагменте кода.
```shell
$ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh
```
1. Выполните сборку кода. В macOS перед командой сборки необходимо указать переменную среды `$CODEQL_RUNNER`. Дополнительные сведения см. в разделе [Устранение неполадок {% data variables.code-scanning.codeql_runner %} в системе CI](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system#no-code-found-during-the-build).
{% data reusables.code-scanning.codeql-runner-analyze-example %}
{% note %}
**Примечание:** Если вы используете контейнерную сборку, необходимо запустить {% data variables.code-scanning.codeql_runner %} в контейнере, в котором выполняется задача сборки.
{% endnote %}
## Дополнительные материалы
- [Настройка {% data variables.code-scanning.codeql_runner %} в системе CI](/code-security/secure-coding/configuring-codeql-runner-in-your-ci-system)
- [Устранение неполадок {% data variables.code-scanning.codeql_runner %} в системе CI](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system)
{% else %}
## Сведения о {% data variables.code-scanning.codeql_runner %}
{% data variables.code-scanning.codeql_runner %} устарел. [{% data variables.product.prodname_codeql_cli %}](https://github.com/github/codeql-cli-binaries/releases) версии 2.7.6 имеет полное равенство функций.
Сведения о переходе на {% data variables.product.prodname_codeql_cli %} см. в разделе [Переход со средства выполнения CodeQL на CLI CodeQL](/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/migrating-from-the-codeql-runner-to-codeql-cli).
## Дополнительные материалы
- [Объявление нерекомендуемым средства выполнения CodeQL](https://github.blog/changelog/2021-09-21-codeql-runner-deprecation/) в блоге GitHub
{% endif %}