# If you change this name also do it in ci_metrics.yml name: REST API Tests on: push: branches: - main # release branches have the form v1.9.x - "v[0-9].*[0-9].x" pull_request: types: - opened - reopened - synchronize - ready_for_review paths: - "rest_api/**.py" - "rest_api/pyproject.toml" env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK PYTHON_VERSION: "3.8" jobs: black: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install Black run: | pip install --upgrade pip pip install .[formatting] - name: Check status run: | if ! black . --check; then git status echo "###################################################################################################" echo "# " echo "# CHECK FAILED! Black found issues with your code formatting." echo "# " echo "# Either:" echo "# 1. Run Black locally before committing:" echo "# " echo "# pip install .[formatting]" echo "# black ." echo "# " echo "# 2. Install the pre-commit hook:" echo "# " echo "# pre-commit install --hook-type pre-push" echo "# " echo "# 3. See https://github.com/deepset-ai/haystack/blob/main/CONTRIBUTING.md for help." echo "# " echo "# If you have further problems, please open an issue: https://github.com/deepset-ai/haystack/issues" echo "# " echo "##################################################################################################" exit 1 fi - name: Calculate alert data id: calculator shell: bash if: (success() || failure()) && github.ref_name == 'main' run: | if [ "${{ job.status }}" = "success" ]; then echo "alert_type=success" >> "$GITHUB_OUTPUT"; else echo "alert_type=error" >> "$GITHUB_OUTPUT"; fi - name: Send event to Datadog if: (success() || failure()) && github.ref_name == 'main' uses: masci/datadog@v1 with: api-key: ${{ secrets.CORE_DATADOG_API_KEY }} api-url: https://api.datadoghq.eu events: | - title: "${{ github.workflow }} workflow" text: "Job ${{ github.job }} in branch ${{ github.ref_name }}" alert_type: "${{ steps.calculator.outputs.alert_type }}" source_type_name: "Github" host: ${{ github.repository_owner }} tags: - "project:${{ github.repository }}" - "job:${{ github.job }}" - "run_id:${{ github.run_id }}" - "workflow:${{ github.workflow }}" - "branch:${{ github.ref_name }}" - "url:https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" rest_api: needs: black strategy: matrix: os: [windows-latest, ubuntu-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install REST API run: | pip install -U "./rest_api[dev]" pip install ".[dev]" pip install . - name: Run tests env: PYTEST_PARAMS: --maxfail=5 --durations=10 --suppress-no-test-exit-code run: | pytest ${{ env.PYTEST_PARAMS }} rest_api/ - name: Calculate alert data id: calculator shell: bash if: (success() || failure()) && github.ref_name == 'main' run: | if [ "${{ job.status }}" = "success" ]; then echo "alert_type=success" >> "$GITHUB_OUTPUT"; else echo "alert_type=error" >> "$GITHUB_OUTPUT"; fi - name: Send event to Datadog if: (success() || failure()) && github.ref_name == 'main' uses: masci/datadog@v1 with: api-key: ${{ secrets.CORE_DATADOG_API_KEY }} api-url: https://api.datadoghq.eu events: | - title: "${{ github.workflow }} workflow" text: "Job ${{ github.job }} in branch ${{ github.ref_name }}" alert_type: "${{ steps.calculator.outputs.alert_type }}" source_type_name: "Github" host: ${{ github.repository_owner }} tags: - "project:${{ github.repository }}" - "job:${{ github.job }}" - "run_id:${{ github.run_id }}" - "workflow:${{ github.workflow }}" - "branch:${{ github.ref_name }}" - "url:https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"