name: Main concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: pull_request: branches: - main push: branches: - main tags: - 'v*.*.*' env: # Change this to invalidate existing cache. CACHE_PREFIX: v0 PYTHONPATH: ./ VK_USERNAME: ${{ secrets.VK_USERNAME }} VK_PASSWORD: ${{ secrets.VK_PASSWORD }} VK_TOKEN: ${{ secrets.VK_TOKEN }} jobs: checks: name: Python ${{ matrix.python }} - ${{ matrix.task.name }} runs-on: [ubuntu-latest] timeout-minutes: 15 strategy: fail-fast: false matrix: python: ['3.10'] task: # --show-capture=no on purpose, -s for captchas - name: Test run: | pytest -s --show-capture=no --color=yes tests/ include: - python: '3.10' task: name: Lint run: flake8 . - python: '3.10' task: name: Type check run: mypy . - python: '3.10' task: name: Build run: | python setup.py check python setup.py bdist_wheel sdist - python: '3.10' task: name: Style run: | isort --check . black --check . - python: '3.10' task: name: Docs run: cd docs && make html steps: - uses: actions/checkout@v3 - name: Setup Python environment uses: ./.github/actions/setup-venv with: python-version: ${{ matrix.python }} cache-prefix: ${{ env.CACHE_PREFIX }} - name: ${{ matrix.task.name }} run: | . .venv/bin/activate ${{ matrix.task.run }} - name: Upload package distribution files if: matrix.task.name == 'Build' uses: actions/upload-artifact@v3 with: name: package path: dist - name: Clean up if: always() run: | . .venv/bin/activate pip uninstall -y vk-url-scraper release: name: Release runs-on: ubuntu-latest needs: [checks] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v1 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install requirements run: | pip install --upgrade pip setuptools wheel pip install -r dev-requirements.txt - name: Prepare environment run: | echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Download package distribution files uses: actions/download-artifact@v3 with: name: package path: dist - name: Publish package to PyPI run: | twine upload -u '${{ secrets.PYPI_USERNAME }}' -p '${{ secrets.PYPI_PASSWORD }}' dist/* - name: Publish GitHub release uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: # body_path: ${{ github.workspace }}-RELEASE_NOTES.md prerelease: ${{ contains(env.TAG, 'rc') }} files: | dist/*