1
0
mirror of synced 2026-01-02 12:04:38 -05:00
Files
docs/translations/ru-RU/content/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/running-codeql-runner-in-your-ci-system.md
2022-11-16 21:42:42 +00:00

19 KiB
Raw Blame History

title, shortTitle, intro, product, redirect_from, versions, type, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
title shortTitle intro product redirect_from versions type topics ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
Запуск средства выполнения CodeQL в системе CI Run CodeQL runner {% data variables.code-scanning.codeql_runner %} можно использовать для выполнения {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} в сторонней системе непрерывной интеграции. {% data reusables.gated-features.code-scanning %}
/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
fpt ghes ghae ghec
* * * *
how_to
Advanced Security
Code scanning
CodeQL
Repositories
Pull requests
Integration
CI
SARIF
7e60376ed165a3af2da7f000c37d326cb33ade99 b617c4a7a1 MT ru-RU 11/11/2022 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 %}.

Во многих случаях проще настроить {% 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 %} для репозитория.

{% 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 %} и Интерфейс командной строки {% data variables.product.prodname_codeql %}. {% 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 %}. {% 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

chmod +x codeql-runner-linux

Действия для MacOS.

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 %}, например:

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 %}и Создание {% data variables.product.pat_generic %}.
  • Доступ к пакету {% 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".

Существуют следующие варианты предоставления доступа к пакету {% 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 %} мог скачать пакет автоматически.
  2. Скачайте или извлеките пакет вручную, сохраните его вместе с другими центральными ресурсами и используйте --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 %} для каждого анализируемого языка. Эти базы данных заполняются и анализируются последующими командами.
  2. 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.

{% 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. Извлеките репозиторий для анализа.

  2. Перейдите в каталог, в который извлечен репозиторий.

  3. Инициализируйте {% data variables.code-scanning.codeql_runner %} и создайте базы данных {% data variables.product.prodname_codeql %} для обнаруженных языков.

    $ 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. Извлеките репозиторий для анализа.

  2. Перейдите в каталог, в который извлечен репозиторий.

  3. Инициализируйте {% data variables.code-scanning.codeql_runner %} и создайте базы данных {% data variables.product.prodname_codeql %} для обнаруженных языков.

    $ 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".
    
  4. Получите скрипт, созданный действием init для настройки среды для мониторинга сборки. Обратите внимание на начальную точку и пробел в следующем фрагменте кода.

    $ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh
    
  5. Выполните сборку кода. В macOS перед командой сборки необходимо указать переменную среды $CODEQL_RUNNER. Дополнительные сведения см. в разделе Устранение неполадок {% data variables.code-scanning.codeql_runner %} в системе CI.

{% data reusables.code-scanning.codeql-runner-analyze-example %}

{% note %}

Примечание: Если вы используете контейнерную сборку, необходимо запустить {% data variables.code-scanning.codeql_runner %} в контейнере, в котором выполняется задача сборки.

{% endnote %}

Дополнительные материалы

{% else %}

Сведения о {% data variables.code-scanning.codeql_runner %}

{% data variables.code-scanning.codeql_runner %} устарел. {% data variables.product.prodname_codeql_cli %} версии 2.7.6 имеет полное равенство функций.

Сведения о переходе на {% data variables.product.prodname_codeql_cli %} см. в разделе Переход со средства выполнения CodeQL на CLI CodeQL.

Дополнительные материалы

{% endif %}