name: CI env: PIP: pip PYTHON: python on: pull_request: push: branches: - '**' tags-ignore: - '**' jobs: lint: permissions: checks: write contents: read pull-requests: write runs-on: ${{ matrix.os }} strategy: matrix: python-version: [3.9] os: [ubuntu-latest] steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - uses: syphar/restore-virtualenv@v1.2 id: cache-virtualenv - uses: syphar/restore-pip-download-cache@v1 if: steps.cache-virtualenv.outputs.cache-hit != 'true' - name: Install build dependencies run: | python -m pip install --upgrade --upgrade-strategy eager -r requirements_dev.txt - uses: reviewdog/action-setup@v1 with: reviewdog_version: nightly - run: flake8 | reviewdog -f=flake8 -reporter=github-pr-review -tee -level=error -fail-on-error env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} build-and-test: runs-on: ${{ matrix.os }} strategy: matrix: python-version: [3.9] os: [ubuntu-latest, macos-10.15, windows-latest] steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - uses: syphar/restore-virtualenv@v1.2 id: cache-virtualenv - uses: syphar/restore-pip-download-cache@v1 if: steps.cache-virtualenv.outputs.cache-hit != 'true' - name: Install build dependencies run: | python -m pip install --upgrade --upgrade-strategy eager -r requirements_dev.txt - name: Install Windows build dependencies run: | choco install -y zip if: runner.os == 'Windows' - name: Install macos dependencies run: | brew install icu4c pkg-config export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"; export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:$PATH" python -m pip install --no-binary=pyicu pyicu if: runner.os == 'macOS' - name: Install linux dependencies run: | sudo apt-get install pkg-config libicu-dev export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"; export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:$PATH" python -m pip install --no-binary=pyicu pyicu if: runner.os == 'Linux' - name: Build and install PyPi packages run: | make clean pydist python -m pip install "dist/$(python setup.py --fullname)-py3-none-any.whl[all]" - name: build run: | make dist - name: Archive production artifacts uses: actions/upload-artifact@v2 if: runner.os != 'Linux' # linux binary currently has a segfault when running on latest fedora with: name: "${{ format('ComicTagger-{0}', runner.os) }}" path: | dist/*.zip - name: PyTest run: | python -m pytest