name: Build binaries on: push: branches: [ master ] jobs: build: runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v7 - name: Install compilers run: | sudo apt update sudo apt install -y gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 sudo apt install -y wget make zip - name: Compile run: | ./bundle_calibre_plugin.sh ./bundle_migration_plugin.sh - name: Upload uses: actions/upload-artifact@v7 with: name: calibre-plugins compression-level: 0 path: | calibre-plugin.zip calibre-migration-plugin.zip test-python: runs-on: ubuntu-26.04 container: python:${{ matrix.python-version }} strategy: matrix: python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.15-rc"] # 3.5 is broken due to SSL issues? Todo. steps: - uses: actions/checkout@v7 - name: Install python requirements run: | pip --no-python-version-warning install https://github.com/Leseratte10/acsm-calibre-plugin/releases/download/config/oscrypto_1.3.0_fork_2023-12-19.zip pip --no-python-version-warning install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests run: | cd tests && python --version && PYTHONWARNINGS=ignore python ./main.py test-ubuntu-2004: runs-on: ubuntu-26.04 container: ubuntu:focal steps: - uses: actions/checkout@v7 - name: Install dependencies run: | apt update && apt install -y curl python3 python3-pip python2 pip3 install -r ./.github/workflows/ci_test_requirements.txt # Install Python2 stuff curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py python2 get-pip.py pip2 --no-python-version-warning install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. - name: Run tests (Python 2) run: | cd tests && PYTHONWARNINGS=ignore python2 ./main.py && cd .. test-ubuntu-2604-oscrypto-fork: runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v7 - name: Install dependencies run: | apt update && apt install -y curl python3 python3-pip pip3 install https://github.com/Leseratte10/acsm-calibre-plugin/releases/download/config/oscrypto_1.3.0_fork_2023-12-19.zip pip3 install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. test-ubuntu-2604arm-oscrypto-fork: runs-on: ubuntu-26.04-arm steps: - uses: actions/checkout@v7 - name: Install dependencies run: | apt update && apt install -y curl python3 python3-pip pip3 install https://github.com/Leseratte10/acsm-calibre-plugin/releases/download/config/oscrypto_1.3.0_fork_2023-12-19.zip pip3 install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. test-ubuntu-2204-oscrypto: if: false runs-on: ubuntu-26.04 container: ubuntu:jammy steps: - uses: actions/checkout@v7 - name: Install dependencies id: pip-stuff continue-on-error: true run: | apt update apt install -y python3-pip # Require oscrypto > 1.3.0 because all versions until 1.3.0 had no (or broken) OpenSSL 3 support. pip3 install "oscrypto>1.3.0" pip3 install -r ./.github/workflows/ci_test_requirements.txt # Install Python2 stuff curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py apt install -y python2 python2 get-pip.py pip2 --no-python-version-warning install "oscrypto>1.3.0" pip2 --no-python-version-warning install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) if: steps.pip-stuff.outcome == 'success' && steps.pip-stuff.conclusion == 'success' run: | cd tests && python3 ./main.py && cd .. - name: Run tests (Python 2) if: steps.pip-stuff.outcome == 'success' && steps.pip-stuff.conclusion == 'success' run: | cd tests && PYTHONWARNINGS=ignore python2 ./main.py && cd .. test-ubuntu-2204-oscrypto-fork: runs-on: ubuntu-26.04 container: ubuntu:jammy steps: - uses: actions/checkout@v7 - name: Install dependencies run: | apt update apt install -y python3-pip curl # Require cryptography >= 3.1 because in 3.0 and below, the backend param in load_key_and_certificates was still required. # Installing a forked version of oscrypto to fix OpenSSL 3 issues pip3 install https://github.com/Leseratte10/acsm-calibre-plugin/releases/download/config/oscrypto_1.3.0_fork_2023-12-19.zip pip3 install -r ./.github/workflows/ci_test_requirements.txt # Install Python2 stuff curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py apt install -y python2 python2 get-pip.py pip2 --no-python-version-warning install https://github.com/Leseratte10/acsm-calibre-plugin/releases/download/config/oscrypto_1.3.0_fork_2023-12-19.zip pip2 --no-python-version-warning install -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. - name: Run tests (Python 2) run: | cd tests && PYTHONWARNINGS=ignore python2 ./main.py && cd .. test-windows: runs-on: windows-2025 steps: - uses: actions/checkout@v7 - name: Install dependencies run: | # Require cryptography >= 3.1 because in 3.0 and below, the backend param in load_key_and_certificates was still required. pip3 install -r ./.github/workflows/ci_test_requirements.txt shell: bash - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. shell: bash test-mac-arm64: runs-on: macos-26 steps: - uses: actions/checkout@v7 - name: Install dependencies run: | pip3 install --break-system-packages -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd .. test-mac-intel: runs-on: macos-15-intel steps: - uses: actions/checkout@v7 - name: Install dependencies run: | pip3 install --break-system-packages -r ./.github/workflows/ci_test_requirements.txt - name: Run tests (Python 3) run: | cd tests && python3 ./main.py && cd ..