name: build on: push: branches: [ feature/**, develop ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build-dev: runs-on: ubuntu-20.04 env: V8_VERSION: 8.3.21.1895 EDT_VERSION: 2023.1.2 IB_PATH: file-db steps: - uses: actions/checkout@v3 with: submodules: recursive - name: prepare run: | mkdir export mkdir binary mkdir file-db mkdir reports sudo apt-get install -y locales sudo localedef -i ru_RU -c -f UTF-8 -A /usr/share/locale/locale.alias ru_RU.UTF-8 - name: install x11 (for run tests) run: | { sudo apt-get install -y x11-xserver-utils } || set +e continue-on-error: true timeout-minutes: 5 - name: install xserver-dummy (for run tests) run: sudo apt-get install -y xserver-xorg-video-dummy timeout-minutes: 5 - name: create dummy-config (for run tests) 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: start xserver (for run tests) run: sudo X :99 -config dummy-1920x1080.conf & timeout-minutes: 5 - name: thinck client libs run: | sudo ln -s /usr/lib/x86_64-linux-gnu/libenchant-2.so.2 /usr/lib/libenchant.so.1 sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \ at-spi2-core \ mesa-utils \ libgl1-mesa-glx timeout-minutes: 5 - name: install EDT uses: IT-Medved/onec-setup-build-env-action@develop with: type: edt edt_version: ${{ env.EDT_VERSION }} cache: true env: ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} timeout-minutes: 10 - name: install Onec Platform uses: IT-Medved/onec-setup-build-env-action@develop with: type: onec onec_version: ${{ env.V8_VERSION }} cache: false env: ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} timeout-minutes: 10 - name: export configuration uses: IT-Medved/onec-edtcli-command-action@feature/init with: export: true from: fixtures/demo-configuration to: export/configuration timeout-minutes: 5 - name: export yaxunit extension uses: IT-Medved/onec-edtcli-command-action@feature/init with: export: true from: exts/yaxunit to: export/yaxunit timeout-minutes: 5 - name: export tests extension uses: IT-Medved/onec-edtcli-command-action@feature/init with: export: true from: tests to: export/tests timeout-minutes: 5 - name: create IB run: ibcmd infobase create --db-path=file-db --import=export/configuration --apply --force timeout-minutes: 5 - name: import yaxunit run: | ibcmd infobase config import --db-path=file-db --extension=YAXUNIT export/yaxunit ibcmd infobase config apply --db-path=file-db --extension=YAXUNIT --force ibcmd infobase config extension update --db-path=file-db --name=YAXUNIT --safe-mode=no --unsafe-action-protection=no timeout-minutes: 5 - name: import tests run: | ibcmd infobase config import --db-path=file-db --extension=tests export/tests ibcmd infobase config apply --db-path=file-db --extension=tests --force ibcmd infobase config extension update --db-path=file-db --name=tests --safe-mode=no --unsafe-action-protection=no timeout-minutes: 5 - name: save yaxunit extension run: ibcmd infobase config save --db-path=file-db --extension=YAXUNIT binary/YAXUNIT.cfe timeout-minutes: 5 - name: save stage run: ibcmd infobase dump --db-path=file-db binary/dump.dt timeout-minutes: 5 - name: run server run: | ibsrv --db-path=file-db --daemon - name: create test-config uses: DamianReeves/write-file-action@master with: path: unit.json contents: | { "reportFormat": "jUnit", "reportPath": "reports/report.xml", "closeAfterTests": true, "exitCode": "exit-code.txt" } - name: run tests run: | export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 export DISPLAY=:99 export LANG ru_RU.UTF-8 1cv8c /WS "http://localhost:8314" /C"RunUnitTests=${{github.workspace}}/unit.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out output.log timeout-minutes: 5 - name: view output if: success() || failure() run: cat output.log - name: upload-artifact uses: actions/upload-artifact@v3 if: success() || failure() # always run even if the previous step fails with: name: stage path: binary/*.* - name: upload-artifact uses: actions/upload-artifact@v3 if: success() || failure() # always run even if the previous step fails with: name: reports path: reports/*.* - name: Publish Test Report uses: mikepenz/action-junit-report@v3 if: success() || failure() # always run even if the previous step fails with: report_paths: reports/report.xml fail_on_failure: true require_passed_tests: true update_check: true