diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..d25cb362 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,200 @@ +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: 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: prepare + run: | + mkdir export + mkdir binary + mkdir file-db + mkdir reports + - 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 + 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