From b526fc582ffc97f1ad9e9c07746574d75ab8e161 Mon Sep 17 00:00:00 2001 From: Dom Rodriguez Date: Mon, 12 Sep 2022 21:39:01 +0100 Subject: [PATCH] Initial version of CI for RSSingle Hi @tanrax! As part of our new collaboration, I've made an initial version for automated CI for RSSingle. It needs macOS to work first, so I've commented out a draft version of the `pyinstaller` aspect, so I'll make this PR a draft for now when we can discuss further, preferably in a GH issue for transparency (unless you want it private?), but this workflow tests on PRs and pushes to any branch, with flake8 across multiple Python versions. The pyinstaller aspect only runs if the flake8 check passes. What do you think? Signed-off-by: Dom Rodriguez --- .github/workflows/ci.yml | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8dc7375 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,54 @@ +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@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + 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'] + runs-on: ubuntu-latest + name: Builder for Python all-in-one executables, published on a releases + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + 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 + run: pyinstaller ${{ matrix.pyinstaller-type }} ./rssingle.py + - name: List artifacts for finishing this action + run: find ./dist/