# If any test fails, the engine team should ensure the "breaking" changes are expected and contact the integration team name: SDKs tests on: workflow_dispatch: inputs: docker_image: description: 'The Meilisearch Docker image used' required: false default: nightly schedule: - cron: "0 6 * * MON" # Every Monday at 6:00AM env: MEILI_MASTER_KEY: 'masterKey' MEILI_NO_ANALYTICS: 'true' DISABLE_COVERAGE: 'true' jobs: define-docker-image: runs-on: ubuntu-latest outputs: docker-image: ${{ steps.define-image.outputs.docker-image }} steps: - uses: actions/checkout@v4 - name: Define the Docker image we need to use id: define-image run: | event=${{ github.event_name }} echo "docker-image=nightly" >> $GITHUB_OUTPUT if [[ $event == 'workflow_dispatch' ]]; then echo "docker-image=${{ github.event.inputs.docker_image }}" >> $GITHUB_OUTPUT fi - name: Docker image is ${{ steps.define-image.outputs.docker-image }} run: echo "Docker image is ${{ steps.define-image.outputs.docker-image }}" ########## ## SDKs ## ########## meilisearch-dotnet-tests: needs: define-docker-image name: .NET SDK tests runs-on: ubuntu-latest env: MEILISEARCH_VERSION: ${{ needs.define-docker-image.outputs.docker-image }} steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-dotnet - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: dotnet-version: "6.0.x" - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Meilisearch (latest version) setup with Docker run: docker compose up -d - name: Run tests run: dotnet test --no-restore --verbosity normal meilisearch-dart-tests: needs: define-docker-image name: Dart SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-dart - uses: dart-lang/setup-dart@v1 with: sdk: 'latest' - name: Install dependencies run: dart pub get - name: Run integration tests run: dart test --concurrency=4 meilisearch-go-tests: needs: define-docker-image name: Go SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - name: Set up Go uses: actions/setup-go@v5 with: go-version: stable - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-go - name: Get dependencies run: | go get -v -t -d ./... if [ -f Gopkg.toml ]; then curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh dep ensure fi - name: Run integration tests run: go test -v ./... meilisearch-java-tests: needs: define-docker-image name: Java SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-java - name: Set up Java uses: actions/setup-java@v4 with: java-version: 8 distribution: 'zulu' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build and run unit and integration tests run: ./gradlew build integrationTest meilisearch-js-tests: needs: define-docker-image name: JS SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-js - name: Setup node uses: actions/setup-node@v4 with: cache: 'yarn' - name: Install dependencies run: yarn --dev - name: Run tests run: yarn test - name: Build project run: yarn build - name: Run ESM env run: yarn test:env:esm - name: Run Node.js env run: yarn test:env:nodejs - name: Run node typescript env run: yarn test:env:node-ts - name: Run Browser env run: yarn test:env:browser meilisearch-php-tests: needs: define-docker-image name: PHP SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-php - name: Install PHP uses: shivammathur/setup-php@v2 - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: | composer remove --dev friendsofphp/php-cs-fixer --no-update --no-interaction composer update --prefer-dist --no-progress - name: Run test suite - default HTTP client (Guzzle 7) run: | sh scripts/tests.sh composer remove --dev guzzlehttp/guzzle http-interop/http-factory-guzzle meilisearch-python-tests: needs: define-docker-image name: Python SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-python - name: Set up Python uses: actions/setup-python@v5 - name: Install pipenv uses: dschep/install-pipenv-action@v1 - name: Install dependencies run: pipenv install --dev --python=${{ matrix.python-version }} - name: Test with pytest run: pipenv run pytest meilisearch-ruby-tests: needs: define-docker-image name: Ruby SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-ruby - name: Set up Ruby 3 uses: ruby/setup-ruby@v1 with: ruby-version: 3 - name: Install ruby dependencies run: bundle install --with test - name: Run test suite run: bundle exec rspec meilisearch-rust-tests: needs: define-docker-image name: Rust SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-rust - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose meilisearch-swift-tests: needs: define-docker-image name: Swift SDK tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-swift - name: Run tests run: swift test ######################## ## FRONT-END PLUGINS ## ######################## meilisearch-js-plugins-tests: needs: define-docker-image name: meilisearch-js-plugins tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-js-plugins - name: Setup node uses: actions/setup-node@v4 with: cache: yarn - name: Install dependencies run: yarn install - name: Run tests run: yarn test - name: Build all the playgrounds and the packages run: yarn build ######################## ## BACK-END PLUGINS ### ######################## meilisearch-rails-tests: needs: define-docker-image name: meilisearch-rails tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-rails - name: Set up Ruby 3 uses: ruby/setup-ruby@v1 with: ruby-version: 3 bundler-cache: true - name: Run tests run: bundle exec rspec meilisearch-symfony-tests: needs: define-docker-image name: meilisearch-symfony tests runs-on: ubuntu-latest services: meilisearch: image: getmeili/meilisearch:${{ needs.define-docker-image.outputs.docker-image }} env: MEILI_MASTER_KEY: ${{ env.MEILI_MASTER_KEY }} MEILI_NO_ANALYTICS: ${{ env.MEILI_NO_ANALYTICS }} ports: - '7700:7700' steps: - uses: actions/checkout@v4 with: repository: meilisearch/meilisearch-symfony - name: Install PHP uses: shivammathur/setup-php@v2 with: tools: composer:v2, flex - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-progress --quiet - name: Remove doctrine/annotations run: composer remove --dev doctrine/annotations - name: Run test suite run: composer test:unit