-
-
Notifications
You must be signed in to change notification settings - Fork 29
134 lines (129 loc) · 4.62 KB
/
Copy pathlint-and-build.yml
File metadata and controls
134 lines (129 loc) · 4.62 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
131
132
133
134
# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
name: Lint and build
on:
workflow_dispatch: # Allows manual builds
inputs:
excludeBuildNumber:
description: "Exclude build number"
required: true
default: false
type: boolean
push:
branches:
- main
paths:
- ".github/workflows/lint-and-build.yml"
- "src/**"
- "scripts/**"
- "*.toml"
- "uv.lock"
pull_request:
branches:
- main
paths:
- ".github/workflows/lint-and-build.yml"
- "src/**"
- "scripts/**"
- "*.toml"
- "uv.lock"
env:
GITHUB_HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
GITHUB_EXCLUDE_BUILD_NUMBER: ${{ inputs.excludeBuildNumber }}
UV_NO_SYNC: true # Avoid accidentally pulling in dependency-groups with uv run
# https://github.com/opencv/opencv-python#source-distributions
# Allows building OpenCV on Windows ARM64
# https://github.com/opencv/opencv-python/issues/1092#issuecomment-2862538656
CMAKE_ARGS: "-DBUILD_opencv_dnn=OFF -DENABLE_NEON=OFF"
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
Pyright:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
# Pyright is version and platform sensible
matrix:
# arm runner slower as long as opencv doesn't provide arm64 wheels
os: [windows-latest, ubuntu-latest]
python-version: ["3.14"]
steps:
- uses: actions/checkout@v6
- name: Set up uv for Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
- run: scripts/install.ps1
shell: pwsh
- name: Analysing the code with Pyright
uses: jakebailey/pyright-action@v2
with:
version: PATH
working-directory: src/
python-version: ${{ matrix.python-version }}
PySentry:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
- run: uvx pysentry-rs --sources=pypa,pypi,osv --forbid-unmaintained
Build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
# Only the Python version we plan on shipping matters.
matrix:
os: [windows-latest, windows-11-arm, ubuntu-22.04, ubuntu-22.04-arm]
python-version: ["3.14"]
steps:
- uses: actions/checkout@v6
# https://github.com/astral-sh/uv/issues/12906#issuecomment-3587439179
- name: Set UV_PYTHON for ARM runners
if: ${{ endsWith(matrix.os, 'arm') }}
run: echo "UV_PYTHON=arm64" >> "$GITHUB_ENV"
# region https://github.com/pyinstaller/pyinstaller/issues/9204
- name: Set up Python for PyInstaller tk issue on Linux
if: ${{ startsWith(matrix.os, 'ubuntu') }}
uses: actions/setup-python@v5
with:
allow-prereleases: true
python-version: ${{ matrix.python-version }}
- name: Set up uv for Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ !startsWith(matrix.os, 'ubuntu') && matrix.python-version || null }}
# endregion
- run: scripts/install.ps1
shell: pwsh
- run: scripts/build.ps1
shell: pwsh
- name: Add empty profile
run: echo "" > dist/settings.toml
- name: Extract AutoSplit version
id: artifact_vars
working-directory: src
run: | # This also serves as a sanity check for imports
$Env:AUTOSPLIT_VERSION=uv run python -c "import utils; print(utils.AUTOSPLIT_VERSION)"
echo "AUTOSPLIT_VERSION=$Env:AUTOSPLIT_VERSION" >> $Env:GITHUB_OUTPUT
echo "OS=$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)" >> $Env:GITHUB_OUTPUT
shell: pwsh
- name: Upload Build Artifact
uses: actions/upload-artifact@v6
with:
name: >
AutoSplit v${{ steps.artifact_vars.outputs.AUTOSPLIT_VERSION }}
for ${{ steps.artifact_vars.outputs.OS }} (Python ${{ matrix.python-version }})
path: |
dist/AutoSplit*
dist/settings.toml
if-no-files-found: error
- name: Upload Build logs
uses: actions/upload-artifact@v6
with:
name: Build logs for ${{ steps.artifact_vars.outputs.OS }} (Python ${{ matrix.python-version }})
path: |
build/AutoSplit/*.toc
build/AutoSplit/*.txt
build/AutoSplit/*.html
if-no-files-found: error