diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 324466e..58be68b 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -11,6 +11,72 @@ jobs: if: "github.event_name == 'pull_request'" uses: "matrix-org/backend-meta/.github/workflows/sign-off.yml@v2" + js-latest-main: + name: Tests (JS only, latest main) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 # Checkout crypto tests + - name: Setup | Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'yarn' + cache-dependency-path: "internal/api/js/js-sdk/yarn.lock" + - name: Setup | Go + uses: actions/setup-go@v4 + with: + go-version: '1.21' + - name: Setup | Rust # TODO: Remove when we have conditional builds + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + - name: Check out Rust SDK # TODO: Remove when we have conditional builds + run: | + ./install_uniffi_bindgen_go.sh + mkdir rust-sdk # don't use HTTPS path in rebuild_rust_sdk.sh so we can use the rust-cache before building + (wget -O - "https://github.com/matrix-org/matrix-rust-sdk/archive/kegan/complement-crypto.tar.gz" | tar -xz --strip-components=1 -C rust-sdk) + - uses: Swatinem/rust-cache@v2 + with: + workspaces: "rust-sdk" + - name: Build Rust SDK # TODO: Remove when we have conditional builds + run: | + ./rebuild_rust_sdk.sh ./rust-sdk + - name: "Install Complement Dependencies" + run: | + sudo apt-get update && sudo apt-get install -y libolm3 libolm-dev + go install -v github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest + - name: Build JS SDK (branch 'develop') + run: | + ./rebuild_js_sdk.sh matrix-js-sdk@https://github.com/matrix-org/matrix-js-sdk#develop + - name: Pull synapse service v1.94.0 and mitmproxy + shell: bash + run: | + docker pull ghcr.io/matrix-org/synapse-service:v1.94.0 + docker pull mitmproxy/mitmproxy:10.1.5 + docker tag ghcr.io/matrix-org/synapse-service:v1.94.0 homeserver:latest + - run: | + export LIBRARY_PATH="$(pwd)/rust-sdk/target/debug" + export LD_LIBRARY_PATH="$(pwd)/rust-sdk/target/debug" + set -o pipefail && + go test -v -json -timeout 15m ./tests | gotestfmt + shell: bash # required for pipefail to be A Thing. pipefail is required to stop gotestfmt swallowing non-zero exit codes + name: Run Complement Crypto Tests + env: + COMPLEMENT_BASE_IMAGE: homeserver + COMPLEMENT_ENABLE_DIRTY_RUNS: 1 + COMPLEMENT_CRYPTO_WRITE_CONTAINER_LOGS: 1 + COMPLEMENT_CRYPTO_TEST_CLIENT_MATRIX: jj # only run JS tests (TODO: also runs some rust tests regardless) + COMPLEMENT_SHARE_ENV_PREFIX: PASS_ + PASS_SYNAPSE_COMPLEMENT_DATABASE: sqlite + DOCKER_BUILDKIT: 1 + + - name: Upload logs + uses: actions/upload-artifact@v2 + if: ${{ always() }} # do this even if the tests fail + with: + name: Logs - ${{ job.status }} + path: | + ./tests/logs/* rust-latest-main: name: Tests (Rust only, latest main) diff --git a/rebuild_js_sdk.sh b/rebuild_js_sdk.sh index ada99aa..6ea5e31 100755 --- a/rebuild_js_sdk.sh +++ b/rebuild_js_sdk.sh @@ -16,6 +16,6 @@ then exit 1 fi -(cd js-sdk && yarn add $1 && yarn install && yarn build) +(cd ./internal/api/js/js-sdk && yarn add $1 && yarn install && yarn build) rm -rf ./internal/api/js/chrome/dist || echo 'no dist directory detected'; -cp -r ./js-sdk/dist/. ./internal/api/js/chrome/dist +cp -r ./internal/api/js/js-sdk/dist/. ./internal/api/js/chrome/dist