Skip to content

SQ: Bump timeout

SQ: Bump timeout #892

# Useful documentation for GitHub Actions workflows:
# https://docs.github.com/en/actions/using-workflows/about-workflows
name: push-github-action
# Useful documentation for `on`:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
on:
# Run CI whenever a push is made to any branch
push: null
# Run CI on the tip of any open pull request
pull_request: null
# Allow CI to be run manually in GitHub Actions UI
workflow_dispatch: null
jobs:
build-windows:
strategy:
matrix:
os:
# NOTE: Earliest Windows supported by Crystal is Windows 7
#- windows-7 # available only as a self-hosted runner
#- windows-2012-r2 # based on Windows 7 # no longer supported by GitHub Actions
#- windows-2016 # based on Windows 8.1 # no longer supported by GitHub Actions
- windows-2019 # based on Windows 10
- windows-latest
python-version: ["3.8", "3.9"]
fail-fast: false
runs-on: ${{ matrix.os }}
timeout-minutes: 35 # 150% of normal time: 23 min, as of 2024-02-22
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Poetry
run: pipx install poetry
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: poetry
- name: Install dependencies with Poetry
# If build takes a very long time, then it's likely that the version
# of wxPython installed does not offer a precompiled wheel for this
# version of Python. Check the wxPython PyPI page to confirm.
timeout-minutes: 2 # normally takes 15s, as of 2023-03-03
run: poetry install
- name: Display SQLite version and JSON support
run: |
python3 -c "import sqlite3; print('SQLite %s' % sqlite3.sqlite_version)"
poetry run python -c "from crystal.util.xsqlite3 import sqlite_has_json_support; print('JSON Support: ' + ('yes' if sqlite_has_json_support else 'NO'))"
- name: Run non-UI tests
run: poetry run python -m pytest
- name: Display Inno Setup in Program Files
run: |
dir "C:\Program Files (x86)"
dir "C:\Program Files (x86)\Inno Setup 6"
- name: Build .exe and installer
working-directory: ".\\setup"
run: "poetry run .\\make-win.bat"
- name: Run UI tests
working-directory: ".\\setup"
run: |
$LOGDIR = "$HOME\AppData\Local\DaFoster\Crystal Web Archiver\Logs"
$env:CRYSTAL_SCREENSHOTS_DIRPATH = "$env:GITHUB_WORKSPACE\screenshots"
poetry run python run_exe.py "--argsfile=arguments.txt" "--stdoutfile=$LOGDIR\stdout.log" "--stderrfile=$LOGDIR\stderr.log" "dist\Crystal Web Archiver.exe" "---" "--test" "crystal.tests.test_bulkheads"
- name: Upload screenshot if test failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: screenshots
path: screenshots
if-no-files-found: ignore
- name: Upload distribution artifact
# Only export distribution artifact for earliest supported Python and OS
if: (matrix.python-version == '3.8') && (matrix.os == 'windows-7')
uses: actions/upload-artifact@v3
with:
name: dist-win
path: "setup\\dist-win\\*.exe"
if-no-files-found: warn