name: CI workflow for RSSingle on: [push, pull_request] jobs: build-and-check: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.8", "3.9", "3.10"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install flake8 pip install -r requirements.txt - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics # to be completed once macOS builds fixed create-and-publish-release: needs: build-and-check if: startsWith(github.ref, 'refs/tags/') && success() strategy: matrix: # `--windowed` is for macOS, and `--onefile` is for other OSes. pyinstaller-type: ['--windowed', '--onefile'] runner: ["macos-latest", "windows-latest", "ubuntu-latest"] runs-on: ${{ matrix.runner }} name: Builder for Python all-in-one executables, published on a release. steps: - name: Checkout sources uses: actions/checkout@v4 - name: Set up Python 3.8 uses: actions/setup-python@v5 with: python-version: "3.8" - name: Install dependencies run: | python -m pip install --upgrade pip pip install pyinstaller pip install -r requirements.txt - name: Build RSSingle (Windows, Linux) if: ${{ matrix.runner != 'macos-latest' }} run: pyinstaller --onefile ./rssingle.py - name: Build RSSingle (macOS) if: ${{ matrix.runner == 'macos-latest' }} run: pyinstaller --windowed ./rssingle.py - name: List artifacts for finishing this action run: find ./dist/