@@ -13,48 +13,63 @@ import { launcher } from "./launcher.js";
13
13
class Sanity {
14
14
15
15
async testAllFlavors ( commit : string ) : Promise < void > {
16
+ this . logWelcome ( ) ;
17
+
16
18
const quality = Quality . Stable ;
17
19
const runtime = Runtime . DesktopLocal ;
18
20
19
- const buildKinds : ( IBuild & { label : string } ) [ ] = [
20
- {
21
- commit, quality, runtime, flavor : Flavor . Default , label : ( ( ) => {
22
- switch ( platform ) {
23
- case Platform . MacOSArm :
24
- case Platform . MacOSX64 :
25
- return `macOS (${ arch } )` ;
26
- case Platform . LinuxArm :
27
- case Platform . LinuxX64 :
28
- return `Linux (${ arch } )` ;
29
- case Platform . WindowsArm :
30
- case Platform . WindowsX64 :
31
- return `Windows (${ arch } )` ;
21
+ const useDocker = await this . promptUserForDocker ( ) ;
22
+
23
+ let buildKinds : ( IBuild & { label : string } ) [ ] = [ ] ;
24
+ if ( useDocker ) {
25
+ buildKinds = [
26
+ { commit, quality, runtime, flavor : Flavor . CliLinuxAmd64 , label : 'Server & CLI (AMD64)' } ,
27
+ { commit, quality, runtime, flavor : Flavor . CliLinuxArm64 , label : 'Server & CLI (ARM64)' } ,
28
+ { commit, quality, runtime, flavor : Flavor . CliLinuxArmv7 , label : 'Server & CLI (ARMv7)' } ,
29
+ { commit, quality, runtime, flavor : Flavor . CliAlpineAmd64 , label : 'Server & CLI (Alpine AMD64)' } ,
30
+ { commit, quality, runtime, flavor : Flavor . CliAlpineArm64 , label : 'Server & CLI (Alpine ARM64)' } ,
31
+ ]
32
+ } else {
33
+ buildKinds = [
34
+ {
35
+ commit, quality, runtime, flavor : Flavor . Default , label : ( ( ) => {
36
+ switch ( platform ) {
37
+ case Platform . MacOSArm :
38
+ case Platform . MacOSX64 :
39
+ return `macOS (${ arch } )` ;
40
+ case Platform . LinuxArm :
41
+ case Platform . LinuxX64 :
42
+ return `Linux (${ arch } )` ;
43
+ case Platform . WindowsArm :
44
+ case Platform . WindowsX64 :
45
+ return `Windows (${ arch } )` ;
46
+ }
47
+ } ) ( )
48
+ } ,
49
+ ] ;
50
+
51
+ switch ( platform ) {
52
+ case Platform . MacOSArm :
53
+ case Platform . MacOSX64 :
54
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . DarwinUniversal , label : 'macOS (universal)' } ) ;
55
+ break ;
56
+ case Platform . LinuxArm :
57
+ case Platform . LinuxX64 :
58
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxDeb , label : `Linux (Debian)` } ) ;
59
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxRPM , label : `Linux (RPM)` } ) ;
60
+ if ( arch === Arch . X64 ) {
61
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxSnap , label : `Linux (Snap)` } ) ;
32
62
}
33
- } ) ( )
34
- } ,
35
- ] ;
36
- switch ( platform ) {
37
- case Platform . MacOSArm :
38
- case Platform . MacOSX64 :
39
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . DarwinUniversal , label : 'macOS (universal)' } ) ;
40
- break ;
41
- case Platform . LinuxArm :
42
- case Platform . LinuxX64 :
43
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxDeb , label : `Linux (Debian)` } ) ;
44
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxRPM , label : `Linux (RPM)` } ) ;
45
- if ( arch === Arch . X64 ) {
46
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . LinuxSnap , label : `Linux (Snap)` } ) ;
47
- }
48
- break ;
49
- case Platform . WindowsArm :
50
- case Platform . WindowsX64 :
51
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . WindowsUserInstaller , label : `Windows User Installer (${ arch } )` } ) ;
52
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . WindowsSystemInstaller , label : `Windows System Installer (${ arch } )` } ) ;
53
- break ;
54
- }
55
- buildKinds . push ( { commit, quality, runtime, flavor : Flavor . Cli , label : 'Server & CLI' } ) ;
63
+ break ;
64
+ case Platform . WindowsArm :
65
+ case Platform . WindowsX64 :
66
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . WindowsUserInstaller , label : `Windows User Installer (${ arch } )` } ) ;
67
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . WindowsSystemInstaller , label : `Windows System Installer (${ arch } )` } ) ;
68
+ break ;
69
+ }
56
70
57
- this . logWelcome ( ) ;
71
+ buildKinds . push ( { commit, quality, runtime, flavor : Flavor . Cli , label : 'Server & CLI' } ) ;
72
+ }
58
73
59
74
for ( let i = 0 ; i < buildKinds . length ; i ++ ) {
60
75
const build = buildKinds [ i ] ;
@@ -66,6 +81,22 @@ class Sanity {
66
81
}
67
82
}
68
83
84
+ private async promptUserForDocker ( ) {
85
+ const response = await prompts ( [
86
+ {
87
+ type : 'select' ,
88
+ name : 'useDocker' ,
89
+ message : 'Are you assigned to sanity test builds locally or the server/CLI via docker on all supported Linux architectures?' ,
90
+ choices : [
91
+ { title : 'Run builds locally' , value : false } ,
92
+ { title : 'Run server/CLI via Docker (must be running)' , value : true }
93
+ ]
94
+ }
95
+ ] ) ;
96
+
97
+ return response . useDocker ;
98
+ }
99
+
69
100
async tryBuild ( build : IBuild , options : { forceReDownload : boolean , label : string , isLast : boolean } ) : Promise < boolean /* continue */ > {
70
101
try {
71
102
const instance = await launcher . launch ( build , options ) ;
0 commit comments