Update GTK stack for use in CI/CD #130
This file contains 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" | |
gvsbuild-tag: | |
description: "Use an alternative gvsbuild release for the windows build. Defaults to latest." | |
default: "latest" | |
jobs: | |
test-linux: | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.10"] | |
os: ["ubuntu-24.04"] | |
include: | |
- os: ubuntu-22.04 | |
python-version: 3.7 | |
runs-on: ${{ matrix.os }} | |
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 }} | |
cache: "pip" | |
cache-dependency-path: "requirements*.txt" | |
- 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: | | |
sudo apt-get install libcairo2-dev libgirepository1.0-dev | |
pip install --upgrade pip wheel setuptools | |
pip install -r requirements-ci.txt | |
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)" 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 | |
strategy: | |
matrix: | |
python-version: ["3.7", "3.9", "3.10"] | |
arch: ["x64"] | |
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 }} | |
cache: "pip" | |
cache-dependency-path: "requirements*.txt" | |
- name: Determine gvsbuild release URL | |
id: gvsbuild-url | |
shell: bash | |
run: | | |
test -z "${{ github.event.inputs.gvsbuild-tag }}" && tag=latest || tag="${{ github.event.inputs.gvsbuild-tag }}" | |
if [[ "$tag" == "latest" ]]; then URL="https://github.com/${{ github.repository_owner }}/gvsbuild-release/releases/$tag/download"; else URL="https://github.com/${{ github.repository_owner }}/gvsbuild-release/releases/download/$tag" ; fi | |
echo "gvsbuild-release-url=$URL" >> $GITHUB_OUTPUT | |
- name: Install GTK | |
run: | | |
$WebClient = New-Object System.Net.WebClient | |
$WebClient.DownloadFile("${{ steps.gvsbuild-url.outputs.gvsbuild-release-url }}/gvsbuild-py${{ matrix.python-version }}-vs17-${{matrix.arch}}.zip","C:\GTK.zip") | |
7z x C:\GTK.zip -oc:\GTK | |
echo "C:\GTK\release\lib" | Out-File -FilePath $env:GITHUB_PATH -Append | |
echo "C:\GTK\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Append | |
echo "C:\GTK\release" | Out-File -FilePath $env:GITHUB_PATH -Append | |
python -m pip install --no-index --find-links="C:\GTK\release\python" pycairo PyGObject | |
- name: Install dependencies | |
run: | | |
pip install --upgrade pip wheel setuptools | |
pip install -r requirements-ci.txt | |
pip install -e . | |
- name: Test with pytest | |
run: | | |
python -c 'import libtorrent as lt; print(lt.__version__)'; | |
pytest -v -m "not (todo or gtkui or security)" deluge |