name: Build and Test on: pull_request: {} push: branches: [develop, staging, master] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: fetch: uses: ./.github/workflows/build_prepare.yaml with: config: ${{ github.event.pull_request.base.ref == 'develop' && 'element.io/nightly' || 'element.io/release' }} version: ${{ github.event.pull_request.base.ref == 'develop' && 'develop' || '' }} windows: needs: fetch name: Windows uses: ./.github/workflows/build_windows.yaml strategy: matrix: arch: [x64, x86] with: arch: ${{ matrix.arch }} linux: needs: fetch name: Linux uses: ./.github/workflows/build_linux.yaml strategy: matrix: sqlcipher: [system, static] with: config: ${{ github.event.pull_request.base.ref == 'develop' && 'element.io/nightly' || 'element.io/release' }} sqlcipher: ${{ matrix.sqlcipher }} macos: needs: fetch name: macOS uses: ./.github/workflows/build_macos.yaml test: needs: - macos - linux - windows strategy: matrix: include: - name: macOS Universal os: macos artifact: macos executable: "./dist/mac-universal/Element.app/Contents/MacOS/Element" prepare_cmd: "find ./dist/mac-universal/Element.app -type f | perl -lne 'print if -B' | tr '\\n' '\\0' | xargs -0 -n1 chmod 755" - name: "Linux (sqlcipher: system)" os: ubuntu artifact: linux-sqlcipher-system executable: "element-desktop" prepare_cmd: "sudo apt install ./dist/*.deb" - name: "Linux (sqlcipher: static)" os: ubuntu artifact: linux-sqlcipher-static executable: "element-desktop" prepare_cmd: "sudo apt install ./dist/*.deb" - name: Windows (x86) os: windows artifact: win-x86 executable: "./dist/win-ia32-unpacked/Element.exe" - name: Windows (x64) os: windows artifact: win-x64 executable: "./dist/win-unpacked/Element.exe" name: Test ${{ matrix.name }} runs-on: ${{ matrix.os }}-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: cache: "yarn" - name: Install Deps run: "yarn install --frozen-lockfile" - uses: actions/download-artifact@v3 with: name: ${{ matrix.artifact }} path: dist - name: Prepare for tests run: ${{ matrix.prepare_cmd }} if: matrix.prepare_cmd - name: Run tests uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1 timeout-minutes: 5 with: run: "yarn test" env: ELEMENT_DESKTOP_EXECUTABLE: ${{ matrix.executable }} - name: Upload Artifacts uses: actions/upload-artifact@v3 if: always() with: name: ${{ matrix.artifact }} path: test_artifacts retention-days: 1