-
Notifications
You must be signed in to change notification settings - Fork 4
167 lines (143 loc) · 4.69 KB
/
Copy pathtest.yml
File metadata and controls
167 lines (143 loc) · 4.69 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: test
on:
push:
tags:
- "v*"
branches:
- "**"
paths-ignore:
- "README.md"
- "README_zh.md"
pull_request:
branches:
- "**"
paths-ignore:
- "README.md"
- "README_zh.md"
workflow_dispatch:
jobs:
meta:
uses: ./.github/workflows/meta.yml
test:
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
matrix:
include:
- os: windows-latest
arch: x86_64
maa_prefix: MAA-win
container: ""
- os: ubuntu-latest
arch: x86_64
maa_prefix: MAA-linux
container: archlinux:base-devel
- os: macos-latest
arch: aarch64
maa_prefix: MAA-macos
container: ""
fail-fast: false
env:
ARCH: ${{ matrix.arch }}
MAA_FILE_PREFIX: ${{ matrix.maa_prefix }}
steps:
- name: Update system
if: matrix.os == 'ubuntu-latest'
run: |
pacman -Syu --noconfirm
- name: Install dep
if: matrix.os == 'ubuntu-latest'
run: |
pacman -Sy
pacman -S --noconfirm git
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install LLVM
if: matrix.os == 'macos-latest'
run: brew install llvm
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 'stable'
- name: Resolve MaaFramework Release
id: resolve_maa_release
uses: actions/github-script@v9
env:
TARGET_REPOSITORY: MaaXYZ/MaaFramework
with:
result-encoding: string
script: |
const repository = process.env.TARGET_REPOSITORY
const [owner, repo] = repository.split('/')
const releases = await github.paginate(github.rest.repos.listReleases, {
owner,
repo,
per_page: 100,
})
const latestRelease = releases.find(release => !release.draft)
if (!latestRelease) {
core.setFailed(`No published release found for ${repository}`)
return ''
}
core.info(
`Resolved MaaFramework release: ${latestRelease.tag_name} (prerelease=${latestRelease.prerelease})`
)
return latestRelease.tag_name
- name: Download MaaFramework
uses: robinraju/release-downloader@v1
with:
repository: MaaXYZ/MaaFramework
tag: ${{ steps.resolve_maa_release.outputs.result }}
fileName: "${{ env.MAA_FILE_PREFIX }}-${{ env.ARCH }}*"
out-file-path: "deps"
extract: true
- name: Setup Test Environment (Windows)
if: runner.os == 'Windows'
run: |
echo "${{ github.workspace }}/deps/bin;%PATH%" | Out-File -FilePath $env:GITHUB_PATH -Append
- name: Setup Test Environment (Linux)
if: runner.os == 'Linux'
run: |
echo "LD_LIBRARY_PATH=${{ github.workspace }}/deps/bin:$LD_LIBRARY_PATH" >> $GITHUB_ENV
- name: Setup Test Environment (macOS)
if: runner.os == 'macOS'
run: |
echo "DYLD_LIBRARY_PATH=${{ github.workspace }}/deps/bin:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
- name: Run API Check
run: |
go -C tools/api-check run . --config config.ci.yaml
- name: Prepare Test Data
run: |
mkdir -p test/data_set/PipelineSmoking/resource/model/ocr
cp -r test/data_set/MaaCommonAssets/OCR/ppocr_v4/zh_cn/* test/data_set/PipelineSmoking/resource/model/ocr
mkdir -p test/data_set/PipelineSmoking/resource/model/classify
cp -r test/classifier.onnx test/data_set/PipelineSmoking/resource/model/classify
- name: Run Tests
id: run_tests
continue-on-error: true
env:
CGO_ENABLED: 0
run: |
go test -v ./...
- uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ env.MAA_FILE_PREFIX }}-${{ env.ARCH }}-full_log
path: "test/debug"
- name: Fail job if tests failed
if: always() && steps.run_tests.outcome == 'failure'
run: |
echo "Tests failed. Check uploaded logs for details."
exit 1
release:
if: ${{ needs.meta.outputs.is_release == 'true' }}
needs: [meta, test]
runs-on: ubuntu-latest
steps:
- name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.meta.outputs.tag }}
prerelease: ${{ contains(needs.meta.outputs.tag, '-alpha') || contains(needs.meta.outputs.tag, '-beta') || contains(needs.meta.outputs.tag, '-rc') }}