1
- # Copyright (c) Files Community
2
- # Licensed under the MIT License.
3
-
4
- # Abstract:
5
- # This CI is executed when a new commit is created on the main branch or
6
- # on a PR whose head branch is the main branch.
7
- # However, the CI will not be executed if files not directly related to
8
- # source code maintenance are updated.
1
+ # Copyright (c) 2024 Files Community
2
+ # Licensed under the MIT License. See the LICENSE.
9
3
10
4
name : Files CI
11
5
28
22
run-name : ${{ github.event_name == 'pull_request' && 'Files PR Validation' || 'Files CI Validation' }}
29
23
30
24
env :
31
- WORKING_DIR : ${{ github.workspace }} # Default: 'D:\a\Files\Files'
32
- SOLUTION_PATH : ' ${{ github.workspace }}\Files.sln'
33
- PACKAGE_PROJECT_DIR : ' ${{ github.workspace }}\src\Files.App (Package)'
34
- PACKAGE_PROJECT_PATH : ' ${{ github.workspace }}\src\Files.App (Package)\Files.Package.wapproj'
35
- AUTOMATED_TESTS_ARCHITECTURE : ' x64'
25
+ WORKING_DIR : ' ${{ github.workspace }}' # Default: 'D:\a\Files\Files'
26
+ SOLUTION_PATH : ' ${{ github.workspace }}\Files.sln'
27
+ PACKAGE_PROJECT_DIR : ' ${{ github.workspace }}\src\Files.App (Package)'
28
+ PACKAGE_PROJECT_PATH : ' ${{ github.workspace }}\src\Files.App (Package)\Files.Package.wapproj'
29
+ AUTOMATED_TESTS_PLATFORM : ' x64'
36
30
AUTOMATED_TESTS_CONFIGURATION : ' Release'
37
- AUTOMATED_TESTS_PROJECT_DIR : ' ${{ github.workspace }}\tests\Files.InteractionTests'
38
- AUTOMATED_TESTS_PROJECT_PATH : ' ${{ github.workspace }}\tests\Files.InteractionTests\Files.InteractionTests.csproj'
39
- AUTOMATED_TESTS_ASSEMBLY_DIR : ' ${{ github.workspace }}\artifacts\TestsAssembly'
40
- ARTIFACTS_STAGING_DIR : ' ${{ github.workspace }}\artifacts'
41
- APPX_PACKAGE_DIR : ' ${{ github.workspace }}\artifacts\AppxPackages'
42
- APPX_SELFSIGNED_CERT_PATH : ' ${{ github.workspace }}\.github\workflows\FilesApp_SelfSigned.pfx'
43
- WINAPPDRIVER_EXE86_PATH : ' C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe'
44
- WINAPPDRIVER_EXE64_PATH : ' C:\Program Files\Windows Application Driver\WinAppDriver.exe'
31
+ AUTOMATED_TESTS_PROJECT_DIR : ' ${{ github.workspace }}\tests\Files.InteractionTests'
32
+ AUTOMATED_TESTS_PROJECT_PATH : ' ${{ github.workspace }}\tests\Files.InteractionTests\Files.InteractionTests.csproj'
33
+ AUTOMATED_TESTS_ASSEMBLY_DIR : ' ${{ github.workspace }}\artifacts\TestsAssembly'
34
+ ARTIFACTS_STAGING_DIR : ' ${{ github.workspace }}\artifacts'
35
+ APPX_PACKAGE_DIR : ' ${{ github.workspace }}\artifacts\AppxPackages'
36
+ APPX_SELFSIGNED_CERT_PATH : ' ${{ github.workspace }}\.github\workflows\FilesApp_SelfSigned.pfx'
37
+ WINAPPDRIVER_EXE86_PATH : ' C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe'
38
+ WINAPPDRIVER_EXE64_PATH : ' C:\Program Files\Windows Application Driver\WinAppDriver.exe'
45
39
46
40
jobs :
47
41
93
87
platform : [x64, arm64]
94
88
env :
95
89
CONFIGURATION : ${{ matrix.configuration }}
96
- ARCHITECTURE : ${{ matrix.platform }}
90
+ PLATFORM : ${{ matrix.platform }}
97
91
98
92
steps :
99
93
@@ -108,75 +102,49 @@ jobs:
108
102
with :
109
103
global-json-file : global.json
110
104
111
- - name : Restore NuGet
112
- shell : pwsh
113
- run : ' nuget restore $env:SOLUTION_PATH'
114
-
115
- - name : Restore Files
116
- shell : pwsh
117
- run : |
118
- msbuild $env:SOLUTION_PATH `
119
- -t:Restore `
120
- -p:Platform=$env:ARCHITECTURE `
121
- -p:Configuration=$env:CONFIGURATION `
122
- -p:PublishReadyToRun=true
123
-
124
- - if : env.CONFIGURATION != env.AUTOMATED_TESTS_CONFIGURATION || env.ARCHITECTURE != env.AUTOMATED_TESTS_ARCHITECTURE
105
+ - if : env.CONFIGURATION != env.AUTOMATED_TESTS_CONFIGURATION || env.PLATFORM != env.AUTOMATED_TESTS_PLATFORM
125
106
name : Build Files
126
107
run : |
127
- msbuild `
128
- $env:PACKAGE_PROJECT_PATH `
129
- -t:Build `
130
- -clp:ErrorsOnly `
131
- -p:Configuration=$env:CONFIGURATION `
132
- -p:Platform=$env:ARCHITECTURE `
133
- -p:AppxBundle=Never
134
-
135
- - if : env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION && env.ARCHITECTURE == env.AUTOMATED_TESTS_ARCHITECTURE
136
- name : Create self signed cert as a pfx file
137
- run : ./.github/scripts/Generate-SelfCertPfx.ps1 -Destination "$env:APPX_SELFSIGNED_CERT_PATH"
138
-
139
- - if : env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION && env.ARCHITECTURE == env.AUTOMATED_TESTS_ARCHITECTURE
140
- name : Build & package Files
108
+ . './.github/scripts/Build-AppSolution.ps1' `
109
+ -Branch "$env:CONFIGURATION" `
110
+ -SolutionPath "$env:SOLUTION_PATH" `
111
+ -StartupProjectPath "$env:PACKAGE_PROJECT_PATH" `
112
+ -Configuration "$env:CONFIGURATION" `
113
+ -Platform "$env:PLATFORM"
114
+
115
+ - if : env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION && env.PLATFORM == env.AUTOMATED_TESTS_PLATFORM
116
+ name : Build and package Files
141
117
run : |
118
+ # Generate self signing certificate
119
+ . './.github/scripts/Generate-SelfCertPfx.ps1' `
120
+ -Destination "$env:APPX_SELFSIGNED_CERT_PATH"
121
+ # Restore and build
122
+ . './.github/scripts/Build-AppSolution.ps1' `
123
+ -Branch "$env:CONFIGURATION" `
124
+ -SolutionPath "$env:SOLUTION_PATH" `
125
+ -StartupProjectPath "$env:PACKAGE_PROJECT_PATH" `
126
+ -Configuration "$env:CONFIGURATION" `
127
+ -Platform "$env:PLATFORM" `
128
+ -AppxBundlePlatforms "$env:PLATFORM" `
129
+ -AppxPackageDir "$env:APPX_PACKAGE_DIR" `
130
+ -AppxPackageCertKeyFile "$env:APPX_SELFSIGNED_CERT_PATH"
131
+ # Build test project
142
132
msbuild `
143
- $env:PACKAGE_PROJECT_PATH `
144
- -t:Build `
145
- -t:_GenerateAppxPackage `
146
- -clp:ErrorsOnly `
147
- -p:Configuration=$env:CONFIGURATION `
148
- -p:Platform=$env:ARCHITECTURE `
149
- -p:AppxBundlePlatforms=$env:AUTOMATED_TESTS_ARCHITECTURE `
150
- -p:AppxBundle=Always `
151
- -p:UapAppxPackageBuildMode=SideloadOnly `
152
- -p:AppxPackageDir=$env:APPX_PACKAGE_DIR `
153
- -p:AppxPackageSigningEnabled=true `
154
- -p:PackageCertificateKeyFile=$env:APPX_SELFSIGNED_CERT_PATH `
155
- -p:PackageCertificatePassword="" `
156
- -p:PackageCertificateThumbprint=""
157
-
158
- - if : env.ARCHITECTURE == env.AUTOMATED_TESTS_ARCHITECTURE && env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION
159
- name : Build interaction tests
160
- run : |
161
- msbuild $env:AUTOMATED_TESTS_PROJECT_PATH `
162
- -t:Build `
163
- -clp:ErrorsOnly `
164
- -p:Configuration=$env:CONFIGURATION `
165
- -p:Platform=$env:AUTOMATED_TESTS_ARCHITECTURE
166
-
167
- - if : env.ARCHITECTURE == env.AUTOMATED_TESTS_ARCHITECTURE && env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION
168
- name : Copy tests bin to the artifacts dir
169
- shell : pwsh
170
- run : |
133
+ $env:AUTOMATED_TESTS_PROJECT_PATH `
134
+ /t:Build `
135
+ /clp:ErrorsOnly `
136
+ /p:Configuration=$env:CONFIGURATION `
137
+ /p:Platform=$env:PLATFORM
171
138
Copy-Item `
172
- -Path "$env:AUTOMATED_TESTS_PROJECT_DIR\bin" `
173
- -Destination "$env:AUTOMATED_TESTS_ASSEMBLY_DIR" -Recurse
139
+ -Path "$env:AUTOMATED_TESTS_PROJECT_DIR\bin" `
140
+ -Destination "$env:AUTOMATED_TESTS_ASSEMBLY_DIR" `
141
+ -Recurse
174
142
175
- - if : env.ARCHITECTURE == env.AUTOMATED_TESTS_ARCHITECTURE && env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION
176
- name : Upload the packages to the Artifacts
143
+ - if : env.CONFIGURATION == env.AUTOMATED_TESTS_CONFIGURATION && env.PLATFORM == env.AUTOMATED_TESTS_PLATFORM
144
+ name : Upload the packages to GitHub Actions
177
145
uses : actions/upload-artifact@v4
178
146
with :
179
- name : ' Appx Packages (${{ env.CONFIGURATION }}, ${{ env.ARCHITECTURE }})'
147
+ name : ' Appx Packages (${{ env.CONFIGURATION }}, ${{ env.PLATFORM }})'
180
148
path : ${{ env.ARTIFACTS_STAGING_DIR }}
181
149
182
150
test :
@@ -192,6 +160,7 @@ jobs:
192
160
platform : [x64]
193
161
env :
194
162
CONFIGURATION : ${{ matrix.configuration }}
163
+ PLATFORM : ${{ matrix.platform }}
195
164
permissions :
196
165
contents : read
197
166
pull-requests : write
@@ -212,24 +181,19 @@ jobs:
212
181
- name : Download the packages from the Artifacts
213
182
uses : actions/download-artifact@v4
214
183
with :
215
- name : ' Appx Packages (${{ env.CONFIGURATION }}, ${{ env.AUTOMATED_TESTS_ARCHITECTURE }})'
184
+ name : ' Appx Packages (${{ env.CONFIGURATION }}, ${{ env.PLATFORM }})'
216
185
path : ${{ env.ARTIFACTS_STAGING_DIR }}
217
186
218
- - name : Install Files
187
+ - name : Prepare for the tests
219
188
shell : powershell
220
189
run : |
221
190
Set-Location "$env:APPX_PACKAGE_DIR"
222
191
$AppxPackageBundleDir = Get-ChildItem -Filter Files.Package_*_Test -Name
223
192
Set-Location $AppxPackageBundleDir
224
193
./Install.ps1 -Force
225
194
Get-AppxPackage
226
-
227
- - name : Set full HD resolution
228
- run : Set-DisplayResolution -Width 1920 -Height 1080 -Force
229
-
230
- - name : Start WinAppDriver process
231
- shell : pwsh
232
- run : Start-Process -FilePath "$env:WINAPPDRIVER_EXE86_PATH"
195
+ Set-DisplayResolution -Width 1920 -Height 1080 -Force
196
+ Start-Process -FilePath "$env:WINAPPDRIVER_EXE86_PATH"
233
197
234
198
# Retry integration tests if first attempt fails
235
199
- name : Run interaction tests
@@ -247,23 +211,3 @@ jobs:
247
211
uses : geekyeggo/delete-artifact@v5
248
212
with :
249
213
name : ' *'
250
-
251
- # - name: Generate markdown from the tests result
252
- # shell: pwsh
253
- # run: |
254
- # . './scripts/Convert-TrxToMarkdown.ps1' `
255
- # -Source "$env:AUTOMATED_TESTS_ASSEMBLY_DIR\testResults.trx" `
256
- # -Destination "$env:AUTOMATED_TESTS_ASSEMBLY_DIR\testResults.md"
257
- # env:
258
- # PULL_REQUEST_ID: ${{ github.event.pull_request_id }}
259
-
260
- # - name: Display the markdown on the output (temp)
261
- # shell: pwsh
262
- # run: |
263
- # Get-Content $env:AUTOMATED_TESTS_ASSEMBLY_DIR\testResults.md
264
-
265
- # - name: Publish tests result
266
- # uses: marocchino/sticky-pull-request-comment@v2
267
- # with:
268
- # header: test-result
269
- # path: '${{ env.AUTOMATED_TESTS_ASSEMBLY_DIR }}\testResults.md'
0 commit comments