From e1d6df915777fcccc26cfeb7a4f887db0ff3b363 Mon Sep 17 00:00:00 2001 From: alkoleft Date: Tue, 27 Aug 2024 20:53:40 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BF=D0=B0=D0=B9=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D0=B9=D0=BD=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/extract-version/action.yml | 6 +- .github/actions/load-extension/action.yml | 2 +- .github/workflows/build-release.yml | 4 +- .../{main-build.yml => perform-tests.yml} | 36 ++-- .../{sq.yml => sonar-qube-analysis.yml} | 4 + .../step-build-artifacts-windows.yml | 2 +- .github/workflows/step-export-xml.yml | 6 +- .github/workflows/step-run-tests-linux.yml | 171 ------------------ .github/workflows/step-run-tests-windows.yml | 121 ------------- .github/workflows/step-run-tests.yml | 142 +++++++++++++++ 10 files changed, 171 insertions(+), 323 deletions(-) rename .github/workflows/{main-build.yml => perform-tests.yml} (50%) rename .github/workflows/{sq.yml => sonar-qube-analysis.yml} (96%) delete mode 100644 .github/workflows/step-run-tests-linux.yml delete mode 100644 .github/workflows/step-run-tests-windows.yml create mode 100644 .github/workflows/step-run-tests.yml diff --git a/.github/actions/extract-version/action.yml b/.github/actions/extract-version/action.yml index e4ce3420f..ef355df4f 100644 --- a/.github/actions/extract-version/action.yml +++ b/.github/actions/extract-version/action.yml @@ -1,5 +1,9 @@ name: Извлечение версии description: Извлечение версии из исходников +inputs: + path: + description: 'Путь к исходникам' + required: true outputs: version: description: 'Версия' @@ -9,5 +13,5 @@ runs: steps: - name: Извлечение версии shell: bash - run: echo "version=$(cat ./exts/yaxunit/src/Configuration/Configuration.mdo | grep -oP '(?<=)[\d.]+')" >> $GITHUB_OUTPUT + run: echo "version=$(cat ${{ inputs.path }}/Configuration/Configuration.mdo | grep -oP '(?<=)[\d.]+')" >> $GITHUB_OUTPUT id: extract_version diff --git a/.github/actions/load-extension/action.yml b/.github/actions/load-extension/action.yml index 4f60cab67..3676f5292 100644 --- a/.github/actions/load-extension/action.yml +++ b/.github/actions/load-extension/action.yml @@ -11,8 +11,8 @@ runs: using: "composite" steps: - name: Загрузка расширения ${{inputs.name}} + shell: bash run: | ibcmd infobase config load --db-path=file-db --extension=${{inputs.name}} --force ${{inputs.path}} ibcmd infobase config apply --db-path=file-db --extension=${{inputs.name}} --force ibcmd infobase config extension update --db-path=file-db --name=${{inputs.name}} --safe-mode=no --unsafe-action-protection=no - timeout-minutes: 5 diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index dbe1f5705..d53c25614 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -5,7 +5,7 @@ on: - '*' concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-release + group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.number }}-release cancel-in-progress: true permissions: @@ -22,7 +22,7 @@ jobs: secrets: inherit build_artifacts: - name: Сборка артифактов + name: Сборка артефактов runs-on: ubuntu-latest needs: export_to_designer diff --git a/.github/workflows/main-build.yml b/.github/workflows/perform-tests.yml similarity index 50% rename from .github/workflows/main-build.yml rename to .github/workflows/perform-tests.yml index a99a8485e..a1f84eb41 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/perform-tests.yml @@ -9,7 +9,7 @@ on: branches: [ develop ] concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-main + group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.number }}-main cancel-in-progress: true permissions: @@ -19,7 +19,7 @@ permissions: jobs: export_to_designer: - name: Конвертация исходников в формат конфигуратора + name: Конвертация исходников uses: ./.github/workflows/step-export-xml.yml with: edt_version: 2023.1.2 @@ -27,43 +27,31 @@ jobs: secrets: inherit build_artifacts: - name: Сборка артифактов + name: Сборка uses: ./.github/workflows/step-build-artifacts-windows.yml needs: export_to_designer with: v8_version: 8.3.21.1895 secrets: inherit - tests_windows: - name: Тестирование в Windows + tests: + name: Тест strategy: fail-fast: false matrix: - v8_version: + version: - 8.3.21.1895 locale: - ru_RU - en_US - uses: ./.github/workflows/step-run-tests-windows.yml - needs: build_artifacts - with: - v8_version: ${{ matrix.v8_version }} - locale: ${{ matrix.locale }} - secrets: inherit + os: + - windows-latest + - ubuntu-latest - tests_linux: - name: Тестирование в Linux - strategy: - fail-fast: false - matrix: - v8_version: - - 8.3.21.1895 - locale: - - ru_RU - - en_US - uses: ./.github/workflows/step-run-tests-linux.yml + uses: ./.github/workflows/step-run-tests.yml needs: build_artifacts with: - v8_version: ${{ matrix.v8_version }} + v8_version: ${{ matrix.version }} locale: ${{ matrix.locale }} + os: ${{ matrix.os }} secrets: inherit diff --git a/.github/workflows/sq.yml b/.github/workflows/sonar-qube-analysis.yml similarity index 96% rename from .github/workflows/sq.yml rename to .github/workflows/sonar-qube-analysis.yml index 6d0312db0..f4e71d6eb 100644 --- a/.github/workflows/sq.yml +++ b/.github/workflows/sonar-qube-analysis.yml @@ -23,10 +23,14 @@ jobs: - name: Извлечение версии проекта uses: ./.github/actions/extract-version + with: + path: ./exts/yaxunit/src id: extract_version - name: Установка сканера Sonar uses: warchant/setup-sonar-scanner@v8 + with: + version: 6.1.0.4477 # Анализ проекта в SonarQube (ветка) - name: Анализ в SonarQube (${{ github.ref_name }}) diff --git a/.github/workflows/step-build-artifacts-windows.yml b/.github/workflows/step-build-artifacts-windows.yml index 03ade1cc7..ad2fe911d 100644 --- a/.github/workflows/step-build-artifacts-windows.yml +++ b/.github/workflows/step-build-artifacts-windows.yml @@ -17,7 +17,7 @@ on: default: build-artifacts concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-build + group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.number }}-build cancel-in-progress: true jobs: diff --git a/.github/workflows/step-export-xml.yml b/.github/workflows/step-export-xml.yml index 8ef6c3e52..52e2735f0 100644 --- a/.github/workflows/step-export-xml.yml +++ b/.github/workflows/step-export-xml.yml @@ -19,12 +19,12 @@ on: value: ${{ jobs.export.outputs.yaxunit_version }} concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}-export + group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.number }}-export cancel-in-progress: true jobs: export: - name: Конвертация исходников + name: Конвертация runs-on: ubuntu-latest outputs: yaxunit_version: ${{ steps.extract_version.outputs.version }} @@ -43,6 +43,8 @@ jobs: - name: Извлечение версии проекта uses: ./.github/actions/extract-version + with: + path: ./exts/yaxunit/src id: extract_version - name: Установка 1C:EDT diff --git a/.github/workflows/step-run-tests-linux.yml b/.github/workflows/step-run-tests-linux.yml deleted file mode 100644 index 2d8857b3a..000000000 --- a/.github/workflows/step-run-tests-linux.yml +++ /dev/null @@ -1,171 +0,0 @@ -name: Тестирование в Linux - -on: - workflow_call: - inputs: - v8_version: - description: 'Platform version' - type: string - required: true - - locale: - type: string - required: false - default: ru_RU - - artifact_name: - type: string - required: false - default: build-artifacts - - fail_on_failure: - type: boolean - required: false - default: true - -permissions: - contents: read - checks: write - id-token: write - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-${{ github.event.number }}-Linux - cancel-in-progress: true - -jobs: - execute-tests: - name: Тестирование - runs-on: ubuntu-latest - steps: - - - name: Загрузка артифактов - uses: actions/download-artifact@v4 - with: - name: ${{ inputs.artifact_name }} - path: binary - - - name: Подготовка окружения - run: | - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales - sudo ln -s /usr/lib/x86_64-linux-gnu/libenchant-2.so.2 /usr/lib/libenchant.so.1 - sudo localedef -i ${{ inputs.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ inputs.locale }}.UTF-8 - mkdir reports -p - - - name: Установка 1С:Предприятие - uses: alkoleft/onec-setup-build-env-action@develop - with: - type: onec - onec_version: ${{ inputs.v8_version }} - cache: false - env: - ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} - ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} - timeout-minutes: 10 - - - name: Установка x11 - run: sudo apt-get install -y x11-xserver-utils - continue-on-error: true - timeout-minutes: 5 - - - name: Установка xserver-dummy - run: sudo apt-get install -y xserver-xorg-video-dummy - timeout-minutes: 5 - - - name: Настройка dummy - uses: DamianReeves/write-file-action@master - with: - path: dummy-1920x1080.conf - contents: | - Section "Monitor" - Identifier "Monitor0" - HorizSync 28.0-80.0 - VertRefresh 48.0-75.0 - # https://arachnoid.com/modelines/ - # 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz - Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync - EndSection - Section "Device" - Identifier "Card0" - Driver "dummy" - VideoRam 256000 - EndSection - Section "Screen" - DefaultDepth 24 - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" - SubSection "Display" - Depth 24 - Modes "1920x1080_60.00" - EndSubSection - EndSection - - - name: Запуск xserver - run: sudo X :99 -config dummy-1920x1080.conf & - timeout-minutes: 5 - - - name: Создание информационной базы - run: ibcmd infobase create --db-path=file-db --load=binary/configuration.cf --apply --force - timeout-minutes: 5 - - - name: Загрузка расширения YAxUnit - uses: ./.github/actions/load-extension - with: - name: YAXUNIT - path: binary/yaxunit.cfe - - - name: Загрузка расширения c тестами - uses: ./.github/actions/load-extension - with: - name: tests - path: binary/tests.cfe - - - name: Запуск сервера (ibsrv) - run: ibsrv --db-path=file-db --daemon - - - name: Создание файла конфигурации тестирования - uses: DamianReeves/write-file-action@master - with: - path: unit.json - contents: | - { - "reportFormat": "jUnit", - "reportPath": "reports/report.xml", - "closeAfterTests": true, - "exitCode": "exit-code.txt", - "logging": { - "console": true - } - } - - - name: Запуск тестирования - run: 1cv8c /WS "http://localhost:8314" /C"RunUnitTests=${{github.workspace}}/unit.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out ${{github.workspace}}/output.log - timeout-minutes: 5 - env: - DISPLAY: :99 - LANG: "${{ inputs.locale }}.UTF-8" - - # - name: view log - # if: always() - # run: cat ./execute.log - - # - name: view output - # if: always() - # run: cat ./output.log - - - name: Сохранение файла отчета - uses: actions/upload-artifact@v4 - if: always() - with: - name: Tests report. Linux ${{ inputs.v8_version }} ${{ inputs.locale }} - path: reports/*.* - - - name: Публикация отчета о тестировании - uses: 1CDevFlow/action-onec-junit-report@main - if: always() - with: - job_name: Tests Linux ${{ inputs.v8_version }} ${{ inputs.locale }} - check_name: Tests report. Linux ${{ inputs.v8_version }} ${{ inputs.locale }} - report_paths: reports/report.xml - fail_on_failure: ${{ inputs.fail_on_failure }} - require_passed_tests: true \ No newline at end of file diff --git a/.github/workflows/step-run-tests-windows.yml b/.github/workflows/step-run-tests-windows.yml deleted file mode 100644 index 224043541..000000000 --- a/.github/workflows/step-run-tests-windows.yml +++ /dev/null @@ -1,121 +0,0 @@ -name: Тестирование в Windows - -on: - workflow_call: - inputs: - v8_version: - description: 'Platform version' - type: string - required: true - - locale: - type: string - required: false - default: ru_RU - - artifact_name: - type: string - required: false - default: build-artifacts - - fail_on_failure: - type: boolean - required: false - default: true - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.v8_version }}-${{ inputs.locale }}-${{ github.event.number }}-Windows - cancel-in-progress: true - -jobs: - execute-tests: - name: Тестирование - runs-on: windows-latest - defaults: - run: - shell: pwsh - - steps: - - - name: Загрузка артифактов - uses: actions/download-artifact@v4 - with: - name: ${{ inputs.artifact_name }} - path: binary - - - name: Установка 1С:Предприятие - uses: alkoleft/onec-setup-build-env-action@develop - with: - type: onec - onec_version: ${{ inputs.v8_version }} - env: - ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} - ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} - timeout-minutes: 10 - - - name: Создание информационной базы - run: | - mkdir file-db\data - ibcmd.exe infobase create --data=file-db --load=binary\configuration.cf --apply --force - timeout-minutes: 5 - - - name: Загрузка расширения YAxUnit - uses: ./.github/actions/load-extension - with: - name: YAXUNIT - path: binary\yaxunit.cfe - - - name: Загрузка расширения c тестами - uses: ./.github/actions/load-extension - with: - name: tests - path: binary\tests.cfe - - - name: Создание файла конфигурации тестирования - uses: DamianReeves/write-file-action@master - with: - path: unit.json - contents: | - { - "reportFormat": "jUnit", - "reportPath": "reports\\report.xml", - "closeAfterTests": true, - "exitCode": "exit-code.txt", - "logging": { - "console": true - } - } - - - name: Определение "короткой" локали - id: short_locale - run: | - Write-Output "substring=$('${{ inputs.locale }}'.Substring(0, 2))" >> $Env:GITHUB_OUTPUT - - - name: Запуск тестирования - run: | - Start-Process ibsrv.exe -ArgumentList "--data=file-db" - Start-Process -NoNewWindow -PassThru -Wait 1cv8c.exe -ArgumentList '/WS "http://localhost:8314" /C"RunUnitTests=unit.json" /L ${{ steps.short_locale.outputs.substring }} /VL ${{ inputs.locale }} /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out 1cv8c-output.log' - timeout-minutes: 10 - - # - name: view log - # if: always() - # run: type execute.log - - # - name: view output - # if: always() - # run: type 1cv8c-output.log - - - name: Сохранение файла отчета - uses: actions/upload-artifact@v4 - with: - name: Tests report. Windows ${{ inputs.v8_version }} ${{ inputs.locale }} - path: reports/ - - - name: Публикация отчета о тестировании - uses: 1CDevFlow/action-onec-junit-report@main - with: - job_name: Tests Windows ${{ inputs.v8_version }} ${{ inputs.locale }} - check_name: Tests report. Windows ${{ inputs.v8_version }} ${{ inputs.locale }} - report_paths: reports/report.xml - fail_on_failure: ${{ inputs.fail_on_failure }} - require_passed_tests: true diff --git a/.github/workflows/step-run-tests.yml b/.github/workflows/step-run-tests.yml new file mode 100644 index 000000000..ae2cc57ea --- /dev/null +++ b/.github/workflows/step-run-tests.yml @@ -0,0 +1,142 @@ +name: Тестирование + +on: + workflow_call: + inputs: + v8_version: + description: 'Версия 1С:Предприятие' + type: string + required: true + + locale: + type: string + required: false + default: ru_RU + + artifact_name: + type: string + required: false + default: build-artifacts + + fail_on_failure: + type: boolean + required: false + default: true + + os: + type: string + required: true + +permissions: + contents: read + checks: write + id-token: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }}-${{ inputs.v8_version }}-${{ inputs.locale }}-${{ github.event.number }}-${{inputs.os}} + cancel-in-progress: true + +jobs: + execute-tests: + name: Тестирование + runs-on: ${{inputs.os}} + steps: + + - name: Загрузка артифактов + uses: actions/download-artifact@v4 + with: + name: ${{ inputs.artifact_name }} + path: binary + + - name: Подготовка окружения (Linux) + if: runner.os == 'Linux' + run: | + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales + sudo ln -s /usr/lib/x86_64-linux-gnu/libenchant-2.so.2 /usr/lib/libenchant.so.1 + sudo localedef -i ${{ inputs.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ inputs.locale }}.UTF-8 + + - name: Определение "короткой" локали + id: short_locale + shell: pwsh + run: | + Write-Output "substring=$('${{ inputs.locale }}'.Substring(0, 2))" >> $Env:GITHUB_OUTPUT + + - name: Установка 1С:Предприятие + uses: alkoleft/onec-setup-build-env-action@develop + with: + type: onec + onec_version: ${{ inputs.v8_version }} + cache: false + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + timeout-minutes: 10 + + - name: Создание информационной базы + shell: bash + run: | + ibcmd infobase create --db-path=file-db --load=binary/configuration.cf --apply --force + timeout-minutes: 5 + + - name: Загрузка расширения YAxUnit + uses: alkoleft/yaxunit/.github/actions/load-extension@develop + with: + name: YAXUNIT + path: binary/yaxunit.cfe + + - name: Загрузка расширения c тестами + uses: alkoleft/yaxunit/.github/actions/load-extension@develop + with: + name: tests + path: binary/tests.cfe + + - name: Создание файла конфигурации тестирования + uses: DamianReeves/write-file-action@master + with: + path: yaxunit-config.json + contents: | + { + "reportFormat": "jUnit", + "reportPath": "report.xml", + "closeAfterTests": true, + "exitCode": "exit-code.txt", + "logging": { + "console": true + } + } + + - name: Запуск тестирования (Linux) + if: runner.os == 'Linux' + uses: coactions/setup-xvfb@v1 + with: + run: | + ibsrv --db-path=file-db --daemon + 1cv8c /WS "http://localhost:8314" /C"RunUnitTests=yaxunit-config.json" /L ${{ steps.short_locale.outputs.substring }} /VL ${{ inputs.locale }} /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out output.log + env: + LANG: "${{ inputs.locale }}.UTF-8" + timeout-minutes: 10 + + - name: Запуск тестирования (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + Start-Process ibsrv.exe -ArgumentList "--db-path=file-db" + Start-Process -NoNewWindow -PassThru -Wait 1cv8c.exe -ArgumentList '/WS "http://localhost:8314" /C"RunUnitTests=yaxunit-config.json" /L ${{ steps.short_locale.outputs.substring }} /VL ${{ inputs.locale }} /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out 1cv8c-output.log' + timeout-minutes: 10 + + - name: Сохранение файла отчета + uses: actions/upload-artifact@v4 + if: always() + with: + name: Tests report. ${{runner.os}} ${{ inputs.v8_version }} ${{ inputs.locale }} + path: report.xml + + - name: Публикация отчета о тестировании + uses: 1CDevFlow/action-onec-junit-report@main + if: always() + with: + job_name: Тестирование + check_name: Tests report. ${{runner.os}} ${{ inputs.v8_version }} ${{ inputs.locale }} + report_paths: report.xml + fail_on_failure: true + require_passed_tests: true