Repository navigation
130 lines (109 loc) · 4.2 KB
/
Copy pathci-windows.yml
File metadata and controls
130 lines (109 loc) · 4.2 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
125
126
127
128
129
130
name: CI Windows
on:
push:
branches: ["master", "cefpython147"]
pull_request:
branches: ["master"]
workflow_dispatch:
inputs:
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.10"
- 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 wheel 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: Configure CMake
run: cmake -S . -B build/_cmake_build -A x64
- name: Build
run: cmake --build build/_cmake_build --config Release --parallel
- name: Stage build outputs
run: |
New-Item -ItemType Directory -Force build/artifacts
Copy-Item build/_cmake_build/Release/cefpython_py*.pyd build/artifacts/
Copy-Item build/_cmake_build/subprocess_build/Release/subprocess.exe build/artifacts/
$cefBin = (Get-ChildItem build/cef*_win64 -Directory | Select-Object -First 1).FullName + "/bin"
Get-ChildItem $cefBin | Where-Object { $_.Name -notmatch '^(cefclient|cefsimple|ceftests)' } |
ForEach-Object { Copy-Item $_.FullName build/artifacts/ -Recurse -Force }
- name: Set up cefpython3 package
run: |
Get-ChildItem build/artifacts/ | ForEach-Object {
Copy-Item $_.FullName cefpython3/ -Recurse -Force
}
- name: Build wheel
run: python tools/build_distrib.py --dev
- name: Unit-test the built wheel
run: |
# Install the wheel and run the unit tests against the INSTALLED
# package. No PYTHONPATH: _test_runner.py chdir's to unittests/, so
# the repo's cefpython3/ build dir is never on sys.path and
# import cefpython3 resolves to the installed wheel.
pip install (Get-ChildItem build/dist/*.whl | Select-Object -First 1).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