Skip to content

Actions

Dmitriy Popov edited this page Jan 14, 2021 · 5 revisions

На каждый push и pull request (события, actions) автоматически запускаются задачи (jobs)

Задачи описаны в файлах yml и находятся в /.github/workflows и состоят из шагов (steps)

Когда происходит событие, GitHub на своей виртуальной машине воспроизводит описанные шаги, процесс доступен во вкладке Actions

Процесс (workflow) Code Analysis

Этот процесс описан в файле /.github/workflows/analyze.yaml

Состоит из 3 задач, которые запускаются параллельно:

1. sonarcloud

В этой задаче клонируется репозиторий, устанавливается Java JDK 11, загружаются из кэша maven пакеты. (Во время сборки maven проекта отсутствующие в кэше пакеты скачиваются с сети и загружаются в кэш и потом доступны при следующем запуске задачи)

Код анализируется с помощью SonarCube. Для правильной интеграции с SonarCloud нужно указать следующие параметры:

-Dsonar.projectKey=kghackers_kgparser

-Dsonar.organization=kghackers

-Dsonar.host.url=https://sonarcloud.io

-Dsonar.login=$SONAR_TOKEN

В не зависимости от результата выполнения шагов в задаче (fail/success), приходит оповещение в телеграмм группу KG Parser CI/CD

2. codeql_js

В этом задаче клонируется репозиторий и инициализируется CodeQL с указанием настроек:

config-file: путь к файлу с конфигами Using a custom configuration file

languages: язык, который будем анализировать, в данном случае javascript

queries: условия, какие проверяются, можно указывать несколько групп условия (безопасность, стиль и т.д.) или же писать свои условия и подключать их Running Additional Queries

Результаты анализа доступны во вкладке Security меню Code Scanning Alerts подменю CodeQL

3. codeql_java

В этой задаче клонируется репозиторий, устанавливается Java JDK 11, загружаются из кэша maven пакеты и инициализируется CodeQL с указанием настроек, подобно codeql_js

Дополнительно в этой задаче есть шаг Autobuild, который автоматически собирает maven проект и потом производит анализ. Результаты доступны там же, где и результаты codeql_js

Вместо клонирования и сборки репозитория с kefir, теперь kefir-util и kefir-srv подгружаются из директории jboss-libs

Все действия по анализу кода помещены в один workflow и разделены на три задачи:

  1. SonarCloud — анализирует проект с помощью sonarcube и отправляет результаты на sonarcloud
  2. CodeQL JS — анализирует js код в проекте и результаты загружает во вкладку Security
  3. CodeQL Java — анализирует java код в проекте и результаты загружает во вкладку Security

Задачи запускаются параллельно. Это дефолтное поведение в GitHub Actions.

Для результата задачи SonarCloud происходит оповещение в telegram группу. Для codeql — нет.

Resolves #41

Clone this wiki locally