name: ci on: push jobs: lint: name: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.7' - name: extract pip cache uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('setup.py') }} restore-keys: ${{ runner.os }}-pip- - run: | pip install --user --upgrade pip wheel pip install -e .[lint] - run: make lint tests-unit: name: "tests / unit" strategy: matrix: os: - ubuntu-latest - macos-latest - windows-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.7' - name: set pip cache dir id: pip-cache run: echo "::set-output name=dir::$(pip cache dir)" - name: extract pip cache uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ hashFiles('setup.py') }} restore-keys: ${{ runner.os }}-pip- - run: | pip install --user --upgrade pip wheel pip install -e .[test] - env: HOME: /tmp run: coverage run -m unittest -vv tests.unit.test_conf # run: coverage run -m unittest discover -vv tests.unit - if: startsWith(runner.os, 'linux') || startsWith(runner.os, 'mac') run: bash <(curl -s https://codecov.io/bash) -X gcov -F unit-${{ matrix.os }} tests-integration: name: "tests / integration" runs-on: ubuntu-latest strategy: matrix: test: # - datanetwork - blockchain # - other db: - sqlite # - postgres # services: # postgres: # image: postgres:12 # env: # POSTGRES_USER: postgres # POSTGRES_PASSWORD: postgres # POSTGRES_DB: postgres # ports: # - 5432:5432 # options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.7' - if: matrix.test == 'other' run: | sudo apt-get update sudo apt-get install -y --no-install-recommends ffmpeg - run: pip install tox coverage - env: TEST_DB: ${{ matrix.db }} run: | tox -e ${{ matrix.test }} ls -la ls -la tests bash <(curl -s https://codecov.io/bash) -X gcov -F integration-${{ matrix.test }}-${{ matrix.db }} build: needs: ["lint", "tests-unit", "tests-integration"] name: "build" strategy: matrix: os: - ubuntu-16.04 - macos-latest - windows-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.7' - name: set pip cache dir id: pip-cache run: echo "::set-output name=dir::$(pip cache dir)" - name: extract pip cache uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ hashFiles('setup.py') }} restore-keys: ${{ runner.os }}-pip- - if: startsWith(runner.os, 'linux') run: sudo apt-get install libzmq3-dev - if: startsWith(runner.os, 'mac') run: brew install zeromq - name: Setup run: | pip install --user --upgrade pip wheel pip install sqlalchemy@git+https://github.com/eukreign/pyinstaller.git@sqlalchemy pip install -e . - if: startsWith(runner.os, 'linux') run: pip install psycopg2 - if: startsWith(runner.os, 'linux') || startsWith(runner.os, 'mac') name: Build & Run (Unix) run: | pyinstaller --onefile --name lbrynet lbry/cli.py chmod +x dist/lbrynet dist/lbrynet --version - if: startsWith(runner.os, 'windows') name: Build & Run (Windows) run: | pip install pywin32 pyinstaller --additional-hooks-dir=scripts/. --icon=icons/lbry256.ico --onefile --name lbrynet lbry/cli.py dist/lbrynet.exe --version - uses: actions/upload-artifact@v2 with: name: lbrynet-${{ matrix.os }} path: dist/