1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-25 02:42:28 +02:00

Update cli_testmaker.os

This commit is contained in:
Anton 2024-05-13 00:33:53 +03:00
parent 209fdc4f4e
commit a40d4644d9

View File

@ -3,6 +3,10 @@
Перем СоответствияПараметровЗначениям;
Перем СоответствияПараметровПредобработкам;
Перем Версия;
Перем ТекущийФайл;
Перем ТаблицаПараметров;
#Область Основа
Процедура ПриСозданииОбъекта()
@ -17,12 +21,304 @@
ДобавитьСоответствияViber();
ДобавитьСоответствияОбщие();
СообщитьНачалоФайлаПроцесса();
СформироватьЗапуск(ТаблицаПараметров);
СообщитьОкончаниеФайлаПроцесса();
СоздатьОсновнойФайл();
КонецПроцедуры
Процедура СоздатьОсновнойФайл()
ТекущийФайл = Новый ТекстовыйДокумент();
СообщитьНачалоФайлаПроцесса();
СообщитьСборку();
СформироватьЗапуск();
СообщитьОкончаниеФайлаПроцесса();
ТекущийФайл.Записать("./.github/workflows/cli_test.yml");
КонецПроцедуры
Процедура СоздатьФайлДрафта()
ТекущийФайл = Новый ТекстовыйДокумент();
ТекущийФайл.ДобавитьСтроку(
"name: CLI | Добавить пакеты в Draft
|
|on:
| workflow_dispatch:
|
|jobs:");
СообщитьСборку();
СообщитьЗаписьВДрафт();
ТекущийФайл.Записать("./.github/workflows/cli_draft.yml");
КонецПроцедуры
#КонецОбласти
#Область ФормированиеФайлов
Процедура СообщитьНачалоФайлаПроцесса()
ТекущийФайл.ДобавитьСтроку(
"name: CLI | Сборка и тестирование
|
|on:
| workflow_dispatch:
|
|jobs:
| Decode:
| runs-on: ubuntu-latest
| steps:
|
| - uses: actions/checkout@v4
|
| - name: Расшифровать тестовые данные
| run: gpg --quiet --batch --yes --decrypt --passphrase=""$ENC_JSON"" --output ./data.json ./data.json.gpg
| env:
| ENC_JSON: ${{ secrets.ENC_JSON }}
|
| - name: Кэшировать данные
| uses: actions/cache/save@v3
| with:
| path: ./data.json
| key: test-data
|");
КонецПроцедуры
Процедура СообщитьСборку()
ТекущийФайл.ДобавитьСтроку("
| Build:
| runs-on: ubuntu-latest
| permissions:
| contents: write
| steps:
| - uses: actions/checkout@v4
| - uses: otymko/setup-onescript@v1.4
| with:
| version: " + Версия + "
|
| - name: Установить cmdline, asserts и osparser
| run: |
| opm install cmdline
| opm install asserts
| opm install osparser
| - name: Сформировать список методов ОПИ -> CLI
| run: oscript ./.github/workflows/os/cli_parse.os
|
| - name: Записать измененный список методов CLI
| uses: stefanzweifel/git-auto-commit-action@v5
| with:
| commit_user_name: Vitaly the Alpaca (bot)
| commit_user_email: vitaly.the.alpaca@gmail.com
| commit_author: Vitaly the Alpaca <vitaly.the.alpaca@gmail.com>
| commit_message: Обновление зашифрованных данных по результатам тестов (workflow)
|
| - name: Собрать и установить OInt
| run: |
| cd ./OInt
| opm build
| opm install *.ospx
|
| - name: Собрать бинарник
| run: |
| cd ./cli
| oscript -make core/Classes/Приложение.os oint
|
| - name: Собрать exe
| run: |
| cd ./cli
| oscript -make core/Classes/Приложение.os oint.exe
|
| - name: Записать артефакт
| uses: actions/upload-artifact@v4
| with:
| name: oint
| path: ./cli/oint
|
| - name: Создать каталог deb-пакета
| run: |
| mkdir -p .debpkg/usr/bin
| cp ./cli/oint .debpkg/usr/bin/oint
| chmod +x .debpkg/usr/bin/oint
|
| - name: Собрать deb-пакет
| uses: jiro4989/build-deb-action@v3
| with:
| package: oint
| package_root: .debpkg
| maintainer: Anton Titovets <bayselonarrend@gmail.com>
| version: '" + Версия + "' # refs/tags/v*.*.*
| arch: 'all'
| depends: 'mono-runtime, libmono-system-core4.0-cil | libmono-system-core4.5-cil, libmono-system4.0-cil | libmono-system4.5-cil, libmono-corlib4.0-cil | libmono-corlib4.5-cil, libmono-i18n4.0-all | libmono-i18n4.5-all'
| desc: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки'
|
| - uses: actions/upload-artifact@v3
| with:
| name: oint-deb
| path: |
| ./*.deb
|
| - name: Создать каталог rpm-пакета
| run: |
| mkdir -p .rpmpkg/usr/bin
| mkdir -p .rpmpkg/usr/share/oint/bin
| cp ./cli/oint .rpmpkg/usr/share/oint/bin/oint
| echo 'mono /usr/share/oint/bin/oint ""$@""' > .rpmpkg/usr/bin/oint
| chmod +x .rpmpkg/usr/bin/oint
|
| - name: Собрать rpm-пакет
| uses: jiro4989/build-rpm-action@v2
| with:
| summary: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки. Требуется mono-runtime с поддержкой .NET Framework 4.8'
| package: oint
| package_root: .rpmpkg
| maintainer: Anton Titovets <bayselonarrend@gmail.com>
| version: '" + Версия + "'
| arch: 'x86_64'
| desc: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки'
| requires: |
| mono-core
| Requires: mono-locale-extras
|
| - uses: actions/upload-artifact@v4
| with:
| name: oint-rpm
| path: |
| ./*.rpm
| !./*-debuginfo-*.rpm");
КонецПроцедуры
Процедура СформироватьЗапуск()
Для Каждого Вариант Из СоответствияПараметровЗначениям Цикл
Библиотека = Вариант.Ключ;
Если Библиотека = "Общие" Тогда
Продолжить;
КонецЕсли;
ТекстРаботы = "
| Testing-" + Библиотека + ":
| runs-on: ubuntu-latest
| needs: [Decode, Build]
| steps:
|
| - name: Получить тестовые данные из кэша
| uses: actions/cache/restore@v3
| with:
| path: ./data.json
| key: test-data
|
| - name: Скачать артефакт с исполняемым файлом
| uses: actions/download-artifact@v4
| with:
| name: oint
|
| - name: JSON в переменные
| uses: rgarcia-phi/json-to-variables@v1.1.0
| with:
| filename: 'data.json'
| masked: true
|
| - name: chmod для OInt
| run: chmod +x ./oint
|
|";
Отбор = Новый Структура("Библиотека", Библиотека);
СтрокиБиблиотеки = ТаблицаПараметров.НайтиСтроки(Отбор);
ТекущийМетод = "";
Для Каждого СтрокаПараметра Из СтрокиБиблиотеки Цикл
Если ТекущийМетод <> СтрокаПараметра.Метод Тогда
ТекущийМетод = СтрокаПараметра.Метод;
Отбор.Вставить("Метод", ТекущийМетод);
СтрокиМетода = ТаблицаПараметров.НайтиСтроки(Отбор);
ТекстРаботы = ТекстРаботы + Символы.ПС + "
|
| - name: Выполнить " + ТекущийМетод+ "
| if: ${{ cancelled() }} == false
| run: |
| ";
ДобавитьПредобработки(ТекстРаботы, СтрокиМетода, Библиотека);
ТекстРаботы = ТекстРаботы + "
| ./oint " + Библиотека + " " + ТекущийМетод + " --debug --test \" + Символы.ПС;
КонецЕсли;
ТекстРаботы = ТекстРаботы
+ " "
+ СтрокаПараметра.Параметр
+ " "
+ ОпределитьЗначениеПараметра(СтрокаПараметра.Параметр, Библиотека)
+ " \"
+ Символы.ПС;
КонецЦикла;
ТекущийФайл.ДобавитьСтроку(ТекстРаботы);
КонецЦикла;
КонецПроцедуры
Процедура СообщитьОкончаниеФайлаПроцесса()
ТекущийФайл.ДобавитьСтроку("
| Clear-Cache:
| runs-on: ubuntu-latest
| needs: [Testing-telegram, Testing-vk, Testing-viber]
| if: ${{ always() }}
| steps:
| - name: Очистка кэша
| run: |
| curl -L \
| -X DELETE \
| -H ""Accept: application/vnd.github+json"" \
| -H ""Authorization: Bearer ${{ secrets.TOKEN }}"" \
| -H ""X-GitHub-Api-Version: 2022-11-28"" \
| ""https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data""");
КонецПроцедуры
Процедура СообщитьЗаписьВДрафт()
ТекущийФайл.ДобавитьСтроку("
| steps:
| - name: Добавить EXE
| env:
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
| run: gh release upload draft ./cli/oint.exe
|
| - name: Добавить DEB
| env:
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
| run: gh release upload draft ./*.deb
|
| - name: Добавить RPM
| env:
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
| run: gh release upload draft ./*.rpm");
КонецПроцедуры
#КонецОбласти
#Область ОбработкиТестов
Процедура ДобавитьСоответствияTelegram()
СоответствиеПЗ = Новый Соответствие();
@ -191,85 +487,6 @@
КонецПроцедуры
Процедура СформироватьЗапуск(Знач ТаблицаПараметров)
Для Каждого Вариант Из СоответствияПараметровЗначениям Цикл
Библиотека = Вариант.Ключ;
Если Библиотека = "Общие" Тогда
Продолжить;
КонецЕсли;
ТекстРаботы = "
| Testing-" + Библиотека + ":
| runs-on: ubuntu-latest
| needs: [Decode, Build]
| steps:
|
| - name: Получить тестовые данные из кэша
| uses: actions/cache/restore@v3
| with:
| path: ./data.json
| key: test-data
|
| - name: Скачать артефакт с исполняемым файлом
| uses: actions/download-artifact@v4
| with:
| name: oint
|
| - name: JSON в переменные
| uses: rgarcia-phi/json-to-variables@v1.1.0
| with:
| filename: 'data.json'
| masked: true
|
| - name: chmod для OInt
| run: chmod +x ./oint
|
|";
Отбор = Новый Структура("Библиотека", Библиотека);
СтрокиБиблиотеки = ТаблицаПараметров.НайтиСтроки(Отбор);
ТекущийМетод = "";
Для Каждого СтрокаПараметра Из СтрокиБиблиотеки Цикл
Если ТекущийМетод <> СтрокаПараметра.Метод Тогда
ТекущийМетод = СтрокаПараметра.Метод;
Отбор.Вставить("Метод", ТекущийМетод);
СтрокиМетода = ТаблицаПараметров.НайтиСтроки(Отбор);
ТекстРаботы = ТекстРаботы + Символы.ПС + "
|
| - name: Выполнить " + ТекущийМетод+ "
| if: ${{ cancelled() }} == false
| run: |
| ";
ДобавитьПредобработки(ТекстРаботы, СтрокиМетода, Библиотека);
ТекстРаботы = ТекстРаботы + "
| ./oint " + Библиотека + " " + ТекущийМетод + " --debug --test \" + Символы.ПС;
КонецЕсли;
ТекстРаботы = ТекстРаботы
+ " "
+ СтрокаПараметра.Параметр
+ " "
+ ОпределитьЗначениеПараметра(СтрокаПараметра.Параметр, Библиотека)
+ " \"
+ Символы.ПС;
КонецЦикла;
Сообщить(ТекстРаботы);
КонецЦикла;
КонецПроцедуры
Функция ОпределитьЗначениеПараметра(Знач Параметр, Знач Библиотека)
СоответствиеБиблиотеки = СоответствияПараметровЗначениям[Библиотека];
@ -309,148 +526,8 @@
КонецЕсли;
ТекстРаботы = ТекстРаботы + ТекстПредобработки;
КонецПроцедуры
Процедура СообщитьНачалоФайлаПроцесса()
Сообщить(
"name: CLI | Сборка и тестирование
|
|on:
| workflow_dispatch:
|
|jobs:
| Decode:
| runs-on: ubuntu-latest
| steps:
|
| - uses: actions/checkout@v4
|
| - name: Расшифровать тестовые данные
| run: gpg --quiet --batch --yes --decrypt --passphrase=""$ENC_JSON"" --output ./data.json ./data.json.gpg
| env:
| ENC_JSON: ${{ secrets.ENC_JSON }}
|
| - name: Кэшировать данные
| uses: actions/cache/save@v3
| with:
| path: ./data.json
| key: test-data
|
| Build:
| runs-on: ubuntu-latest
| permissions:
| contents: write
| steps:
| - uses: actions/checkout@v4
| - uses: otymko/setup-onescript@v1.4
| with:
| version: 1.9.0
|
| - name: Установить cmdline, asserts и osparser
| run: |
| opm install cmdline
| opm install asserts
| opm install osparser
| - name: Сформировать список методов ОПИ -> CLI
| run: oscript ./.github/workflows/os/cli_parse.os
|
| - name: Записать измененный список методов CLI
| uses: stefanzweifel/git-auto-commit-action@v5
| with:
| commit_user_name: Vitaly the Alpaca (bot)
| commit_user_email: vitaly.the.alpaca@gmail.com
| commit_author: Vitaly the Alpaca <vitaly.the.alpaca@gmail.com>
| commit_message: Обновление зашифрованных данных по результатам тестов (workflow)
|
| - name: Собрать и установить OInt
| run: |
| cd ./OInt
| opm build
| opm install *.ospx
|
| - name: Собрать бинарник
| run: |
| cd ./cli
| oscript -make core/Classes/Приложение.os oint
| - name: Записать артефакт
| uses: actions/upload-artifact@v4
| with:
| name: oint
| path: ./cli/oint
|
| - name: Создать каталог deb-пакета
| run: |
| mkdir -p .debpkg/usr/bin
| cp ./cli/oint .debpkg/usr/bin/oint
| chmod +x .debpkg/usr/bin/oint
|
| - name: Собрать deb-пакет
| uses: jiro4989/build-deb-action@v3
| with:
| package: oint
| package_root: .debpkg
| maintainer: Anton Titovets <bayselonarrend@gmail.com>
| version: '" + Версия + "' # refs/tags/v*.*.*
| arch: 'all'
| depends: 'mono-runtime, libmono-system-core4.0-cil | libmono-system-core4.5-cil, libmono-system4.0-cil | libmono-system4.5-cil, libmono-corlib4.0-cil | libmono-corlib4.5-cil, libmono-i18n4.0-all | libmono-i18n4.5-all'
| desc: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки'
|
| - uses: actions/upload-artifact@v3
| with:
| name: oint-deb
| path: |
| ./*.deb
|
| - name: Создать каталог rpm-пакета
| run: |
| mkdir -p .rpmpkg/usr/bin
| mkdir -p .rpmpkg/usr/share/oint/bin
| cp ./cli/oint .rpmpkg/usr/share/oint/bin/oint
| echo 'mono /usr/share/oint/bin/oint ""$@""' > .rpmpkg/usr/bin/oint
| chmod +x .rpmpkg/usr/bin/oint
|
| - name: Собрать rpm-пакет
| uses: jiro4989/build-rpm-action@v2
| with:
| summary: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки. Требуется mono-runtime с поддержкой .NET Framework 4.8'
| package: oint
| package_root: .rpmpkg
| maintainer: Anton Titovets <bayselonarrend@gmail.com>
| version: '" + Версия + "'
| arch: 'x86_64'
| desc: 'OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки'
| requires: |
| mono-core
| Requires: mono-locale-extras
|
| - uses: actions/upload-artifact@v4
| with:
| name: oint-rpm
| path: |
| ./*.rpm
| !./*-debuginfo-*.rpm");
КонецПроцедуры
Процедура СообщитьОкончаниеФайлаПроцесса()
Сообщить("
| Clear-Cache:
| runs-on: ubuntu-latest
| needs: [Testing-telegram, Testing-vk, Testing-viber]
| if: ${{ always() }}
| steps:
| - name: Очистка кэша
| run: |
| curl -L \
| -X DELETE \
| -H ""Accept: application/vnd.github+json"" \
| -H ""Authorization: Bearer ${{ secrets.TOKEN }}"" \
| -H ""X-GitHub-Api-Version: 2022-11-28"" \
| ""https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data""");
КонецПроцедуры;
#КонецОбласти