mirror of
https://github.com/deepset-ai/haystack.git
synced 2026-01-10 06:07:08 +00:00
* Reintroduce push on master trigger with Linux CI * Reintroduce trigger for freshly opened PRs too
201 lines
6.4 KiB
YAML
201 lines
6.4 KiB
YAML
name: Linux CI
|
|
|
|
on:
|
|
# Activate this workflow manually
|
|
workflow_dispatch:
|
|
# Activate this workflow on every update of a PR
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
# Activate this workflow on every push to master
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
|
|
build-cache:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.7
|
|
|
|
- run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
|
|
- name: Cache
|
|
id: cache-python-env
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.pythonLocation }}
|
|
# The cache will be rebuild every day and at every change of the dependency files
|
|
key: linux-${{ env.date }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('.github') }}
|
|
|
|
- name: Install dependencies
|
|
if: steps.cache-python-env.outputs.cache-hit != 'true'
|
|
run: |
|
|
pip install --upgrade pip
|
|
pip install .[test]
|
|
pip install rest_api/
|
|
pip install ui/
|
|
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html
|
|
|
|
prepare-build:
|
|
needs: build-cache
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- id: set-matrix
|
|
run: |
|
|
echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py | jq -SR . | jq -cs .)"
|
|
outputs:
|
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
|
|
code-and-docs-updates:
|
|
needs: build-cache
|
|
runs-on: ubuntu-latest
|
|
if: ${{ github.event_name }} != "push"
|
|
|
|
steps:
|
|
- run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{github.event.pull_request.head.ref}}
|
|
|
|
- name: Set up Python 3.7
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.7
|
|
|
|
- name: Cache Python
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.pythonLocation }}
|
|
key: linux-${{ env.date }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('.github') }}
|
|
|
|
# Apply black on the entire codebase
|
|
- name: Blacken
|
|
run: python3 -m black .
|
|
|
|
# Convert the Jupyter notebooks into markdown tutorials
|
|
- name: Generate Tutorials
|
|
run: |
|
|
cd docs/_src/tutorials/tutorials/
|
|
python3 convert_ipynb.py
|
|
|
|
# Generate markdown files from the docstrings with pydoc-markdown
|
|
- name: Generate Docstrings
|
|
run: |
|
|
set -e # Fails on any error in the following loop
|
|
cd docs/_src/api/api/
|
|
for file in ../pydoc/* ; do
|
|
echo "Processing" $file
|
|
pydoc-markdown "$file"
|
|
done
|
|
|
|
# Generates the OpenAPI specs file to be used on the documentation website
|
|
- name: Generate OpenAPI Specs
|
|
run: |
|
|
pip install rest_api/
|
|
cd docs/_src/api/openapi/
|
|
python generate_openapi_specs.py
|
|
|
|
# Generates a new JSON schema for the pipeline YAML validation
|
|
- name: Generate JSON schema for pipelines
|
|
run: python ./.github/utils/generate_json_schema.py
|
|
|
|
# Commit the files to GitHub
|
|
- name: Commit files
|
|
run: |
|
|
git status
|
|
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git config --local user.name "github-actions[bot]"
|
|
|
|
git add .
|
|
git commit -m "Update Documentation & Code Style" -a || echo "No changes to commit"
|
|
git status
|
|
git push
|
|
|
|
type-check:
|
|
needs: code-and-docs-updates
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
- run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.8
|
|
|
|
- name: Cache Python
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.pythonLocation }}
|
|
key: linux-${{ env.date }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('.github') }}
|
|
|
|
- name: Test with mypy
|
|
run: mypy haystack
|
|
|
|
build:
|
|
needs: prepare-build
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
test-path: ${{fromJson(needs.prepare-build.outputs.matrix)}}
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
|
|
- name: Set up Python 3.7
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.7
|
|
|
|
- name: Cache Python
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.pythonLocation }}
|
|
key: linux-${{ env.date }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('.github') }}
|
|
|
|
- name: Run Elasticsearch
|
|
run: docker run -d -p 9200:9200 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms128m -Xmx128m" elasticsearch:7.9.2
|
|
|
|
- name: Run Milvus
|
|
run: docker run -d -p 19530:19530 -p 19121:19121 milvusdb/milvus:1.1.0-cpu-d050721-5e559c
|
|
|
|
- name: Run Weaviate
|
|
run: docker run -d -p 8080:8080 --name haystack_test_weaviate --env AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED='true' --env PERSISTENCE_DATA_PATH='/var/lib/weaviate' semitechnologies/weaviate:1.7.2
|
|
|
|
- name: Run GraphDB
|
|
run: docker run -d -p 7200:7200 --name haystack_test_graphdb deepset/graphdb-free:9.4.1-adoptopenjdk11
|
|
|
|
- name: Run Apache Tika
|
|
run: docker run -d -p 9998:9998 -e "TIKA_CHILD_JAVA_OPTS=-JXms128m" -e "TIKA_CHILD_JAVA_OPTS=-JXmx128m" apache/tika:1.24.1
|
|
|
|
- name: Run Parsr
|
|
run: docker run -d -p 3001:3001 axarev/parsr:v1.2.2
|
|
|
|
# - name: Run Ray
|
|
# run: RAY_DISABLE_MEMORY_MONITOR=1 ray start --head
|
|
|
|
- name: Install pdftotext
|
|
run: wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz && tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin
|
|
|
|
- name: Install tesseract
|
|
run: sudo apt-get install tesseract-ocr libtesseract-dev poppler-utils
|
|
|
|
- name: Reinstall Haystack
|
|
run: |
|
|
pip install .[test]
|
|
pip install rest_api/
|
|
pip install eager ui/
|
|
|
|
- name: Run tests
|
|
run: pytest -s ${{ matrix.test-path }}
|