Repository navigation
124 lines (107 loc) · 3.77 KB
/
Copy pathci-windows.yml
File metadata and controls
124 lines (107 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
name: CI Windows
on:
push:
branches: ["master", "cefpython147"]
pull_request:
branches: ["master"]
workflow_dispatch:
inputs:
version:
description: "Release version, e.g. 147.1 or 147.0.1 (empty: dev version)"
type: string
default: ""
bypass_cache:
description: "Bypass all caches for a clean run"
type: boolean
default: false
jobs:
download-cef:
runs-on: windows-latest
timeout-minutes: 15
outputs:
cef_version: ${{ steps.cef-version.outputs.value }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Read CEF version
id: cef-version
run: |
$ver = (Select-String -Path src/version/cef_version_win.h `
-Pattern '#define CEF_VERSION "([^"]+)"').Matches[0].Groups[1].Value
echo "value=$ver" >> $env:GITHUB_OUTPUT
- name: Cache CEF binaries
uses: actions/cache@v5
if: ${{ inputs.bypass_cache != true }}
with:
path: |
build/cef_binary_*
build/cef*_win64
# Keyed on the CEF version (each version gets its own cache) and on the
# download/prepare scripts (invalidate when they change).
key: cef-windows64-${{ hashFiles('tools/download_cef.py', 'tools/automate.py') }}-${{ steps.cef-version.outputs.value }}
- name: Install build tools
run: python tools/requirements.py
- name: Download CEF binaries
run: python tools/download_cef.py
build:
needs: download-cef
runs-on: windows-latest
timeout-minutes: 75
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0 # full history for the dev version (git commit count)
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Restore CEF cache
uses: actions/cache/restore@v5
if: ${{ inputs.bypass_cache != true }}
with:
path: |
build/cef_binary_*
build/cef*_win64
key: cef-windows64-${{ hashFiles('tools/download_cef.py', 'tools/automate.py') }}-${{ needs.download-cef.outputs.cef_version }}
- name: Install build tools
run: python tools/requirements.py
- name: Prepare prebuilt CEF
run: python tools/automate.py --prebuilt-cef
- name: Build wheel
env:
RELEASE_VERSION: ${{ inputs.version }}
run: |
if ($env:RELEASE_VERSION) {
if ($env:RELEASE_VERSION -cnotmatch '^[0-9]+\.[0-9]+(\.[0-9]+)?((a|b|rc)[0-9]+)?\z') {
Write-Output "Invalid version: $env:RELEASE_VERSION"
exit 1
}
python tools/build.py --wheel --version $env:RELEASE_VERSION
} else {
python tools/build.py --wheel
}
- name: Unit-test the built wheel
run: |
# Install the wheel and run the unit tests against the INSTALLED
# package. No PYTHONPATH and no dev .pth (build.py --wheel doesn't
# write one), so build/package/ is not on sys.path and
# import cefpython3 resolves to the installed wheel.
pip install (Get-ChildItem build/dist/*.whl).FullName
python unittests/_test_runner.py
- name: Smoke-test the built wheel
timeout-minutes: 5
run: python tools/smoke_test.py
- name: Upload wheel artifact
uses: actions/upload-artifact@v7
with:
path: build/dist/*.whl
archive: false