ci: add debian package build workflow for Debian 13 and Ubuntu 24.04 #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| inputs: | |
| core-dump: | |
| description: "Set to 1 to enable retrieving core dump from crashes" | |
| default: "0" | |
| env: | |
| UV_SYSTEM_PYTHON: 1 | |
| jobs: | |
| test-linux: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 10 | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.13"] | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Sets env var for security | |
| if: (github.event_name == 'pull_request' && contains(github.event.pull_request.body, 'security_test')) || (github.event_name == 'push' && contains(github.event.head_commit.message, 'security_test')) | |
| run: echo "SECURITY_TESTS=True" >> $GITHUB_ENV | |
| - name: Install dependencies | |
| run: | | |
| uv pip install -r requirements-ci.txt | |
| uv pip install -e . | |
| - name: Install security dependencies | |
| if: contains(env.SECURITY_TESTS, 'True') | |
| run: | | |
| wget -O- $TESTSSL_URL$TESTSSL_VER | tar xz | |
| mv -t deluge/tests/data testssl.sh-$TESTSSL_VER/testssl.sh testssl.sh-$TESTSSL_VER/etc/; | |
| env: | |
| TESTSSL_VER: 3.0.6 | |
| TESTSSL_URL: https://codeload.github.com/drwetter/testssl.sh/tar.gz/refs/tags/v | |
| - name: Setup core dump catch and store | |
| if: github.event.inputs.core-dump == '1' | |
| run: | | |
| sudo mkdir /cores/ && sudo chmod 777 /cores/ | |
| echo "/cores/%E.%p" | sudo tee /proc/sys/kernel/core_pattern | |
| ulimit -c unlimited | |
| sudo apt install glibc-tools | |
| echo "DEBUG_PREFIX=catchsegv python -X dev -m" >> $GITHUB_ENV | |
| - name: Test with pytest | |
| run: | | |
| python -c 'from deluge._libtorrent import lt; print(lt.__version__)'; | |
| $DEBUG_PREFIX pytest -v -m "not (todo or gtkui or internet)" deluge | |
| - uses: actions/upload-artifact@v4 | |
| # capture all crashes as build artifacts | |
| if: failure() | |
| with: | |
| name: crashes | |
| path: /cores | |
| test-windows: | |
| runs-on: windows-2022 | |
| timeout-minutes: 10 | |
| strategy: | |
| matrix: | |
| python-version: ["3.10"] | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Install dependencies | |
| run: | | |
| uv pip install -r requirements-ci.txt | |
| uv pip install -e . | |
| - name: Install OpenSSL | |
| run: | | |
| choco install openssl.light --version=1.1.1.20181020 | |
| - name: Patch Twisted | |
| shell: bash | |
| run: | | |
| # Find the site-packages where Twisted source installed | |
| SITE_PACKAGES=$(python -c "import sysconfig; print(sysconfig.get_path('purelib'))") | |
| echo "Site packages at: $SITE_PACKAGES" | |
| cd "$SITE_PACKAGES" | |
| patch -p1 < "$GITHUB_WORKSPACE/.github/patches/twisted-glib-windows.patch" | |
| echo "Patch applied successfully" | |
| - name: Test with pytest | |
| run: | | |
| python -c 'import libtorrent as lt; print(lt.__version__)'; | |
| pytest -v -m "not (todo or gtkui or security or internet)" deluge |