Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Установка CodeQL CLI в системе CI

Вы можете установить CodeQL CLI и использовать его для выполнения CodeQL code scanning в сторонней системе непрерывной интеграции.

Code scanning доступно во всех открытых репозиториях на GitHub.com. Code scanning также доступно в частных репозиториях, принадлежащих организациям, которые используют GitHub Enterprise Cloud и имеют лицензию на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Сведения об использовании CodeQL CLI для code scanning

Используйте CodeQL CLI для запуска code scanning в коде, который вы обрабатываете в сторонней системе непрерывной интеграции (CI). Code scanning — это функция, применяемая для анализа кода в репозитории GitHub на предмет уязвимостей системы безопасности и ошибок кодирования. Все проблемы, обнаруженные в результате анализа, отображаются в GitHub. Дополнительные сведения см. в статье Сведения о code scanning с CodeQL. Рекомендуемые спецификации (ОЗУ, ядра ЦП и диск) для выполнения анализа CodeQL см. на странице Рекомендуемые аппаратные ресурсы для запускаCodeQL.

CodeQL CLI является отдельным продуктом, который можно использовать для анализа кода. Его основная задача — создание представления базы данных для базы кода, базы данных CodeQL. Когда база данных будет готова, вы можете выполнить запросы в интерактивном режиме или выполнить набор запросов, чтобы создать набор результатов в формате SARIF и отправить результаты в GitHub.com.

Кроме того, можно использовать GitHub Actions для запуска code scanning в GitHub. Сведения об использовании действий code scanning см. в разделе Настройка code scanning для репозитория. Общие сведения о параметрах для систем CI см. в разделе Сведения о CodeQL code scanning в системе CI.

Примечания.

  • CodeQL CLI бесплатно для использования в общедоступных репозиториях. Кроме того, CodeQL CLI доступна в частных репозиториях, принадлежащих организациям, которые используют GitHub Enterprise Cloud и имеют лицензию на GitHub Advanced Security. Дополнительные сведения см. в разделе "GitHub CodeQL Условия" и "CodeQL CLI".
  • В настоящее время CodeQL CLI несовместим с дистрибутивами Linux не на основе glibc, такими как Alpine Linux (на основе musl).

Загрузка CodeQL CLI

Загрузите пакет CodeQL из https://github.com/github/codeql-action/releases. Содержимое пакета:

  • Продукт CodeQL CLI
  • совместимая версия запросов и библиотек из https://github.com/github/codeql;
  • предварительно скомпилированные версии всех запросов, включенных в пакет.

Следует всегда использовать пакет CodeQL, так как это обеспечивает совместимость и более высокую производительность по сравнению с отдельной загрузкой CodeQL CLI и возвратом запросов CodeQL. Если вы будете запускать CLI только на одной конкретной платформе, скачайте соответствующий файл codeql-bundle-PLATFORM.tar.gz. Кроме того, можно скачать файл codeql-bundle.tar.gz, содержащий CLI для всех поддерживаемых платформ.

Примечание. Функция управления пакетами CodeQL, включая пакеты CodeQL в настоящее время доступна в бета-версии и может быть изменена.

Настройка CodeQL CLI в системе CI

Необходимо предоставить доступ ко всему содержимому пакета CodeQL CLI для каждого сервера CI, на котором будет выполняться анализ CodeQL code scanning. Например, можно настроить каждый сервер для копирования пакета из центрального внутреннего расположения и извлечения его. Кроме того, можно использовать REST API для получения пакета непосредственно из GitHub, чтобы использовать преимущества последних улучшений запросов. Обновления для CodeQL CLI выходят каждые 2–3 недели. Пример:

$ wget https://github.com/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
$ tar -xvzf ./codeql-bundle-linux64.tar.gz

После извлечения пакета CodeQL CLI можно запустить исполняемый файл codeql на сервере:

  • Выполнив /<extraction-root>/codeql/codeql, где <extraction-root> — папка, в которую вы извлекли пакет CodeQL CLI.

  • Добавив /<extraction-root>/codeql в PATH, чтобы можно было запустить исполняемый файл просто как codeql.

Если вы используете CodeQL CLI для анализа кода, написанного на Python, необходимо убедиться, что в системе CI установлен Python 3.

Тестирование конфигурации CodeQL CLI

После извлечения пакета CodeQL CLI можно выполнить следующую команду, чтобы убедиться, что интерфейс командной строки правильно настроен для создания и анализа баз данных.

  • codeql resolve qlpacks, если /<extraction-root>/codeql находится в PATH.
  • В противном случае — значение /<extraction-root>/codeql/codeql resolve qlpacks.

Извлечение из успешных выходных данных:

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>)
...

Убедитесь, что выходные данные содержат ожидаемые языки, а расположение каталога для файлов qlpack указано верно. Расположение должно находиться в извлеченном пакете данных CodeQL CLI, как показано выше в виде <extraction root>, если вы не используете извлечение github/codeql. Если CodeQL CLI не удается найти qlpacks для ожидаемых языков, убедитесь, что скачали пакет CodeQL, а не отдельную копию CodeQL CLI.

Создание маркера для проверки подлинности с помощью GitHub

Каждому серверу CI требуется GitHub App или personal access token для использования CodeQL CLI для отправки результатов в GitHub. Необходимо использовать маркер доступа или GitHub App с разрешением на запись security_events. Если серверы CI уже используют маркер с этой областью для извлечения репозиториев из GitHub, вы можете позволить CodeQL CLI использовать тот же маркер. В противном случае создайте новый маркер с разрешением на запись security_events и добавьте его в хранилище секретов системы CI. Дополнительные сведения см. в разделах Создание GitHub Appsи Создание personal access token.

Дальнейшие действия

Теперь все готово для настройки системы CI для анализа CodeQL, создания результатов и отправки их в GitHub, где результаты будут сопоставляться с ветвью или запросом на вытягивание и отображаться как оповещения code scanning. Дополнительные сведения см. в статье Настройка CodeQL CLI в системе CI.