-
-
Notifications
You must be signed in to change notification settings - Fork 30
131 lines (128 loc) · 4.16 KB
/
lint-and-build.yml
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
# 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 }}
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
Ruff:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3
with:
version-file: "pyproject.toml"
- run: ruff format --check
Pyright:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
# Pyright is version and platform sensible
matrix:
os: [windows-latest, ubuntu-22.04]
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up uv for Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
python-version: ${{ matrix.python-version }}
- run: scripts/install.ps1
shell: pwsh
- run: echo "$PWD/.venv/bin" >> $GITHUB_PATH
- name: Analysing the code with Pyright
uses: jakebailey/pyright-action@v2
with:
version: PATH
working-directory: src/
python-version: ${{ matrix.python-version }}
Build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
# Only the Python version we plan on shipping matters.
matrix:
os: [windows-latest, ubuntu-22.04]
python-version: ["3.13"]
include:
# I had some Qt Wayland issues on 3.12 for ubuntu-22.04
# This should be fixed with QT_QPA_PLATFORM=xcb, but keeping it until next major upgrade
- os: ubuntu-22.04
python-version: "3.11"
steps:
- uses: actions/checkout@v4
# region https://github.com/pyinstaller/pyinstaller/issues/9012
- name: Set up uv for Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
python-version: ${{ !startsWith(matrix.os, 'ubuntu') && matrix.python-version || null }}
- name: Set up Python for PyInstaller tk issue
if: ${{ startsWith(matrix.os, 'ubuntu') }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# 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: autosplit_version
working-directory: src
run: |
$Env:AUTOSPLIT_VERSION=uv run python -c "import utils; print(utils.AUTOSPLIT_VERSION)"
echo "AUTOSPLIT_VERSION=$Env:AUTOSPLIT_VERSION" >> $Env:GITHUB_OUTPUT
shell: pwsh
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: >
AutoSplit v${{ steps.autosplit_version.outputs.AUTOSPLIT_VERSION }}
for ${{ matrix.os }} (Python ${{ matrix.python-version }})
path: |
dist/AutoSplit*
dist/settings.toml
if-no-files-found: error
- name: Upload Build logs
uses: actions/upload-artifact@v4
with:
name: Build logs for ${{ matrix.os }} (Python ${{ matrix.python-version }})
path: |
build/AutoSplit/*.toc
build/AutoSplit/*.txt
build/AutoSplit/*.html
if-no-files-found: error