-
Notifications
You must be signed in to change notification settings - Fork 100
128 lines (110 loc) · 3.8 KB
/
pull_request.yml
File metadata and controls
128 lines (110 loc) · 3.8 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
name: Build and Test
on: pull_request
permissions:
contents: read
jobs:
lint:
if: github.repository == 'ml-explore/mlx-swift-lm'
runs-on: ubuntu-22.04
container:
image: swift:6.2-rhel-ubi9
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup uv
uses: astral-sh/setup-uv@v6
with:
activate-environment: true
- name: Setup pre-commit
shell: sh
run: |
uv pip install pre-commit
- name: Get swift-format tag
id: swift-format
shell: sh
run: |
cd /tmp
LATEST_TAG=$(curl -s https://api.github.com/repos/swiftlang/swift-format/releases/latest | \
grep '"tag_name":' | \
sed -E 's/.*"([^"]+)".*/\1/')
echo "swift-format $LATEST_TAG"
echo "SWIFT_FORMAT_VERSION=$LATEST_TAG" >> $GITHUB_OUTPUT
- name: Cache swift-format build
uses: actions/cache@v4
id: cache-swift-format
with:
path: /tmp/swift-format/.build
key: ${{ runner.os }}-swift-format-build-${{ steps.swift-format.outputs.SWIFT_FORMAT_VERSION }}
- name: Build swift-format
if: steps.cache-swift-format.outputs.cache-hit != 'true'
shell: sh
run: |
cd /tmp
git clone --branch ${{ steps.swift-format.outputs.SWIFT_FORMAT_VERSION }} --depth 1 https://github.com/swiftlang/swift-format.git
cd swift-format
swift build -c release
- name: Link swift-format to /usr/local/bin
shell: sh
run: |
cd /tmp/swift-format
ln -s "$(swift build --show-bin-path -c release)/swift-format" /usr/local/bin/swift-format
- name: Configure safe directory for git
shell: sh
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run style checks
shell: sh
run: |
pre-commit run --all || (echo "Style checks failed, please install pre-commit and run pre-commit run --all and push the change"; echo ""; git --no-pager diff; exit 1)
linux_build:
needs: lint
if: github.repository == 'ml-explore/mlx-swift-lm'
runs-on: ubuntu-24.04
container:
image: swift:6.2.3-noble
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Build
run: swift build
mac_build_and_test:
needs: lint
if: github.repository == 'ml-explore/mlx-swift-lm'
runs-on: [self-hosted, macos]
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Verify MetalToolchain installed
shell: bash
run: xcodebuild -showComponent MetalToolchain
- name: Build (Xcode, macOS)
shell: sh
env:
# workaround for CI failure
DEVELOPER_DIR: /Applications/Xcode-latest.app
run: |
xcodebuild -version
xcrun --show-sdk-build-version
swift --version
rm -rf ~/Library/Developer/Xcode/DerivedData/*
xcodebuild build-for-testing -scheme mlx-swift-lm-Package -destination 'platform=macOS'
- name: Run Tests (Xcode, macOS)
shell: sh
env:
# workaround for CI failure
DEVELOPER_DIR: /Applications/Xcode-latest.app
run: |
xcrun xctest ~/Library/Developer/Xcode/DerivedData/mlx-swift-lm-*/Build/Products/Debug/MLXLMTests.xctest
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-results
path: |
~/Library/Developer/Xcode/DerivedData/**/Logs/Test/*.xcresult
/Users/runner/Library/Developer/Xcode/DerivedData/**/Logs/Test/*.xcresult
~/Library/Logs/DiagnosticReports/*
retention-days: 7