Набор типовых сборочных линий GitHub Actions для библиотек и приложений OneScript.
Во всех сборочных линиях используется локальная установка пакетов opm через opm install --local
. Убедитесь, что рядом со скриптами запуска тестов лежат файлы oscript.cfg с соответствующими настройками.
Например, содержимое oscript.cfg
, расположенного в каталоге tasks
:
lib.system=../oscript_modules
В репозитории есть теги и гарантируется обратная совместимость в пределах мажорной версии.
Для оперативного получения новых фич нацеливайтесь на @main
, для стабильных версий workflow - на последний мажорный тег - в данный момент @v1
.
Для автообновления версий workflow рекомендуется использовать dependabot. Пример в репозитории autumn-library/annotations по ссылке.
Сборочная линия для выполнения тестирования библиотеки. Позволяет запустить матричную сборку на Windows, Ubuntu и macOS на нескольких версиях движка OneScript. Поддерживается запуск из ветки, из pull request и ручной запуск из информации о конкретном workflow.
Файл workflow: https://github.com/autumn-library/workflows/blob/main/.github/workflows/test.yml
Параметры:
Имя параметра | Описание | Значение по умолчанию |
---|---|---|
oscript_version | Версия движка в формате алиаса для https://github.com/oscript-library/ovm. Если имеет значение default , производится попытка вычисления версии среды на основании вызова метода ВерсияСреды() в packagedef. Если вычислить версию не получается, используется версия stable. |
default |
test_script_path | Путь к скрипту запуска тестов | ./tasks/test.os |
additional_oscript_packages | Список дополнительных пакетов oscript для установки, разделенный пробелами |
- Запуск тестирования:
name: Тестирование
on:
push:
pull_request:
workflow_dispatch:
jobs:
test:
uses: autumn-library/workflows/.github/workflows/test.yml@v1
Данный пример запустит задачу тестирования на трех операционных системах: Windows, Ubuntu и macos. Если в файле packagedef вашей библиотеки есть вызов метода "ВерсияСреды", то будет взято значение из параметра метода. Если вызов ВерсияСреды отсутствует, то запуск тестирования будет проводиться на версии stable.
При необходимости можно явно указать версию OneScript в параметре oscript_version
:
...
uses: autumn-library/workflows/.github/workflows/test.yml@v1
with:
oscript_version: dev
- Запуск на нескольких версиях oscript в режиме матричной сборки
name: Тестирование
on:
push:
pull_request:
workflow_dispatch:
jobs:
test:
strategy:
fail-fast: false
matrix:
oscript_version: ['default', 'stable', 'dev']
uses: autumn-library/workflows/.github/workflows/test.yml@v1
with:
oscript_version: ${{ matrix.oscript_version }}
Данный пример запустит задачу на трех операционных системах с тремя разными версиями oscript - 1.8.4 (так как она указана в packagedef), последней релизной версии и последней ночной сборке.
Сборочная линия для выполнения анализа качества кода с помощью SonarQube. Поддерживается запуск из ветки, из pull request и ручной запуск из информации о конкретном workflow. Анализ pull request из форков пока не поддерживается.
Файл workflow: https://github.com/autumn-library/workflows/blob/main/.github/workflows/sonar.yml
Параметры:
Имя параметра | Описание | Значение по умолчанию |
---|---|---|
github_repository | Репозиторий проекта в GitHub, для которого будет выполняться анализ, в формате "имя_владельца/название" | |
oscript_version | Версия движка в формате алиаса для https://github.com/oscript-library/ovm. Если имеет значение default , производится попытка вычисления версии среды на основании вызова метода ВерсияСреды() в packagedef. Если вычислить версию не получается, используется версия stable. |
default |
test_script_path | Путь к скрипту запуска тестов | ./tasks/coverage.os |
additional_oscript_packages | Список дополнительных пакетов oscript для установки, разделенный пробелами | |
sonar_host_url | URL сервера SonarQube | https://sonar.openbsl.ru |
Секреты:
Имя секрета | Описание | Обязательный |
---|---|---|
SONAR_TOKEN | Токен для авторизации на сервере SonarQube | Нет |
Для использования сборочной линии необходимо предварительно подготовить файл sonar-project.properties
и расположить его в корне проекта. Сборочная линия ожидает, что в репозитории есть скрипт tasks/coverage.os
, с помощью которого запускаются тесты со сбором покрытия, однако это можно переопределить. Если ваш сервер SonarQube требует авторизацию, то необходимо передать в workflow секрет SONAR_TOKEN
.
name: Контроль качества
on:
push:
pull_request:
workflow_dispatch:
jobs:
sonar:
uses: autumn-library/workflows/.github/workflows/sonar.yml@v1
with:
github_repository: autumn-library/annotations # change me!
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Сборочная линия для сборки и публикации пакета библиотеки в артефакты и хаб пакетов https://hub.oscript.io. Поддерживается автоматический запуск при публикации GitHub Release и ручной запуск из информации о конкретном workflow.
Файл workflow: https://github.com/autumn-library/workflows/blob/main/.github/workflows/release.yml
Параметры:
Имя параметра | Описание | Значение по умолчанию |
---|---|---|
oscript_version | Версия движка в формате алиаса для https://github.com/oscript-library/ovm. Если имеет значение default , производится попытка вычисления версии среды на основании вызова метода ВерсияСреды() в packagedef. Если вычислить версию не получается, используется версия stable. |
default |
package_mask | Файловая маска собранного пакета. Несмотря на необязательность параметра, рекомендуется его передавать до исправления ошибки в шаге публикации в хаб | *.ospx |
Секреты:
Имя секрета | Описание | Обязательный |
---|---|---|
PUSH_TOKEN | GitHub токен для публикации релизов в хаб opm | Нет |
Для использования сборочной линии необходимо создать новый релиз на вкладке GitHub Releases. Если ваш хаб пакетов использует токен для проверки прав на публикацию (hub.oscript.io использует), то необходимо передать в workflow секрет PUSH_TOKEN
.
name: Публикация релиза
on:
release:
types:
- published
workflow_dispatch:
jobs:
release:
uses: autumn-library/workflows/.github/workflows/release.yml@v1
with:
package_mask: "annotations-*.ospx" # change me!
secrets:
PUSH_TOKEN: ${{ secrets.GITHUB_TOKEN }}