Skip to content

Commit 0649017

Browse files
authored
Update ci.yml
1 parent fb93fb7 commit 0649017

File tree

1 file changed

+56
-112
lines changed

1 file changed

+56
-112
lines changed

.github/workflows/ci.yml

Lines changed: 56 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
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.
93

104
name: Files CI
115

@@ -28,20 +22,20 @@ on:
2822
run-name: ${{ github.event_name == 'pull_request' && 'Files PR Validation' || 'Files CI Validation' }}
2923

3024
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'
3630
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'
4539

4640
jobs:
4741

@@ -93,7 +87,7 @@ jobs:
9387
platform: [x64, arm64]
9488
env:
9589
CONFIGURATION: ${{ matrix.configuration }}
96-
ARCHITECTURE: ${{ matrix.platform }}
90+
PLATFORM: ${{ matrix.platform }}
9791

9892
steps:
9993

@@ -108,75 +102,49 @@ jobs:
108102
with:
109103
global-json-file: global.json
110104

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
125106
name: Build Files
126107
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
141117
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
142132
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
171138
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
174142
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
177145
uses: actions/upload-artifact@v4
178146
with:
179-
name: 'Appx Packages (${{ env.CONFIGURATION }}, ${{ env.ARCHITECTURE }})'
147+
name: 'Appx Packages (${{ env.CONFIGURATION }}, ${{ env.PLATFORM }})'
180148
path: ${{ env.ARTIFACTS_STAGING_DIR }}
181149

182150
test:
@@ -192,6 +160,7 @@ jobs:
192160
platform: [x64]
193161
env:
194162
CONFIGURATION: ${{ matrix.configuration }}
163+
PLATFORM: ${{ matrix.platform }}
195164
permissions:
196165
contents: read
197166
pull-requests: write
@@ -212,24 +181,19 @@ jobs:
212181
- name: Download the packages from the Artifacts
213182
uses: actions/download-artifact@v4
214183
with:
215-
name: 'Appx Packages (${{ env.CONFIGURATION }}, ${{ env.AUTOMATED_TESTS_ARCHITECTURE }})'
184+
name: 'Appx Packages (${{ env.CONFIGURATION }}, ${{ env.PLATFORM }})'
216185
path: ${{ env.ARTIFACTS_STAGING_DIR }}
217186

218-
- name: Install Files
187+
- name: Prepare for the tests
219188
shell: powershell
220189
run: |
221190
Set-Location "$env:APPX_PACKAGE_DIR"
222191
$AppxPackageBundleDir = Get-ChildItem -Filter Files.Package_*_Test -Name
223192
Set-Location $AppxPackageBundleDir
224193
./Install.ps1 -Force
225194
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"
233197
234198
# Retry integration tests if first attempt fails
235199
- name: Run interaction tests
@@ -247,23 +211,3 @@ jobs:
247211
uses: geekyeggo/delete-artifact@v5
248212
with:
249213
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

Comments
 (0)