Compare commits
872
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51a44a32e5 | ||
|
|
c8985638bc | ||
|
|
49a87ab9a3 | ||
|
|
a0b19fa01b | ||
|
|
e3ba729b37 | ||
|
|
6c768837be | ||
|
|
004bb48b9e | ||
|
|
5a263020f5 | ||
|
|
9b0a6c08c9 | ||
|
|
20d0451bdd | ||
|
|
6eccdcc56f | ||
|
|
6d5e92cd22 | ||
|
|
50bb5e8967 | ||
|
|
a63a87f6a0 | ||
|
|
ced65c7a3c | ||
|
|
153e15c52e | ||
|
|
a03f6d0ec3 | ||
|
|
f391328279 | ||
|
|
00f102b4cc | ||
|
|
1e3d72af6d | ||
|
|
aba30c31f0 | ||
|
|
b3342fe129 | ||
|
|
fc643c2fc8 | ||
|
|
a9d89fa563 | ||
|
|
75e2e796b8 | ||
|
|
ffd458e263 | ||
|
|
166ca4e9c2 | ||
|
|
6e8ddff8ff | ||
|
|
26b592de2b | ||
|
|
d22a5ec4c1 | ||
|
|
e6fd81684d | ||
|
|
183bef9022 | ||
|
|
53c3ba89fe | ||
|
|
6c6545011c | ||
|
|
2c013247b1 | ||
|
|
7a40bc62eb | ||
|
|
cb9e36698d | ||
|
|
b20550951d | ||
|
|
c0b1588684 | ||
|
|
fd9befaf96 | ||
|
|
c2ef078c78 | ||
|
|
187f9f5904 | ||
|
|
277110d088 | ||
|
|
5934916ad9 | ||
|
|
d0d851b2c2 | ||
|
|
67857a41a1 | ||
|
|
c27b1a395f | ||
|
|
56187189cf | ||
|
|
a56a1d3dc7 | ||
|
|
5cd2ef1b0a | ||
|
|
9b55b80556 | ||
|
|
d29e71f0c5 | ||
|
|
918263378c | ||
|
|
e96b8f37d5 | ||
|
|
ccbc0f9b26 | ||
|
|
d43ea5c42a | ||
|
|
5d604b9dc5 | ||
|
|
126e725070 | ||
|
|
23478d3106 | ||
|
|
445bbb0d61 | ||
|
|
6b5924aa06 | ||
|
|
a070c8516f | ||
|
|
06e844f299 | ||
|
|
2be7150808 | ||
|
|
07f291cacf | ||
|
|
0819844238 | ||
|
|
5a82897b98 | ||
|
|
84c4b32b94 | ||
|
|
b4c921107c | ||
|
|
909878ffc5 | ||
|
|
d3f705c429 | ||
|
|
adf6d83ab9 | ||
|
|
e74605cd6d | ||
|
|
c53958b30e | ||
|
|
10abbce9e6 | ||
|
|
32f3b67f86 | ||
|
|
bf6ac0db93 | ||
|
|
2d27578911 | ||
|
|
a29761eb60 | ||
|
|
2111b3e225 | ||
|
|
640581936d | ||
|
|
4d7c677f1c | ||
|
|
a8d59b2440 | ||
|
|
a531b96b21 | ||
|
|
ec00dd1a31 | ||
|
|
24b91c995e | ||
|
|
a1633b0193 | ||
|
|
02babd3573 | ||
|
|
422d7a028e | ||
|
|
e054e2bcdc | ||
|
|
fbbb9d7303 | ||
|
|
83a93373e6 | ||
|
|
1136c0f644 | ||
|
|
d4872d4c2e | ||
|
|
4c67970f91 | ||
|
|
f1bf50f507 | ||
|
|
e38398ad37 | ||
|
|
25f1053fed | ||
|
|
6a79f14748 | ||
|
|
fb37f140d8 | ||
|
|
7b927d9898 | ||
|
|
c6a4b16561 | ||
|
|
fc001c0493 | ||
|
|
949eeedc32 | ||
|
|
4a0b4ab1fb | ||
|
|
e2b01435e8 | ||
|
|
b03e99b0d2 | ||
|
|
0077a0756a | ||
|
|
0136427b07 | ||
|
|
954995809e | ||
|
|
fcc4cdb1d0 | ||
|
|
2997ec866b | ||
|
|
a177c07699 | ||
|
|
3fbcce7888 | ||
|
|
c152328e5a | ||
|
|
e065c9ac28 | ||
|
|
011a640c94 | ||
|
|
f08266d9d0 | ||
|
|
b3b23d5faa | ||
|
|
f3ad9cadef | ||
|
|
499aa8a821 | ||
|
|
c6ea5e3564 | ||
|
|
9b4274cda9 | ||
|
|
6becb4037c | ||
|
|
58e54334b0 | ||
|
|
dae0f77971 | ||
|
|
1838f0f3dc | ||
|
|
75f145b104 | ||
|
|
09ff567de6 | ||
|
|
7ca41de8b8 | ||
|
|
bd333c6236 | ||
|
|
dfca60f766 | ||
|
|
948c9e2df6 | ||
|
|
3e37de50ef | ||
|
|
2cb9b917c5 | ||
|
|
52279a9048 | ||
|
|
20de906028 | ||
|
|
1229dfcf19 | ||
|
|
2889cfe878 | ||
|
|
59b3801509 | ||
|
|
6d85c4873e | ||
|
|
7bf4ada29d | ||
|
|
768c456091 | ||
|
|
7256777a6b | ||
|
|
2e94c1de50 | ||
|
|
fdbe51d78c | ||
|
|
0a7abf330f | ||
|
|
f251d50781 | ||
|
|
22a8b4c4ac | ||
|
|
6fc0ca1a91 | ||
|
|
740ab068bc | ||
|
|
01d5873a78 | ||
|
|
bd90e1a113 | ||
|
|
e7648fd6a7 | ||
|
|
8726158fca | ||
|
|
2fea25d02d | ||
|
|
2661cfaa93 | ||
|
|
e3b97844e5 | ||
|
|
ce5aa1950d | ||
|
|
ae99c16b0c | ||
|
|
78796bc109 | ||
|
|
4d4477e04e | ||
|
|
907fcf388b | ||
|
|
a52bed1b1a | ||
|
|
6ba53090b0 | ||
|
|
541dd995c8 | ||
|
|
87d136e308 | ||
|
|
8a1eeaf6ac | ||
|
|
d1db39831d | ||
|
|
6e8c37cf52 | ||
|
|
8ffffdb49d | ||
|
|
3fbc297071 | ||
|
|
79c735b9fc | ||
|
|
8813e2b6e9 | ||
|
|
255206eaeb | ||
|
|
5809cd0f4d | ||
|
|
96520bb192 | ||
|
|
39297c5658 | ||
|
|
85fbeaef9b | ||
|
|
495fd51951 | ||
|
|
f4ba5c5cbc | ||
|
|
feebb05e11 | ||
|
|
8e0eb613ac | ||
|
|
29e053ac38 | ||
|
|
8bbd828014 | ||
|
|
fd6c45b8e8 | ||
|
|
5d31cfb3b9 | ||
|
|
75ba3f22d0 | ||
|
|
cd07f9077f | ||
|
|
370d12f1b6 | ||
|
|
ce2a3e8e67 | ||
|
|
71f35314bc | ||
|
|
ba7e034f05 | ||
|
|
6774220762 | ||
|
|
0d40609330 | ||
|
|
d805d2e921 | ||
|
|
a142edbae6 | ||
|
|
a68ad81fbe | ||
|
|
bfff5e5a70 | ||
|
|
5954f76a9b | ||
|
|
ea8a7a8f01 | ||
|
|
20fb902d6b | ||
|
|
255fffd021 | ||
|
|
d2f9756b6e | ||
|
|
46a8dee561 | ||
|
|
54e686be61 | ||
|
|
b60b7ab30f | ||
|
|
ff9acc6401 | ||
|
|
72f6dfe786 | ||
|
|
5e9605c7dc | ||
|
|
c7adf5d533 | ||
|
|
27738cad72 | ||
|
|
e01c839141 | ||
|
|
8cdc506384 | ||
|
|
74ebd60101 | ||
|
|
49d5ab6422 | ||
|
|
31e868eebe | ||
|
|
14915191c7 | ||
|
|
a1f7f1a10a | ||
|
|
2c7fe0021a | ||
|
|
2ff0f1047a | ||
|
|
2bb8be665c | ||
|
|
b0c4ef1a6b | ||
|
|
07e13e5cc9 | ||
|
|
24a8fbaf58 | ||
|
|
e85a3666bf | ||
|
|
3926b864c3 | ||
|
|
89f5712cad | ||
|
|
ab15087979 | ||
|
|
ff516bd145 | ||
|
|
12335f2cc4 | ||
|
|
d7c81d045c | ||
|
|
891c2ed95c | ||
|
|
16b7d80a46 | ||
|
|
c9fc7f734c | ||
|
|
0d632219e5 | ||
|
|
dda4a941d8 | ||
|
|
f778b762d5 | ||
|
|
90ada9b0c4 | ||
|
|
a27aca91e5 | ||
|
|
4e1b48a6c5 | ||
|
|
dd3eec7374 | ||
|
|
d33c9005cc | ||
|
|
23c98d86f0 | ||
|
|
e5de19ba15 | ||
|
|
d72a4523b1 | ||
|
|
439ecfcfdb | ||
|
|
12d52d247e | ||
|
|
f8049e323b | ||
|
|
5ab121d559 | ||
|
|
cba7c41716 | ||
|
|
564751b570 | ||
|
|
192b5bd8ad | ||
|
|
69f706a106 | ||
|
|
17a8ea14ac | ||
|
|
36cf63a735 | ||
|
|
0a285c2031 | ||
|
|
1eae5baec1 | ||
|
|
c634b8cd67 | ||
|
|
59a0b3727b | ||
|
|
4e6e715037 | ||
|
|
197b995b2d | ||
|
|
9bf0388ef2 | ||
|
|
b8153b8d01 | ||
|
|
db2a58f0e3 | ||
|
|
eec55f72c9 | ||
|
|
1388aca8a3 | ||
|
|
cebb2a1884 | ||
|
|
474b80c589 | ||
|
|
85fb533e05 | ||
|
|
cc117fb31b | ||
|
|
30802498d6 | ||
|
|
5e6cc3155d | ||
|
|
07692c0033 | ||
|
|
8795612730 | ||
|
|
22143c7c68 | ||
|
|
88cb1bef47 | ||
|
|
d485ae12fe | ||
|
|
e48c7949fd | ||
|
|
c49ee7347c | ||
|
|
7992e24b69 | ||
|
|
8aec741c90 | ||
|
|
3a24d66b9e | ||
|
|
551ccc0fb1 | ||
|
|
7665ed4ef9 | ||
|
|
c31eef93ac | ||
|
|
37e8b599ee | ||
|
|
f404404643 | ||
|
|
4b55f4683f | ||
|
|
3300770426 | ||
|
|
7636fd53b9 | ||
|
|
2a4bc14da4 | ||
|
|
0f88c4231d | ||
|
|
a54473db52 | ||
|
|
d935940e99 | ||
|
|
d46f62f273 | ||
|
|
9a08ad80ee | ||
|
|
e15a279ed8 | ||
|
|
869f895d83 | ||
|
|
051836e832 | ||
|
|
7fa790a939 | ||
|
|
e89c1a6d09 | ||
|
|
295e649465 | ||
|
|
da684ca6d2 | ||
|
|
582bbb9c15 | ||
|
|
137d0ed83d | ||
|
|
1850dfc713 | ||
|
|
c110803508 | ||
|
|
7a96efa872 | ||
|
|
3b1c7f3c1d | ||
|
|
325094ef86 | ||
|
|
f4cc7331d9 | ||
|
|
fcf7cd18d4 | ||
|
|
cbea23f931 | ||
|
|
c7276710b3 | ||
|
|
24a5edcdc8 | ||
|
|
e72f29bfc8 | ||
|
|
fbd6c33be3 | ||
|
|
a89507e2af | ||
|
|
cea9d0e0d1 | ||
|
|
abe90c1619 | ||
|
|
a74e63c6b1 | ||
|
|
d7ed5cb7b0 | ||
|
|
00959b266e | ||
|
|
36ab778536 | ||
|
|
e088ddba06 | ||
|
|
49f0b7160b | ||
|
|
e9e763c49f | ||
|
|
ab8dfc0eb3 | ||
|
|
27049a3aff | ||
|
|
23da668261 | ||
|
|
0478e791c7 | ||
|
|
aa5ca17eac | ||
|
|
b3cdd45273 | ||
|
|
b4b64341d6 | ||
|
|
8506dfcb6d | ||
|
|
9f23838ebe | ||
|
|
23541a17f0 | ||
|
|
11acc8af1b | ||
|
|
c2c7c501c8 | ||
|
|
380b0afd7e | ||
|
|
4ac220f584 | ||
|
|
eafe328b90 | ||
|
|
95c66e026c | ||
|
|
adead29f3f | ||
|
|
ba50a5b1ca | ||
|
|
fb0ca679f1 | ||
|
|
a58d7b932e | ||
|
|
284ffaacd7 | ||
|
|
0dbf1cb8a7 | ||
|
|
d8dce39e5f | ||
|
|
475cf36415 | ||
|
|
32fcc6a5f4 | ||
|
|
79ef2c9407 | ||
|
|
3dcb189d30 | ||
|
|
6f8e340c85 | ||
|
|
1b535372a0 | ||
|
|
0b21a6a13a | ||
|
|
06652839a7 | ||
|
|
e329995e52 | ||
|
|
bd17a26b42 | ||
|
|
960e86ba13 | ||
|
|
221efcbdc3 | ||
|
|
315fbf0fc8 | ||
|
|
8e6b0c0d6d | ||
|
|
567d4a0ea4 | ||
|
|
e81c4806fe | ||
|
|
b6bcbdc786 | ||
|
|
c5a9fa6ec5 | ||
|
|
ef57088246 | ||
|
|
bf3a13fe2a | ||
|
|
ce75d8dd91 | ||
|
|
ada0348ea2 | ||
|
|
7863994db8 | ||
|
|
4ac3f5b277 | ||
|
|
ebeb608ce1 | ||
|
|
a4c4b159f0 | ||
|
|
0ad636b824 | ||
|
|
af2f67d1ad | ||
|
|
0176ca6d78 | ||
|
|
5eda352fd4 | ||
|
|
5afe2ac2dc | ||
|
|
773246ccf7 | ||
|
|
734699ef61 | ||
|
|
ce0b29d20c | ||
|
|
ed7da973ff | ||
|
|
71142e7053 | ||
|
|
2927b0be95 | ||
|
|
e63e9ad701 | ||
|
|
d7a4be0267 | ||
|
|
d728101ace | ||
|
|
d31e0a18cb | ||
|
|
b268f563f6 | ||
|
|
62c1943b63 | ||
|
|
c5c9a7cd7b | ||
|
|
bcf346f13b | ||
|
|
2813ee66cb | ||
|
|
d31241d2c8 | ||
|
|
8c3d5d9d09 | ||
|
|
e7f54bfde8 | ||
|
|
d6a35ea98b | ||
|
|
b7a8e5ca52 | ||
|
|
3464b06c4c | ||
|
|
4edcdf297d | ||
|
|
d0b14aa29e | ||
|
|
89d72011e0 | ||
|
|
3793317199 | ||
|
|
e85f1e429d | ||
|
|
145c80df8d | ||
|
|
fb41178b75 | ||
|
|
ab07d6cc32 | ||
|
|
3e33d65ff9 | ||
|
|
e0fd3fea70 | ||
|
|
f610e46b01 | ||
|
|
e21232684f | ||
|
|
619f9fd372 | ||
|
|
42a61d742a | ||
|
|
65d62e1688 | ||
|
|
903f406ecb | ||
|
|
1bf1aea864 | ||
|
|
b5ee676e1d | ||
|
|
bb433ff031 | ||
|
|
2e3a8e1ccf | ||
|
|
870d08d9cb | ||
|
|
7271f004d4 | ||
|
|
71714d51d3 | ||
|
|
2a8403091c | ||
|
|
a615999e85 | ||
|
|
bbad000130 | ||
|
|
b3529d148e | ||
|
|
8549372c4c | ||
|
|
c27adcfdba | ||
|
|
45651fd866 | ||
|
|
28bc3aff6d | ||
|
|
7992e7f1ba | ||
|
|
3a10719283 | ||
|
|
52bcf848e5 | ||
|
|
5a99573420 | ||
|
|
c9f2293acc | ||
|
|
a9f4b4f480 | ||
|
|
25c57a1bbf | ||
|
|
293e955e3f | ||
|
|
9d5d1be482 | ||
|
|
785629d8d8 | ||
|
|
899fcf9b16 | ||
|
|
448c998191 | ||
|
|
0f916a843b | ||
|
|
4b94854902 | ||
|
|
c99c444ee9 | ||
|
|
24c7b7b9d8 | ||
|
|
903d127138 | ||
|
|
8476a08273 | ||
|
|
04166140e1 | ||
|
|
3c26757b41 | ||
|
|
ed92ac6e3f | ||
|
|
36549632ce | ||
|
|
562ad565fa | ||
|
|
3dcd2fa9b4 | ||
|
|
5c60b0c2af | ||
|
|
5113d251a8 | ||
|
|
ee7edb4f80 | ||
|
|
a9fed55df6 | ||
|
|
a38a062eee | ||
|
|
e2a8bbc6e1 | ||
|
|
8a1afc1fe1 | ||
|
|
845c5ee866 | ||
|
|
7cec68c4a6 | ||
|
|
ec4d691dad | ||
|
|
afb777d3f7 | ||
|
|
532cfd5c07 | ||
|
|
cccb82874c | ||
|
|
4abf97ab13 | ||
|
|
5ecfd27e8f | ||
|
|
e11ab1f9c6 | ||
|
|
4db7ac61ac | ||
|
|
6df3848fcd | ||
|
|
c9c09169e4 | ||
|
|
3edaf8a499 | ||
|
|
80ea4b55c0 | ||
|
|
cfcc1c6a1b | ||
|
|
b98d6e44fa | ||
|
|
9815039618 | ||
|
|
384f5acb62 | ||
|
|
7d377ee02b | ||
|
|
7172a7f1c5 | ||
|
|
4873b60b58 | ||
|
|
e5b505aba0 | ||
|
|
2a7b21b9ba | ||
|
|
bca20e6921 | ||
|
|
ab72240867 | ||
|
|
d279ef32ca | ||
|
|
dca8e74e47 | ||
|
|
530454b772 | ||
|
|
1a952817be | ||
|
|
6625f8ac5f | ||
|
|
441122013e | ||
|
|
5a54cdbbf1 | ||
|
|
eb6f6cc734 | ||
|
|
78ef24110a | ||
|
|
7772fec117 | ||
|
|
35be26d2a9 | ||
|
|
24a830de3c | ||
|
|
7781af869b | ||
|
|
584c7c0fef | ||
|
|
71da12569d | ||
|
|
fba89949a3 | ||
|
|
79f002fc2a | ||
|
|
7bb1d84f70 | ||
|
|
9e048184f9 | ||
|
|
6467c6dfc2 | ||
|
|
8778073702 | ||
|
|
c109ec4c0f | ||
|
|
18e4b97a5f | ||
|
|
3d2dd97aa7 | ||
|
|
54f59dcb98 | ||
|
|
e63a194563 | ||
|
|
c98eeb230d | ||
|
|
c7efc0685d | ||
|
|
cb3f1150db | ||
|
|
a420c2896e | ||
|
|
565a8e540a | ||
|
|
04c43a0f58 | ||
|
|
c5a4a6ff8c | ||
|
|
67a74919b4 | ||
|
|
771153c588 | ||
|
|
9356e95351 | ||
|
|
30f313be54 | ||
|
|
22940f4a86 | ||
|
|
a76eae469e | ||
|
|
3c3caaa5e9 | ||
|
|
753a5bbaf4 | ||
|
|
7fefd9f03c | ||
|
|
1a9753b738 | ||
|
|
5a21eb91dc | ||
|
|
0cd9c988c4 | ||
|
|
d0baa451b5 | ||
|
|
c8d9d73807 | ||
|
|
7861e423d5 | ||
|
|
8f8a09e01b | ||
|
|
b61fcf4040 | ||
|
|
7993ee5913 | ||
|
|
3b976c7acb | ||
|
|
2530c697b5 | ||
|
|
d8214c6eaa | ||
|
|
514d689e7c | ||
|
|
91e422a825 | ||
|
|
a0af039ba1 | ||
|
|
34c2a66db8 | ||
|
|
3c356d1227 | ||
|
|
616481d859 | ||
|
|
3afd153301 | ||
|
|
a659eb9650 | ||
|
|
27614dc1de | ||
|
|
0e742d93bf | ||
|
|
22d681c1e2 | ||
|
|
c5b46c5339 | ||
|
|
0bf0d5d4fb | ||
|
|
84c158e8b8 | ||
|
|
ac855491e1 | ||
|
|
00b6696f38 | ||
|
|
84dd663dac | ||
|
|
b9a57e0f4c | ||
|
|
996a7d36a7 | ||
|
|
9d4816708f | ||
|
|
cd4088d282 | ||
|
|
df41637c07 | ||
|
|
dafa292860 | ||
|
|
da5ebb3622 | ||
|
|
d9a35acaeb | ||
|
|
2fd9adccce | ||
|
|
41ad29f9c9 | ||
|
|
65e1bb9ff5 | ||
|
|
9ce28c1d12 | ||
|
|
f1bb9d76e3 | ||
|
|
9690ca4c70 | ||
|
|
98d2bcc93e | ||
|
|
22ff21d8bd | ||
|
|
e11c4abc89 | ||
|
|
07d23cf65f | ||
|
|
b3a91f7100 | ||
|
|
1efd43a2c9 | ||
|
|
f6950e8a95 | ||
|
|
4e42df172b | ||
|
|
9ee0335bca | ||
|
|
2259d75568 | ||
|
|
9882429fb5 | ||
|
|
a30db65b29 | ||
|
|
c0f1a024dc | ||
|
|
88b4de5d65 | ||
|
|
bb7b256a9b | ||
|
|
b3d50abbad | ||
|
|
65efa8ca2d | ||
|
|
243142386f | ||
|
|
4224f365e0 | ||
|
|
250c5145f6 | ||
|
|
f73cc2503f | ||
|
|
2eee3a2d6a | ||
|
|
9485052d98 | ||
|
|
ee03fb0bdf | ||
|
|
8f3745bf87 | ||
|
|
6751b1a8d6 | ||
|
|
d6d95ff728 | ||
|
|
d67fa31aee | ||
|
|
936416229a | ||
|
|
8b2c86662b | ||
|
|
074e246081 | ||
|
|
82a37d19fa | ||
|
|
c910aa42d0 | ||
|
|
aa58a23bf8 | ||
|
|
66c0961dc8 | ||
|
|
c8b2706126 | ||
|
|
e442ffab3a | ||
|
|
cb3fcb62b9 | ||
|
|
3d9bcaefb1 | ||
|
|
3d6eedc86d | ||
|
|
cde48c99e6 | ||
|
|
61df9288f9 | ||
|
|
8a42507a08 | ||
|
|
e32a4a56ec | ||
|
|
9d2d1a4c06 | ||
|
|
e27310f1e3 | ||
|
|
346a8b1a9d | ||
|
|
879626d9bd | ||
|
|
5b3748924e | ||
|
|
211da2488f | ||
|
|
248063da08 | ||
|
|
6c2dccad75 | ||
|
|
c6fa7ece2e | ||
|
|
81eb448ee0 | ||
|
|
208aa68b10 | ||
|
|
0a6a7e0869 | ||
|
|
49be543fef | ||
|
|
ae4a4a5262 | ||
|
|
a9200e9659 | ||
|
|
df722a3cf8 | ||
|
|
083e89fd95 | ||
|
|
2730b04222 | ||
|
|
adb51dcf33 | ||
|
|
d4e0d19512 | ||
|
|
39b838e8fd | ||
|
|
554135d9c6 | ||
|
|
4fb315d636 | ||
|
|
688fce6569 | ||
|
|
38928c989d | ||
|
|
c940226baf | ||
|
|
4f368bbc5d | ||
|
|
9813840059 | ||
|
|
395174881d | ||
|
|
ca82d0a325 | ||
|
|
deba4d6cd5 | ||
|
|
1812c0ce71 | ||
|
|
61a8703bd1 | ||
|
|
b9da7c8a76 | ||
|
|
b33a106fb9 | ||
|
|
8a4dc5b0f6 | ||
|
|
7535fb59ff | ||
|
|
0202f4b94c | ||
|
|
cda60174f7 | ||
|
|
e579fdb9e6 | ||
|
|
13d5100df5 | ||
|
|
d84718d23e | ||
|
|
0390d98adc | ||
|
|
e844facbb9 | ||
|
|
fb980e9751 | ||
|
|
04da57c694 | ||
|
|
68d16ce43c | ||
|
|
213dba8dd6 | ||
|
|
bd5782ca77 | ||
|
|
0b5f4562aa | ||
|
|
b99ee7f44e | ||
|
|
3151c92d25 | ||
|
|
5d5f63b19a | ||
|
|
82095c6197 | ||
|
|
33261492c5 | ||
|
|
3387580469 | ||
|
|
b8d3d784e4 | ||
|
|
a8d9540421 | ||
|
|
be3dd8b0dd | ||
|
|
ee179c70f2 | ||
|
|
03c4d84bba | ||
|
|
36b3a6c458 | ||
|
|
5a9870800d | ||
|
|
218c157acc | ||
|
|
9547a10a19 | ||
|
|
6f1fa8953f | ||
|
|
37a171e44d | ||
|
|
5418817c5f | ||
|
|
2d19e2799a | ||
|
|
52777b1081 | ||
|
|
14e41b1b5b | ||
|
|
3243ea36ef | ||
|
|
6308849b25 | ||
|
|
8f1339b65b | ||
|
|
47e2999afb | ||
|
|
74ed9d7d83 | ||
|
|
83c984cdd9 | ||
|
|
17b9f1e582 | ||
|
|
237618d14f | ||
|
|
8d5da63ac4 | ||
|
|
0b56eac4f1 | ||
|
|
022efa3751 | ||
|
|
96659c7d44 | ||
|
|
07fa737c4c | ||
|
|
4637c23381 | ||
|
|
a9c5653066 | ||
|
|
a6643f8ce6 | ||
|
|
807eb76cfc | ||
|
|
ba3718b5d8 | ||
|
|
d622d2bc2e | ||
|
|
cbc79f8a0c | ||
|
|
097e28c9d7 | ||
|
|
17d89dbd74 | ||
|
|
299257c4bc | ||
|
|
9eea2470fb | ||
|
|
55a6d9d687 | ||
|
|
6c52c5a744 | ||
|
|
10cbb27509 | ||
|
|
8943e98be1 | ||
|
|
76ad0eb3d6 | ||
|
|
192a94d178 | ||
|
|
f046bcaec3 | ||
|
|
c40e9d7d53 | ||
|
|
4d310f0a59 | ||
|
|
5ee9ae1e60 | ||
|
|
ba2e955e0b | ||
|
|
2a7ca2e6a2 | ||
|
|
ebef5f5fee | ||
|
|
cb77fa2a64 | ||
|
|
b3ae9702f7 | ||
|
|
b6b0130a7d | ||
|
|
b56952d51e | ||
|
|
17d0f979ab | ||
|
|
b4635a0ab9 | ||
|
|
d5d2dd7704 | ||
|
|
a89e382279 | ||
|
|
10ddf030ed | ||
|
|
4d5381bd21 | ||
|
|
c40faf56bf | ||
|
|
ec4e51233f | ||
|
|
5a6e215859 | ||
|
|
5bdda2e8c2 | ||
|
|
4b8f0f965c | ||
|
|
4960fde8f7 | ||
|
|
9da2ec6b06 | ||
|
|
83fbf5a752 | ||
|
|
f36abbb92b | ||
|
|
a9b737bac5 | ||
|
|
20d2e9821f | ||
|
|
266f9413d3 | ||
|
|
1658c2e905 | ||
|
|
e16b5524ff | ||
|
|
34b6b3172f | ||
|
|
e9057a22fc | ||
|
|
62aeae3a20 | ||
|
|
62a46d0fd8 | ||
|
|
503ae89818 | ||
|
|
d16bc5f120 | ||
|
|
694536d87f | ||
|
|
08d10be70d | ||
|
|
50c8126f76 | ||
|
|
c46c9c7f7d | ||
|
|
e969572ffb | ||
|
|
ed3d2204db | ||
|
|
43e3d8bfc6 | ||
|
|
dec20a5272 | ||
|
|
087fb382a8 | ||
|
|
6b0f6eb184 | ||
|
|
28be760bba | ||
|
|
522c8fb680 | ||
|
|
045b46c8c1 | ||
|
|
0298168e00 | ||
|
|
1f11cd7e17 | ||
|
|
50f736491f | ||
|
|
5d6e226c1d | ||
|
|
7fe17c7614 | ||
|
|
1cb43238b5 | ||
|
|
2633fdfcc4 | ||
|
|
5e4039478f | ||
|
|
9e49d08492 | ||
|
|
62536f12ed | ||
|
|
eed37c2c66 | ||
|
|
cd286f70f7 | ||
|
|
1921245719 | ||
|
|
3945d6e7dc | ||
|
|
dbb10c67ba | ||
|
|
2179765026 | ||
|
|
d631f76f8b | ||
|
|
e6a69f4bd1 | ||
|
|
9f3cf00bb3 | ||
|
|
3f2b0e2afc | ||
|
|
a5519ebed0 | ||
|
|
ea64263b41 | ||
|
|
126c302e7a | ||
|
|
63f2cea173 | ||
|
|
7fe65a2204 | ||
|
|
76d6f0f574 | ||
|
|
0e46595f81 | ||
|
|
f28573731f | ||
|
|
62fab6e78a | ||
|
|
4d88245a29 | ||
|
|
d4f6993ac9 | ||
|
|
6130ddb3c3 | ||
|
|
3494b8c8b1 | ||
|
|
83c87d632c | ||
|
|
e11b878116 | ||
|
|
8437ff3990 | ||
|
|
0ade9f36d3 | ||
|
|
a9bc069a35 | ||
|
|
b0fc01efc6 | ||
|
|
5bd6a16cab | ||
|
|
3a0da34c48 | ||
|
|
e108764509 | ||
|
|
69db5c6c63 | ||
|
|
ff1dc02cbc | ||
|
|
5ed2615017 | ||
|
|
ed911223ab | ||
|
|
3a6122bbaf | ||
|
|
458529a1c6 | ||
|
|
2549aed0ee | ||
|
|
ae6af1b8db | ||
|
|
d919a375b3 | ||
|
|
d86c4900fa | ||
|
|
eb0e4ff100 | ||
|
|
45a5b970b8 | ||
|
|
5f5ab19246 | ||
|
|
bf202afb1e | ||
|
|
0c03739e50 | ||
|
|
92e22bd8c6 | ||
|
|
abb81511d4 | ||
|
|
7dba8776df | ||
|
|
bfe32a2b12 | ||
|
|
c73276d3f6 | ||
|
|
d2cbbb901b | ||
|
|
435ba67550 | ||
|
|
da1c04b81a | ||
|
|
e8f9c10965 | ||
|
|
c0ce57ffc8 | ||
|
|
408bab6939 | ||
|
|
5e82420a74 | ||
|
|
e1e621e78c | ||
|
|
12066050d0 | ||
|
|
9492109c62 | ||
|
|
79c347765a | ||
|
|
6efbc46fc7 | ||
|
|
64d5d2c1f4 | ||
|
|
1254bc94a5 | ||
|
|
1bd9214f41 | ||
|
|
410fd620be | ||
|
|
d3e630f774 | ||
|
|
46f21c4413 | ||
|
|
222b798483 | ||
|
|
b6046999b6 | ||
|
|
a8f17e0207 | ||
|
|
eb6e81b8f2 | ||
|
|
092513ca05 | ||
|
|
3875f479ac | ||
|
|
d7c36f2257 | ||
|
|
66991d2b2c | ||
|
|
50625a842a | ||
|
|
3977803d81 | ||
|
|
3275edff48 | ||
|
|
b3ddd57d49 | ||
|
|
d5c955dfc7 | ||
|
|
9c8a4aea90 | ||
|
|
8bb825ba13 | ||
|
|
436da67f4b | ||
|
|
50ae10289a | ||
|
|
07e8da79f8 | ||
|
|
045a0de8e2 | ||
|
|
3bbc0dc753 | ||
|
|
164eb6cdc2 | ||
|
|
cd2cabc7ab |
@@ -38,9 +38,14 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- label: Ubuntu 22.04
|
||||
- label: macOS 11
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
@@ -49,4 +54,3 @@ body:
|
||||
description: Steps or options for impact mitigation
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
@@ -21,9 +21,14 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- label: Ubuntu 22.04
|
||||
- label: macOS 11
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
|
||||
@@ -59,9 +59,14 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- label: Ubuntu 22.04
|
||||
- label: macOS 11
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
@@ -76,4 +81,4 @@ body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Are you willing to submit a PR?
|
||||
description: We accept contributions!
|
||||
description: We accept contributions!
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
run-name: Cleanup ${{ github.head_ref }}
|
||||
on:
|
||||
pull_request_target:
|
||||
types: labeled
|
||||
paths:
|
||||
- 'images/**'
|
||||
|
||||
jobs:
|
||||
clean_ci:
|
||||
name: Clean CI runs
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
steps:
|
||||
- env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
shell: pwsh
|
||||
run: |
|
||||
$startDate = Get-Date -UFormat %s
|
||||
$workflows = @("macos11", "macos12", "ubuntu2004", "ubuntu2204", "windows2019", "windows2022")
|
||||
while ($true) {
|
||||
$continue = $false
|
||||
foreach ($wf in $workflows) {
|
||||
$skippedCommand = "gh run list --workflow ${wf}.yml --branch ${{ github.event.pull_request.head.ref }} --repo ${{ github.repository }} --status skipped --json databaseId"
|
||||
$skippedIds = Invoke-Expression -Command $skippedCommand | ConvertFrom-Json | ForEach-Object { $_.databaseId }
|
||||
$skippedIds | ForEach-Object {
|
||||
$deleteCommand = "gh run delete --repo ${{ github.repository }} $_"
|
||||
Invoke-Expression -Command $deleteCommand
|
||||
}
|
||||
$pendingCommand = "gh run list --workflow ${wf}.yml --branch ${{ github.event.pull_request.head.ref }} --repo ${{ github.repository }} --status requested --json databaseId --template '{{ . | len }}'"
|
||||
$pending = Invoke-Expression -Command $pendingCommand
|
||||
if ($pending -gt 0) {
|
||||
Write-Host "Pending for ${wf}.yml: $pending run(s)"
|
||||
$continue = $true
|
||||
}
|
||||
}
|
||||
if ($continue -eq $false) {
|
||||
Write-Host "All done, exiting"
|
||||
break
|
||||
}
|
||||
$curDate = Get-Date -UFormat %s
|
||||
if (($curDate - $startDate) -gt 60) {
|
||||
Write-Host "Reached timeout, exiting"
|
||||
break
|
||||
}
|
||||
Write-Host "Waiting 5 seconds..."
|
||||
Start-Sleep -Seconds 5
|
||||
}
|
||||
@@ -40,11 +40,11 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -69,4 +69,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
||||
@@ -10,15 +10,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Create release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
uses: actions/create-release@v1.1.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
uses: ncipollo/release-action@v1.14.0
|
||||
with:
|
||||
tag_name: ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
release_name: ${{ github.event.client_payload.ReleaseTitle }}
|
||||
tag: ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
name: ${{ github.event.client_payload.ReleaseTitle }}
|
||||
body: ${{ github.event.client_payload.ReleaseBody }}
|
||||
prerelease: ${{ github.event.client_payload.Prerelease }}
|
||||
commitish: ${{ github.event.client_payload.Commitish }}
|
||||
commit: ${{ github.event.client_payload.Commitish }}
|
||||
|
||||
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -22,11 +22,11 @@ jobs:
|
||||
|
||||
- name: Create pull request for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
id: create-pr
|
||||
uses: actions/github-script@v2
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
let response = await github.pulls.create({
|
||||
let response = await github.rest.pulls.create({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
title: "${{ github.event.client_payload.PullRequestTitle }}",
|
||||
@@ -37,11 +37,11 @@ jobs:
|
||||
return response.data.number
|
||||
|
||||
- name: Request reviewers
|
||||
uses: actions/github-script@v2
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.PRAPPROVAL_SECRET}}
|
||||
script: |
|
||||
github.pulls.requestReviewers({
|
||||
github.rest.pulls.requestReviewers({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: ${{ steps.create-pr.outputs.result }},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Create and upload a SBOM to release assets
|
||||
name: Create SBOM for the release
|
||||
# Inherited variables:
|
||||
# github.event.client_payload.agentSpec - Current YAML Label
|
||||
# github.event.client_payload.ReleaseID - Current release ID
|
||||
@@ -7,6 +7,7 @@ name: Create and upload a SBOM to release assets
|
||||
#
|
||||
# Current SYFT tool issues:
|
||||
# macOS (major): prompt privilegies that blocking process indefinetely (https://github.com/anchore/syft/issues/1367)
|
||||
run-name: Collecting SBOM for ${{ github.event.client_payload.ReleaseBranchName || 'unknown release' }}
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [generate-sbom]
|
||||
@@ -14,8 +15,35 @@ defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
jobs:
|
||||
#Checking image version on available runner
|
||||
version-check:
|
||||
#Checking current release for SBOM
|
||||
sbom-check:
|
||||
outputs:
|
||||
check_status: ${{ steps.check.outputs.status }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
id: check
|
||||
shell: pwsh
|
||||
run: |
|
||||
$apiUrl = "https://api.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}"
|
||||
$response = Invoke-RestMethod -Uri $apiUrl -Method Get -SkipHttpErrorCheck
|
||||
if ($response.message -ilike "Not Found") {
|
||||
echo "status=release_not_found" >> $env:GITHUB_OUTPUT
|
||||
Write-Error "Release ${{ github.event.client_payload.ReleaseID }} wasn't found"
|
||||
exit 1
|
||||
}
|
||||
foreach ($asset in $response.assets) {
|
||||
if ($asset.name -like '*sbom*') {
|
||||
echo "status=sbom_exists" >> $env:GITHUB_OUTPUT
|
||||
return "Release ${{ github.event.client_payload.ReleaseID }} already contains a SBOM"
|
||||
}
|
||||
}
|
||||
Write-Host "Release has been found, SBOM is not attached, starting generation."
|
||||
echo "status=okay" >> $env:GITHUB_OUTPUT
|
||||
#Generating SBOM
|
||||
building-sbom:
|
||||
needs: sbom-check
|
||||
if: ${{ needs.sbom-check.outputs.check_status == 'okay' }}
|
||||
runs-on: ${{ github.event.client_payload.agentSpec }}
|
||||
steps:
|
||||
- name: Available image version check for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
@@ -26,15 +54,9 @@ jobs:
|
||||
if ("$imageMajorVersion.$imageMinorVersion" -ne '${{ github.event.client_payload.imageVersion }}') {
|
||||
throw "Current runner $imageMajorVersion.$imageMinorVersion image version doesn't match ${{ github.event.client_payload.imageVersion }}."
|
||||
}
|
||||
#Install and run SYFT, compress SBOM, upload it to release assets
|
||||
create-sbom:
|
||||
needs: version-check
|
||||
runs-on: ${{ github.event.client_payload.agentSpec }}
|
||||
steps:
|
||||
#Installation section
|
||||
- name: Install SYFT tool on Windows
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b D:/syft v0.84.1
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b D:/syft
|
||||
- name: Install SYFT tool on Ubuntu or macOS
|
||||
if: ${{ runner.os != 'Windows' }}
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
|
||||
@@ -53,7 +75,7 @@ jobs:
|
||||
- name: Compress SBOM file
|
||||
run: Compress-Archive sbom.json sbom.json.zip
|
||||
#Upload artifact action
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: sbom-${{ github.event.client_payload.agentSpec }}-${{ github.event.client_payload.imageVersion }}
|
||||
path: sbom.json.zip
|
||||
@@ -68,4 +90,4 @@ jobs:
|
||||
upload_url: "https://uploads.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}/assets{?name,label}"
|
||||
asset_path: ./sbom.json.zip
|
||||
asset_name: sbom.${{ github.event.client_payload.agentSpec }}.json.zip
|
||||
asset_content_type: application/zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -24,11 +24,11 @@ jobs:
|
||||
sleep 30
|
||||
|
||||
- name: Approve pull request by GitHub-Actions bot
|
||||
uses: actions/github-script@v2
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.PRAPPROVAL_SECRET}}
|
||||
script: |
|
||||
github.pulls.createReview({
|
||||
github.rest.pulls.createReview({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: ${{ github.event.client_payload.PullRequestNumber }},
|
||||
@@ -36,11 +36,11 @@ jobs:
|
||||
});
|
||||
|
||||
- name: Merge pull request for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
uses: actions/github-script@v2
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
github.pulls.merge({
|
||||
github.rest.pulls.merge({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: ${{ github.event.client_payload.PullRequestNumber }},
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run Software Report module tests
|
||||
shell: pwsh
|
||||
|
||||
@@ -13,7 +13,7 @@ defaults:
|
||||
|
||||
jobs:
|
||||
Ubuntu_2004:
|
||||
if: contains(github.event.pull_request.labels.*.name, 'CI ubuntu-all') || contains(github.event.pull_request.labels.*.name, 'CI ubuntu-2004')
|
||||
if: github.event.label.name == 'CI ubuntu-all' || github.event.label.name == 'CI ubuntu-2004'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'ubuntu2004'
|
||||
|
||||
@@ -13,7 +13,7 @@ defaults:
|
||||
|
||||
jobs:
|
||||
Ubuntu_2204:
|
||||
if: contains(github.event.pull_request.labels.*.name, 'CI ubuntu-all') || contains(github.event.pull_request.labels.*.name, 'CI ubuntu-2204')
|
||||
if: github.event.label.name == 'CI ubuntu-all' || github.event.label.name == 'CI ubuntu-2204'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'ubuntu2204'
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Trigger Ubuntu24.04 CI
|
||||
run-name: Ubuntu24.04 - ${{ github.event.pull_request.title }}
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: labeled
|
||||
paths:
|
||||
- 'images/ubuntu/**'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Ubuntu_2404:
|
||||
if: github.event.label.name == 'CI ubuntu-all' || github.event.label.name == 'CI ubuntu-2404'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'ubuntu2404'
|
||||
secrets: inherit
|
||||
@@ -10,19 +10,19 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Update release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
uses: actions/github-script@v2
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const response = await github.repos.getReleaseByTag({
|
||||
const response = await github.rest.repos.getReleaseByTag({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
tag: "${{ github.event.client_payload.ReleaseBranchName }}"
|
||||
});
|
||||
github.repos.updateRelease({
|
||||
github.rest.repos.updateRelease({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
release_id: response.data.id,
|
||||
|
||||
@@ -13,7 +13,7 @@ defaults:
|
||||
|
||||
jobs:
|
||||
Windows_2019:
|
||||
if: contains(github.event.pull_request.labels.*.name, 'CI windows-all') || contains(github.event.pull_request.labels.*.name, 'CI windows-2019')
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2019'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'windows2019'
|
||||
|
||||
@@ -13,7 +13,7 @@ defaults:
|
||||
|
||||
jobs:
|
||||
Windows_2022:
|
||||
if: contains(github.event.pull_request.labels.*.name, 'CI windows-all') || contains(github.event.pull_request.labels.*.name, 'CI windows-2022')
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2022'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'windows2022'
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Trigger Windows25 CI
|
||||
run-name: Windows2025 - ${{ github.event.pull_request.title }}
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: labeled
|
||||
paths:
|
||||
- 'images/windows/**'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Windows_2022:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2025'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'windows2025'
|
||||
secrets: inherit
|
||||
+27
-27
@@ -6,17 +6,17 @@
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
|
||||
|
||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [MIT](LICENSE.md).
|
||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [MIT](LICENSE.md) license.
|
||||
|
||||
Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms.
|
||||
Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project, you agree to abide by its terms.
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
1. [Fork][fork] and clone the repository
|
||||
1. Create a new branch: `git checkout -b my-branch-name`
|
||||
1. Make your changes, ensure that they include steps to install, validate post-install and update software report (please see [How to add new tool](CONTRIBUTING.md#how-to-add-new-tool) for details).
|
||||
1. Test your changes by [creating image and deploying a VM](docs/create-image-and-azure-resources.md).
|
||||
1. Push to your fork and [submit a pull request][pr]
|
||||
1. [Fork][fork] and clone the repository.
|
||||
1. Create a new branch: `git checkout -b my-branch-name`.
|
||||
1. Make your changes, ensuring that they include steps to install, validate post-install, and update the software report (please see [How to add a new tool](CONTRIBUTING.md#how-to-add-a-new-tool) for details).
|
||||
1. Test your changes by [creating an image and deploying a VM](docs/create-image-and-azure-resources.md).
|
||||
1. Push to your fork and [submit a pull request][pr].
|
||||
|
||||
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
|
||||
|
||||
@@ -25,40 +25,40 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
|
||||
- Write [good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
||||
- For new tools:
|
||||
- Make sure that the tool satisfies [Software Guidelines](README.md#software-guidelines).
|
||||
- Create an issue and get an approval from us to add this tool to the image before creating the pull request.
|
||||
- Make sure that the tool satisfies the [Software Guidelines](README.md#software-guidelines).
|
||||
- Create an issue and get approval from us to add this tool to the image before creating the pull request.
|
||||
|
||||
## How to add new tool
|
||||
## How to add a new tool
|
||||
|
||||
### General rules
|
||||
|
||||
- For every new tool add validation scripts and update software report script to make sure that it is included to documentation
|
||||
- If the tool is available in other platforms (macOS, Windows, Linux), make sure you include it in as many as possible.
|
||||
- If installing a few versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. It will help other customers to configure their builds flexibly. See [toolset-windows-2019.json](images/windows/toolsets/toolset-2019.json) as example.
|
||||
- Use consistent naming across all files
|
||||
- Validation scripts should be simple and shouldn't change image content
|
||||
- For every new tool, add validation scripts and update the software report script to ensure that it is included in the documentation.
|
||||
- If the tool is available on multiple platforms (macOS, Windows, Linux), make sure you include it on as many as possible.
|
||||
- If installing multiple versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. This will help other customers configure their builds flexibly. See [toolset-windows-2019.json](images/windows/toolsets/toolset-2019.json) as an example.
|
||||
- Use consistent naming across all files.
|
||||
- Validation scripts should be simple and shouldn't change the image content.
|
||||
|
||||
### Windows
|
||||
|
||||
- Add a script that will install the tool and put the script in the `scripts/build` folder.
|
||||
There are a bunch of helper functions that could simplify your code: `Choco-Install`, `Install-Binary`, `Install-VsixExtension`, `Start-DownloadWithRetry`, `Test-IsWin19`, `Test-IsWin22` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
- Add a script that will validate the tool installation and put the script in the `scripts/tests` folder.
|
||||
We use [Pester v5](https://github.com/pester/pester) for validation scripts. If the tests for the tool are complex enough, create a separate `*.Tests.ps1`. Otherwise, use `Tools.Tests.ps1` for simple tests.
|
||||
Add `Invoke-PesterTests -TestFile <testFileName> [-TestName <describeName>]` at the end of the installation script to make sure that your tests will be run.
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/SoftwareReport.Generator.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2019-Readme.md](images/windows/Windows2019-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
- Add a script that will install the tool and put the script in the `scripts/build` folder.
|
||||
There are a bunch of helper functions that could simplify your code: `Install-ChocoPackage`, `Install-Binary`, `Install-VSIXFromFile`, `Install-VSIXFromUrl`, `Invoke-DownloadWithRetry`, `Test-IsWin19`, `Test-IsWin22` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
- Add a script that will validate the tool installation and put the script in the `scripts/tests` folder.
|
||||
We use [Pester v5](https://github.com/pester/pester) for validation scripts. If the tests for the tool are complex enough, create a separate `*.Tests.ps1`. Otherwise, use `Tools.Tests.ps1` for simple tests.
|
||||
Add `Invoke-PesterTests -TestFile <testFileName> [-TestName <describeName>]` at the end of the installation script to ensure that your tests will be run.
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2019-Readme.md](images/windows/Windows2019-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
|
||||
### Ubuntu
|
||||
|
||||
- Add script that will install and validate the tool and put the script in the `scripts/build` folder.
|
||||
- Add a script that will install and validate the tool and put the script in the `scripts/build` folder.
|
||||
Use existing scripts such as [github-cli.sh](images/ubuntu/scripts/build/github-cli.sh) as a starting point.
|
||||
- Use [helpers](images/ubuntu/scripts/helpers/install.sh) to simplify installation process.
|
||||
- Validation part should `exit 1` if any issue with installation.
|
||||
- Add changes to the software report generator `images/ubuntu/scripts/docs-gen/SoftwareReport.Generator.ps1`. The software report generator is used to generate an image's README file, e.g. [Ubuntu2004-Readme.md](images/ubuntu/Ubuntu2004-README.md) and it uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
- Use [helpers](images/ubuntu/scripts/helpers/install.sh) to simplify the installation process.
|
||||
- The validation part should `exit 1` if there is any issue with the installation.
|
||||
- Add changes to the software report generator `images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Ubuntu2004-Readme.md](images/ubuntu/Ubuntu2004-README.md) and it uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
|
||||
### macOS
|
||||
|
||||
macOS source lives in this repository and available for everyone. However, macOS image-generation CI doesn't support external contributions yet so we are not able to accept pull-requests for now.
|
||||
We are in the process of preparing macOS CI to accept contributions. Until then, we appreciate your patience and ask you continue to make tool requests by filing issues.
|
||||
The macOS source lives in this repository and is available for everyone. However, the macOS image-generation CI doesn't support external contributions yet, so we are not able to accept pull requests for now.
|
||||
We are in the process of preparing the macOS CI to accept contributions. Until then, we appreciate your patience and ask that you continue to make tool requests by filing issues.
|
||||
|
||||
## Resources
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 GitHub
|
||||
Copyright (c) 2024 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -19,28 +19,38 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | YAML Label | Included Software | Rollout Progress of Latest Image Release |
|
||||
| --------------------|---------------------|--------------------|---------------------|
|
||||
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | [ubuntu-22.04] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=ubuntu22&redirect=1)
|
||||
| Ubuntu 20.04 | `ubuntu-20.04` | [ubuntu-20.04] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=ubuntu20&redirect=1)
|
||||
| macOS 13 [beta] | `macos-13` or `macos-13-xl`| [macOS-13] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-13&redirect=1)
|
||||
| macOS 12 | `macos-latest`, `macos-latest-xl`, `macos-12`, or `macos-12-xl`| [macOS-12] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-12&redirect=1)
|
||||
| macOS 11 | `macos-11`| [macOS-11] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-11&redirect=1)
|
||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=windows-2022&redirect=1) |
|
||||
| Windows Server 2019 | `windows-2019` | [windows-2019] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=windows-2019&redirect=1)
|
||||
| Image | YAML Label | Included Software | Rollout Status of Latest Image Release |
|
||||
| --------------------|---------------------|--------------------|--------------------|
|
||||
| Ubuntu 24.04 | `ubuntu-24.04` | [ubuntu-24.04] |  |
|
||||
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | [ubuntu-22.04] |  |
|
||||
| Ubuntu 20.04 | `ubuntu-20.04` | [ubuntu-20.04] |  |
|
||||
| macOS 15 <sup>beta</sup> | `macos-15-large`| [macOS-15] |  |
|
||||
| macOS 15 Arm64 <sup>beta</sup> | `macos-15` or `macos-15-xlarge` | [macOS-15-arm64] |  |
|
||||
| macOS 14 | `macos-latest-large` or `macos-14-large`| [macOS-14] |  |
|
||||
| macOS 14 Arm64 |`macos-latest`, `macos-14`, `macos-latest-xlarge` or `macos-14-xlarge`| [macOS-14-arm64] |  |
|
||||
| macOS 13 | `macos-13` or `macos-13-large` | [macOS-13] |  |
|
||||
| macOS 13 Arm64 | `macos-13-xlarge` | [macOS-13-arm64] |  |
|
||||
| macOS 12 <sup>deprecated</sup> | `macos-12` or `macos-12-large`| [macOS-12] |  |
|
||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] |  |
|
||||
| Windows Server 2019 | `windows-2019` | [windows-2019] |  |
|
||||
|
||||
### Label scheme
|
||||
|
||||
- In general the `-latest` label is used for the latest OS image version that is GA
|
||||
- Before moving the`-latest` label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows
|
||||
|
||||
[ubuntu-24.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
|
||||
[ubuntu-22.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md
|
||||
[ubuntu-20.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2004-Readme.md
|
||||
[windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
|
||||
[windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md
|
||||
[macOS-11]: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md
|
||||
[macOS-12]: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
|
||||
[macOS-13]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
|
||||
[macOS-13-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md
|
||||
[macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
|
||||
[macOS-14-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
|
||||
[macOS-15]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
||||
[macOS-15-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md
|
||||
[self-hosted runners]: https://help.github.com/en/actions/hosting-your-own-runners
|
||||
|
||||
## Announcements
|
||||
@@ -73,8 +83,7 @@ latest 2 versions of an OS.
|
||||
GitHub Actions and Azure DevOps use the `-latest` YAML label (ex: `ubuntu-latest`, `windows-latest`, and `macos-latest`). These labels point towards the newest stable OS version available.
|
||||
|
||||
|
||||
The `-latest` migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the `-latest` label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-12, windows-2022, ubuntu-22.04).
|
||||
|
||||
The `-latest` migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the `-latest` label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
|
||||
|
||||
## Image Releases
|
||||
|
||||
@@ -113,7 +122,7 @@ The `-latest` migration process is gradual and happens over 1-2 months in order
|
||||
| .NET Core | 2 latest LTS versions and 1 latest version. For each feature version only latest patch is installed |
|
||||
| GCC <br/> GNU Fortran <br/> Clang <br/> GNU C++ | 3 latest major versions |
|
||||
| Android NDK | 1 latest non-LTS, 2 latest LTS versions |
|
||||
| Xcode | - all OS compatible versions side-by-side <br/> - for beta, GM versions - latest beta only <br/> - old patch versions are deprecated in 3 months |
|
||||
| Xcode | - only one major version of Xcode will be supported per macOS version <br/> - all minor versions of the supported major version will be available <br/> - beta and RC versions will be provided "as-is" in the latest available macOS image only no matter of beta/GA status of the image <br/> - when a new patch version is released, the previous patch version will be replaced |
|
||||
|
||||
### Package managers usage
|
||||
|
||||
@@ -122,7 +131,7 @@ We use third-party package managers to install software during the image generat
|
||||
|
||||
| Operating system | Package manager | Third-party repos and packages |
|
||||
| :--- | :---: | ---: |
|
||||
| Ubuntu | [APT](https://wiki.debian.org/Apt) | [containers](https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable) (Ubuntu 20 only) <br/> [docker](https://download.docker.com/linux/ubuntu) <br/> [Eclipse-Temurin (Adoptium)](https://packages.adoptium.net/artifactory/deb/) <br/> [Erlang](https://packages.erlang-solutions.com/ubuntu) <br/> [Firefox](http://ppa.launchpad.net/mozillateam/ppa/ubuntu) <br/> [gcc, gfortran](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test) <br/> [git-lfs](https://packagecloud.io/install/repositories/github/git-lfs) <br/> [git](https://launchpad.net/~git-core/+archive/ubuntu/ppa) <br/> [Google Cloud CLI](https://packages.cloud.google.com/apt) <br/> [Heroku](https://cli-assets.heroku.com/channels/stable/apt) <br/> [HHvm](https://dl.hhvm.com/ubuntu) <br/> [MongoDB](https://repo.mongodb.org/apt/ubuntu) <br/> [Mono](https://download.mono-project.com/repo/ubuntu) <br/> [MS Edge](https://packages.microsoft.com/repos/edge) <br/> [PostgreSQL](https://apt.postgresql.org/pub/repos/apt/) <br/> [R](https://cloud.r-project.org/bin/linux/ubuntu) |
|
||||
| Ubuntu | [APT](https://wiki.debian.org/Apt) | [containers](https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable) (Ubuntu 20 only) <br/> [docker](https://download.docker.com/linux/ubuntu) (Ubuntu20 0nly) <br/> [Eclipse-Temurin (Adoptium)](https://packages.adoptium.net/artifactory/deb/) <br/> [Erlang](https://packages.erlang-solutions.com/ubuntu) <br/> [Firefox](http://ppa.launchpad.net/mozillateam/ppa/ubuntu) <br/> [git-lfs](https://packagecloud.io/install/repositories/github/git-lfs) <br/> [git](https://launchpad.net/~git-core/+archive/ubuntu/ppa) <br/> [Google Cloud CLI](https://packages.cloud.google.com/apt) <br/> [Heroku](https://cli-assets.heroku.com/channels/stable/apt) <br/> [HHvm](https://dl.hhvm.com/ubuntu) <br/> [MongoDB](https://repo.mongodb.org/apt/ubuntu) <br/> [Mono](https://download.mono-project.com/repo/ubuntu) <br/> [MS Edge](https://packages.microsoft.com/repos/edge) <br/> [PostgreSQL](https://apt.postgresql.org/pub/repos/apt/) <br/> [R](https://cloud.r-project.org/bin/linux/ubuntu) |
|
||||
| | [pipx](https://pypa.github.io/pipx) | ansible-core <br/>yamllint |
|
||||
| Windows | [Chocolatey](https://chocolatey.org) | No third-party repos installed |
|
||||
| macOS | [Homebrew](https://brew.sh) | [aws-cli v2](https://github.com/aws/homebrew-tap) </br> [azure/bicep](https://github.com/Azure/homebrew-bicep) </br> [mongodb/brew](https://github.com/mongodb/homebrew-brew) |
|
||||
@@ -199,3 +208,9 @@ For some tools, we always install the latest at the time of the deployment; for
|
||||
<summary><b><i>How do I request that a new tool be pre-installed on the image?</b></i></summary>
|
||||
Please create an issue and get an approval from us to add this tool to the image before creating the pull request.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b><i>What branch should I use to build custom image?</b></i></summary>
|
||||
We strongly encourage customers to build their own images using the main branch.
|
||||
This repository contains multiple branches and releases that serve as document milestones to reflect what software is installed in the images at certain point of time. Current builds are not idempotent and if one tries to build a runner image using the specific tag it is not guaranteed that the build will succeed.
|
||||
</details>
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2019/2022 and Ubuntu 20.04/22.04.
|
||||
|
||||
Each image is configured by a JSON or HCL2 Packer template that specifies where to build the image (Azure in this case)
|
||||
Each image is configured by a HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
and what steps to run to install software and prepare the disk.
|
||||
|
||||
The Packer process initializes a connection to Azure subscription using Azure CLI and creates temporary resources
|
||||
required for the build process: resource group, network interfaces and virtual machine from the "clean" image specified in the template.
|
||||
The Packer process initializes a connection to the Azure subscription using Azure CLI and creates temporary resources
|
||||
required for the build process: a resource group, network interfaces and a virtual machine from the "clean" image specified in the template.
|
||||
|
||||
If the VM deployment succeeds, Packer connects it using ssh or WinRM and begins executing installation steps from the template one-by-one.
|
||||
If any step fails, image generation is aborted and the temporary VM is terminated.
|
||||
Packer also attempts to cleanup all the temporary resources it created (unless otherwise configured).
|
||||
If the VM deployment succeeds, Packer connects to it using SSH or WinRM and begins executing installation steps from the template one-by-one.
|
||||
If any step fails, image generation is aborted, and the temporary VM is terminated.
|
||||
Packer also attempts to clean up all the temporary resources it created (unless otherwise configured).
|
||||
|
||||
After successful completion of all installation steps Packer creates managed image from the temporary VM's disk and deletes the VM.
|
||||
After successful completion of all installation steps, Packer creates a managed image from the temporary VM's disk and deletes the VM.
|
||||
|
||||
- [Build agent preparation](#build-agent-preparation)
|
||||
- [Build Agent Preparation](#build-agent-preparation)
|
||||
- [Manual image generation](#manual-image-generation)
|
||||
- [Manual image generation customization](#manual-image-generation-customization)
|
||||
- [Network security](#network-security)
|
||||
- [Azure subscription authentication](#azure-subscription-authentication)
|
||||
- [Generated machine deployment](#generated-machine-deployment)
|
||||
- [Manual Image Generation Customization](#manual-image-generation-customization)
|
||||
- [Network Security](#network-security)
|
||||
- [Azure Subscription Authentication](#azure-subscription-authentication)
|
||||
- [Generated Machine Deployment](#generated-machine-deployment)
|
||||
- [Automated image generation](#automated-image-generation)
|
||||
- [Required variables](#required-variables)
|
||||
- [Optional variables](#optional-variables)
|
||||
@@ -27,15 +27,15 @@ After successful completion of all installation steps Packer creates managed ima
|
||||
- [Toolset](#toolset)
|
||||
- [Post-generation scripts](#post-generation-scripts)
|
||||
- [Running scripts](#running-scripts)
|
||||
- [Script details: Ubuntu](#script-details-ubuntu)
|
||||
- [Script details: Windows](#script-details-windows)
|
||||
- [Script Details: Ubuntu](#script-details-ubuntu)
|
||||
- [Script Details: Windows](#script-details-windows)
|
||||
|
||||
## Build agent preparation
|
||||
## Build Agent Preparation
|
||||
|
||||
Build agent is a machine where Packer process will be started.
|
||||
You can use any physical or virtual machine running OS Windows or Linux.
|
||||
Of course you may also use [Azure VM](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/quick-create-cli).
|
||||
In any case you will need these software installed:
|
||||
The build agent is a machine where the Packer process will be started.
|
||||
You can use any physical or virtual machine running Windows or Linux OS.
|
||||
Of course, you may also use an [Azure VM](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/quick-create-cli).
|
||||
In any case, you will need these software installed:
|
||||
|
||||
- Packer 1.8.2 or higher.
|
||||
|
||||
@@ -60,11 +60,12 @@ In any case you will need these software installed:
|
||||
In Windows you already have it.
|
||||
|
||||
For Linux follow instructions [here](https://learn.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software)
|
||||
to add Microsoft's Linux Software Repository and then install package `powershell`.
|
||||
to add Microsoft's Linux Software Repository and then install the `powershell` package.
|
||||
|
||||
- Azure CLI.
|
||||
|
||||
Follow instructions [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli).
|
||||
Or if you use Windows you may run this command in Powershell instead:
|
||||
Follow the instructions [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli).
|
||||
Or if you use Windows, you may run this command in Powershell instead:
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi
|
||||
@@ -73,72 +74,72 @@ In any case you will need these software installed:
|
||||
|
||||
## Manual image generation
|
||||
|
||||
This repo bundles script that helps generating images in Azure.
|
||||
All you need are Azure subscription and build agent configured as described above.
|
||||
We suggest starting with building UbuntuMinimal image because it includes only basic software and build in less than 30 minutes.
|
||||
This repository includes a script that assists in generating images in Azure.
|
||||
All you need is an Azure subscription and a build agent configured as described above.
|
||||
We suggest starting with building the UbuntuMinimal image because it includes only basic software and builds in less than 30 minutes.
|
||||
|
||||
All the commands below should be executed in Powershell.
|
||||
All the commands below should be executed in PowerShell.
|
||||
|
||||
First clone runner-images repository and set current directory to it:
|
||||
First, clone the runner-images repository and set the current directory to it:
|
||||
|
||||
```powershell
|
||||
git clone https://github.com/actions/runner-images.git
|
||||
Set-Location runner-images
|
||||
```
|
||||
|
||||
Then import [GenerateResourcesAndImage](../helpers/GenerateResourcesAndImage.ps1) script from `helpers` subdirectory:
|
||||
Then, import the [GenerateResourcesAndImage](../helpers/GenerateResourcesAndImage.ps1) script from the `helpers` subdirectory:
|
||||
|
||||
```powershell
|
||||
Import-Module .\helpers\GenerateResourcesAndImage.ps1
|
||||
```
|
||||
|
||||
Finally, run `GenerateResourcesAndImage` function setting mandatory arguments: image type and where to create resources:
|
||||
Finally, run the `GenerateResourcesAndImage` function, setting the mandatory arguments: image type and where to build and store the resulting managed image:
|
||||
|
||||
- `SubscriptionId` - your Azure Subscription ID
|
||||
- `ResourceGroupName` - name of the resource group that will be created within your subscription (e.g. "imagegen-test")
|
||||
- `AzureLocation` - location where resources will be created (e.g. "East US")
|
||||
- `ImageType` - what image to build (we suggest choosing "UbuntuMinimal" here, other valid options are "Windows2019", "Windows2022", "Ubuntu2004", "Ubuntu2204")
|
||||
- `SubscriptionId` - your Azure Subscription ID;
|
||||
- `ResourceGroupName` - the name of the resource group that will be created within your subscription (e.g., "imagegen-test");
|
||||
- `AzureLocation` - the location where resources will be created (e.g., "East US");
|
||||
- `ImageType` - the type of image to build (we suggest choosing "UbuntuMinimal" here; other valid options are "Windows2019", "Windows2022", "Ubuntu2004", "Ubuntu2204").
|
||||
|
||||
This function automatically creates all required Azure resources and kicks off packer image generation for the selected image type.
|
||||
This function automatically creates all required Azure resources and initiates the Packer image generation for the selected image type.
|
||||
|
||||
When image is ready you may proceed to [deployment](#generated-machine-deployment)
|
||||
When the image is ready, you may proceed to [deployment](#generated-machine-deployment).
|
||||
|
||||
## Manual image generation customization
|
||||
## Manual Image Generation Customization
|
||||
|
||||
Function `GenerateResourcesAndImage` accepts a bunch of arguments that may help you generating image in your specific environment.
|
||||
The `GenerateResourcesAndImage` function accepts a number of arguments that may assist you in generating an image in your specific environment.
|
||||
|
||||
For example, you may want that all the resources involved in image generation process are tagged.
|
||||
In this case pass a HashTable of tags as a value for `Tags` parameter.
|
||||
For example, you may want all the resources involved in the image generation process to be tagged.
|
||||
In this case, pass a HashTable of tags as a value for the `Tags` parameter.
|
||||
|
||||
If you don't want function to authenticate interactively, you should create Service Principal and invoke the function with parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
You can find more details [in corresponding section below](#azure-subscription-authentication).
|
||||
If you don't want the function to authenticate interactively, you should create a Service Principal and invoke the function with the parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
You can find more details in the [corresponding section below](#azure-subscription-authentication).
|
||||
|
||||
Use `get-help GenerateResourcesAndImage -Detailed` for the complete list of parameters available.
|
||||
Use `get-help GenerateResourcesAndImage -Detailed` for the complete list of available parameters.
|
||||
|
||||
### Network security
|
||||
### Network Security
|
||||
|
||||
To connect to a temporary virtual machine Packer uses WinRM or SSH.
|
||||
To connect to a temporary virtual machine, Packer uses WinRM or SSH.
|
||||
|
||||
If your build agent is located outside of the Azure subscription where temporary VM is created, the public network interface and public IP address is used.
|
||||
Make sure that firewalls are configured properly and WinRM (tcp port 5986) and ssh (tcp port 22) connections are allowed both outgoing for build agent and incoming for temporary VM.
|
||||
Also if you don't want temporary VM to be accessible from everywhere, set `RestrictToAgentIpAddress` parameter value to `$true`
|
||||
to setup firewall rules allowing access only from your build agent public IP address.
|
||||
If your build agent is located outside of the Azure subscription where the temporary VM is created, a public network interface and public IP address are used.
|
||||
Make sure that firewalls are configured properly and that WinRM (TCP port 5986) and SSH (TCP port 22) connections are allowed both outgoing for the build agent and incoming for the temporary VM.
|
||||
Also, if you don't want the temporary VM to be accessible from everywhere, set the `RestrictToAgentIpAddress` parameter value to `$true`
|
||||
to set up firewall rules allowing access only from your build agent's public IP address.
|
||||
|
||||
If your build agent and temporary VM are in the same subscription you can configure Packer to connect using private virtual network.
|
||||
To achieve that set proper values for environment variables `VNET_RESOURCE_GROUP`, `VNET_NAME` and `VNET_SUBNET`.
|
||||
If your build agent and temporary VM are in the same subscription, you can configure Packer to connect using a private virtual network.
|
||||
To achieve this, set proper values for the environment variables `VNET_RESOURCE_GROUP`, `VNET_NAME` and `VNET_SUBNET`.
|
||||
|
||||
### Azure subscription authentication
|
||||
### Azure Subscription Authentication
|
||||
|
||||
Packer uses Service Principal to authenticate in Azure infrastructure.
|
||||
For more information about Service Principals refer to
|
||||
Packer uses a Service Principal to authenticate in Azure infrastructure.
|
||||
For more information about Service Principals, refer to the
|
||||
[Azure documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal).
|
||||
|
||||
Function `GenerateResourcesAndImage` is able to create Service Principle to be used by Packer.
|
||||
It uses Connect-AzAccount cmdlet that invokes interactive authentication process by default.
|
||||
If you don't want to use interactive authentication you should create Service Principal with full read-write permissions for selected Azure subscription on your own
|
||||
and provide proper values for parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
The `GenerateResourcesAndImage` function is able to create a Service Principal to be used by Packer.
|
||||
It uses the Connect-AzAccount cmdlet that invokes an interactive authentication process by default.
|
||||
If you don't want to use interactive authentication, you should create a Service Principal with full read-write permissions for the selected Azure subscription on your own
|
||||
and provide proper values for the parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
|
||||
Here is an example of how to create Service Principle using Az Powershell module:
|
||||
Here is an example of how to create a Service Principal using the Az PowerShell module:
|
||||
|
||||
```powershell
|
||||
$credentials = [Microsoft.Azure.PowerShell.Cmdlets.Resources.MSGraph.Models.ApiV10.MicrosoftGraphPasswordCredential]@{
|
||||
@@ -160,9 +161,9 @@ Start-Sleep -Seconds 30
|
||||
}
|
||||
```
|
||||
|
||||
## Generated machine deployment
|
||||
## Generated Machine Deployment
|
||||
|
||||
After the successful image generation, Virtual Machine can be created from the generated image using [CreateAzureVMFromPackerTemplate](../helpers/CreateAzureVMFromPackerTemplate.ps1) script.
|
||||
After successful image generation, a Virtual Machine can be created from the generated image using the [CreateAzureVMFromPackerTemplate](../helpers/CreateAzureVMFromPackerTemplate.ps1) script.
|
||||
|
||||
```powershell
|
||||
Import-Module .\helpers\CreateAzureVMFromPackerTemplate.ps1
|
||||
@@ -172,29 +173,29 @@ CreateAzureVMFromPackerTemplate -SubscriptionId {YourSubscriptionId} -ResourceGr
|
||||
|
||||
Where:
|
||||
|
||||
- `SubscriptionId` - The Azure subscription Id where resources will be created.
|
||||
- `ResourceGroupName` - The Azure resource group name where the Azure virtual machine will be created.
|
||||
- `ManagedImageName` - The name of the managed image to be used for the virtual machine creation.
|
||||
- `VirtualMachineName` - The name of the virtual machine to be generated.
|
||||
- `AdminUserName` - The administrator username for the virtual machine to be created.
|
||||
- `AdminPassword` - The administrator password for the virtual machine to be created.
|
||||
- `AzureLocation` - The location where the Azure virtual machine will be provisioned. Example: "eastus"
|
||||
- `SubscriptionId` - the Azure subscription ID where resources will be created;
|
||||
- `ResourceGroupName` - the Azure resource group name where the Azure virtual machine will be created;
|
||||
- `ManagedImageName` - the name of the managed image to be used for the virtual machine creation;
|
||||
- `VirtualMachineName` - the name of the virtual machine to be generated;
|
||||
- `AdminUserName` - the administrator username for the virtual machine to be created;
|
||||
- `AdminPassword` - the administrator password for the virtual machine to be created;
|
||||
- `AzureLocation` - the location where the Azure virtual machine will be provisioned (e.g., "eastus").
|
||||
|
||||
The function creates an Azure VM and generates network resources in Azure to make the VM accessible.
|
||||
This function creates an Azure VM and generates network resources in Azure to make the VM accessible.
|
||||
|
||||
## Automated image generation
|
||||
|
||||
If you want to generate images automatically (e.g. as a part of CI/CD pipeline)
|
||||
you can use Packer directly. To do that you will need:
|
||||
If you want to generate images automatically (e.g., as a part of a CI/CD pipeline),
|
||||
you can use Packer directly. To do this, you will need:
|
||||
|
||||
- A build agent configured as described in
|
||||
[Build agent preparation](#build-agent-preparation) section.
|
||||
- Azure subscription and Service Principal configured as described in
|
||||
[Azure subscription authentication](#azure-subscription-authentication) section.
|
||||
- Resource group created in your Azure subscription where managed image will be stored.
|
||||
- String to be used as password for the user used to install software (Windows only).
|
||||
- a build agent configured as described in the
|
||||
[Build agent preparation](#build-agent-preparation) section;
|
||||
- an Azure subscription and Service Principal configured as described in the
|
||||
[Azure subscription authentication](#azure-subscription-authentication) section;
|
||||
- a resource group created in your Azure subscription where the managed image will be stored;
|
||||
- a string to be used as a password for the user used to install software (Windows only).
|
||||
|
||||
Then you can invoke Packer in you CI/CD pipeline using the following command:
|
||||
Then, you can invoke Packer in your CI/CD pipeline using the following command:
|
||||
|
||||
```powershell
|
||||
packer build -var "subscription_id=$SubscriptionId" `
|
||||
@@ -210,54 +211,54 @@ packer build -var "subscription_id=$SubscriptionId" `
|
||||
|
||||
Where:
|
||||
|
||||
- `SubscriptionId` - your Azure Subscription ID
|
||||
- `ClientId` and `ClientSecret` - Service Principal credentials
|
||||
- `TenantId` - Azure Tenant ID
|
||||
- `InstallPassword` - password for the user used to install software (Windows only)
|
||||
- `Location` - location where resources will be created (e.g. "East US")
|
||||
- `ImageName` and `ImageResourceGroupName` - name of the resource group where managed image will be stored
|
||||
- `TemplatePath` - path to the Packer template file (e.g. "images/windows/templates/windows-2022.json")
|
||||
- `SubscriptionId` - your Azure Subscription ID;
|
||||
- `ClientId` and `ClientSecret` - Service Principal credentials;
|
||||
- `TenantId` - Azure Tenant ID;
|
||||
- `InstallPassword` - password for the user used to install software (Windows only);
|
||||
- `Location` - location where resources will be created (e.g., "East US");
|
||||
- `ImageName` and `ImageResourceGroupName` - name of the resource group where the managed image will be stored;
|
||||
- `TemplatePath` - path to the Packer template file (e.g., "images/windows/templates/windows-2022.pkr.hcl").
|
||||
|
||||
### Required variables
|
||||
|
||||
The following variables are required to be passed to Packer process:
|
||||
The following variables are required to be passed to the Packer process:
|
||||
|
||||
| Template var | Env var | Description
|
||||
| ------------ | ------- | -----------
|
||||
| `subscription_id` | `ARM_SUBSCRIPTION_ID` | Subscription under which the build will be performed.
|
||||
| `subscription_id` | `ARM_SUBSCRIPTION_ID` | The subscription under which the build will be performed.
|
||||
| `client_id` | `ARM_CLIENT_ID` | The Active Directory service principal associated with your builder.
|
||||
| `client_secret` | `ARM_CLIENT_SECRET` | The password or secret for your service principal; may be omitted if `client_cert_path` is set.
|
||||
| `client_cert_path` | `ARM_CLIENT_CERT_PATH` | The location of a PEM file containing a certificate and private key for service principal; may be omitted if `client_secret` is set.
|
||||
| `location` | `ARM_RESOURCE_LOCATION` | Azure datacenter in which your VM will build.
|
||||
| `managed_image_resource_group_name` | `ARM_RESOURCE_GROUP` | Resource group under which the final artifact will be stored.
|
||||
| `client_cert_path` | `ARM_CLIENT_CERT_PATH` | The location of a PEM file containing a certificate and private key for the service principal; may be omitted if `client_secret` is set.
|
||||
| `location` | `ARM_RESOURCE_LOCATION` | The Azure datacenter in which your VM will be built.
|
||||
| `managed_image_resource_group_name` | `ARM_RESOURCE_GROUP` | The resource group under which the final artifact will be stored.
|
||||
|
||||
### Optional variables
|
||||
|
||||
The following variables are optional:
|
||||
|
||||
- `managed_image_name` - Name of the managed image to create. If not specified, "Runner-Image-{{ImageType}}" will be used.
|
||||
- `build_resource_group_name` - Specify an existing resource group to run the build in it. By default, a temporary resource group will be created and destroyed as part of the build. If you do not have permission to do so, use build_resource_group_name to specify an existing resource group to run the build in it.
|
||||
- `object_id` - The object ID for the AAD SP. Will be derived from the oAuth token if empty.
|
||||
- `tenant_id` - The Active Directory tenant identifier with which your `client_id` and `subscription_id` are associated. If not specified, `tenant_id` will be looked up using `subscription_id`.
|
||||
- `temp_resource_group_name` - Name assigned to the temporary resource group created during the build. If this value is not set, a random value will be assigned. This resource group is deleted at the end of the build.
|
||||
- `private_virtual_network_with_public_ip` - This value allows you to set a `virtual_network_name` and obtain a public IP. If this value is not set and `virtual_network_name` is defined Packer is only allowed to be executed from a host on the same subnet / virtual network.
|
||||
- `virtual_network_name` - Use a pre-existing virtual network for the VM. This option enables private communication with the VM, no public IP address is used or provisioned (unless you set `private_virtual_network_with_public_ip`).
|
||||
- `virtual_network_resource_group_name` - If `virtual_network_name` is set, this value may also be set. If `virtual_network_name` is set, and this value is not set the builder attempts to determine the resource group containing the virtual network. If the resource group cannot be found, or it cannot be disambiguated, this value should be set.
|
||||
- `virtual_network_subnet_name` - If `virtual_network_name` is set, this value may also be set. If `virtual_network_name` is set, and this value is not set the builder attempts to determine the subnet to use with the virtual network. If the subnet cannot be found, or it cannot be disambiguated, this value should be set.
|
||||
- `managed_image_name` - the name of the managed image to create. If not specified, "Runner-Image-{{ImageType}}" will be used;
|
||||
- `build_resource_group_name` - specify an existing resource group to run the build in; by default, a temporary resource group will be created and destroyed as part of the build; if you do not have permission to do so, use `build_resource_group_name` to specify an existing resource group to run the build in;
|
||||
- `object_id` - the object ID for the AAD SP; will be derived from the oAuth token if empty;
|
||||
- `tenant_id` - the Active Directory tenant identifier with which your `client_id` and `subscription_id` are associated; if not specified, `tenant_id` will be looked up using `subscription_id`;
|
||||
- `temp_resource_group_name` - the name assigned to the temporary resource group created during the build; if this value is not set, a random value will be assigned; this resource group is deleted at the end of the build;
|
||||
- `private_virtual_network_with_public_ip` - this value allows you to set a `virtual_network_name` and obtain a public IP; if this value is not set and `virtual_network_name` is defined, Packer is only allowed to be executed from a host on the same subnet / virtual network;
|
||||
- `virtual_network_name` - use a pre-existing virtual network for the VM; this option enables private communication with the VM, no public IP address is used or provisioned (unless you set `private_virtual_network_with_public_ip`);
|
||||
- `virtual_network_resource_group_name` - if `virtual_network_name` is set, this value may also be set; if `virtual_network_name` is set, and this value is not set, the builder attempts to determine the resource group containing the virtual network; if the resource group cannot be found, or it cannot be disambiguated, this value should be set;
|
||||
- `virtual_network_subnet_name` - if `virtual_network_name` is set, this value may also be set; if `virtual_network_name` is set, and this value is not set, the builder attempts to determine the subnet to use with the virtual network; if the subnet cannot be found, or it cannot be disambiguated, this value should be set.
|
||||
|
||||
## Builder variables
|
||||
|
||||
The `builders` section contains variables for the `azure-arm` builder used in the project. Most of the builder variables are inherited from the `user variables` section, however, the variables can be overwritten to adjust image-generation performance.
|
||||
|
||||
- `vm_size` - Size of the VM used for building. This can be changed when you deploy a VM from your image.
|
||||
- `image_os` - Type of OS that will be deployed as a temporary VM.
|
||||
- `image_version` - Specify version of an OS to boot from.
|
||||
- `vm_size` - the size of the VM used for building; this can be changed when you deploy a VM from your image;
|
||||
- `image_os` - the type of OS that will be deployed as a temporary VM;
|
||||
- `image_version` - specify the version of an OS to boot from.
|
||||
|
||||
**Detailed Azure builders documentation can be found in [packer documentation](https://www.packer.io/docs/builders/azure).**
|
||||
**Detailed Azure builders documentation can be found in the [packer documentation](https://www.packer.io/docs/builders/azure).**
|
||||
|
||||
## Toolset
|
||||
|
||||
Configuration for some installed software is located in `toolset.json` files. These files define the list of Ruby, Python, Go versions, the list of PowerShell modules and VS components that will be installed to image. They can be changed if these tools are not required to reduce image generation time or image size.
|
||||
The configuration for some installed software is located in `toolset.json` files. These files define the list of Ruby, Python, Go versions, the list of PowerShell modules and VS components that will be installed on the image. They can be changed if these tools are not required, to reduce image generation time or image size.
|
||||
|
||||
Generated tool versions and details can be found in related projects:
|
||||
|
||||
@@ -267,9 +268,9 @@ Generated tool versions and details can be found in related projects:
|
||||
|
||||
## Post-generation scripts
|
||||
|
||||
> :warning: These scripts are intended to run on a VM deployed in Azure
|
||||
> :warning: These scripts are intended to be run on a VM deployed in Azure
|
||||
|
||||
The user, created during the image generation, does not exist in the result image hence some configuration files related to the user's home directory need to be changed as well as the file permissions for some directories. Scripts for that are located in the `post-gen` folder in the repository:
|
||||
The user, created during the image generation, does not exist in the resulting image. Hence, some configuration files related to the user's home directory need to be changed, as well as the file permissions for some directories. Scripts for that are located in the `post-gen` folder in the repository:
|
||||
|
||||
- Windows: <https://github.com/actions/runner-images/tree/main/images/windows/assets/post-gen>
|
||||
- Linux: <https://github.com/actions/runner-images/tree/main/images/ubuntu/assets/post-gen>
|
||||
@@ -295,16 +296,16 @@ The scripts are copied to the image during the generation process to the followi
|
||||
Get-ChildItem C:\post-generation -Filter *.ps1 | ForEach-Object { & $_.FullName }
|
||||
```
|
||||
|
||||
### Script details: Ubuntu
|
||||
### Script Details: Ubuntu
|
||||
|
||||
- **cleanup-logs.sh** - removes all build process logs from the machine
|
||||
- **environment-variables.sh** - replaces `$HOME` with the default user's home directory for environmental variables related to the default user home directory
|
||||
- **homebrew-permissions.sh** - Resets homebrew repository directory by running `git reset --hard` to make the working tree clean after chmoding /home and changes the repository directory owner to the current user
|
||||
- **rust-permissions.sh** - fixes permissions for the Rust folder. Detailed issue explanation is provided in [runner-images/issues/572](https://github.com/actions/runner-images/issues/572).
|
||||
- **cleanup-logs.sh** - removes all build process logs from the machine;
|
||||
- **environment-variables.sh** - replaces `$HOME` with the default user's home directory for environment variables related to the default user home directory;
|
||||
- **homebrew-permissions.sh** - resets the Homebrew repository directory by running `git reset --hard` to make the working tree clean after changing permissions in /home and changes the repository directory owner to the current user;
|
||||
- **rust-permissions.sh** - fixes permissions for the Rust folder; a detailed issue explanation is provided in [runner-images/issues/572](https://github.com/actions/runner-images/issues/572).
|
||||
|
||||
### Script details: Windows
|
||||
### Script Details: Windows
|
||||
|
||||
- **GenerateIISExpressCertificate.ps1** - generates and imports a certificate to run applications with IIS Express through HTTPS
|
||||
- **InternetExplorerConfiguration** - turns off the Internet Explorer Enhanced Security feature
|
||||
- **Msys2FirstLaunch.ps1** - initializes bash user profile in MSYS2
|
||||
- **VSConfiguration.ps1** - performs initial Visual Studio configuration
|
||||
- **GenerateIISExpressCertificate.ps1** - generates and imports a certificate to run applications with IIS Express through HTTPS;
|
||||
- **InternetExplorerConfiguration.ps1** - turns off the Internet Explorer Enhanced Security feature;
|
||||
- **Msys2FirstLaunch.ps1** - initializes the bash user profile in MSYS2;
|
||||
- **VSConfiguration.ps1** - performs initial Visual Studio configuration.
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# Debugging Failed Packer Builds
|
||||
|
||||
## Step 1: Run packer build `-on-error=ask`
|
||||
When you run the `packer build` command, give it the `-on-error=ask` flag.
|
||||
By default, `packer build` will delete the resource group as soon as the build fails.
|
||||
`-on-error=ask` will pause it and wait for your input so you have time to remote in to the VM and diagnose the failure.
|
||||
|
||||
When the build fails, you will see this:
|
||||
|
||||

|
||||
|
||||
## Step 2: Find the resource group name in the build log
|
||||
At the beginning of the build log (written to console), find the resource group name for the VM:
|
||||
|
||||

|
||||
|
||||
Log into the Azure Portal. Find that resource group under `Resource groups`. You should see the resources for the Packer build:
|
||||
|
||||

|
||||
|
||||
## Step 3: Connect to the VM
|
||||
Select the VM in the resource group. Click `Connect:`
|
||||
|
||||
This will download an RDP file. Open that and enter the credentials found in the JSON file you pass to `packer build`:
|
||||
|
||||

|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 70 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 204 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 139 KiB |
@@ -28,7 +28,7 @@ Function CreateAzureVMFromPackerTemplate {
|
||||
The location where the Azure virtual machine will be provisioned. Example: "eastus"
|
||||
|
||||
.EXAMPLE
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {YourSubscriptionId} -ResourceGroupName {ResourceGroupName} -TemplateFile "C:\BuildVmImages\temporaryTemplate.json" -VirtualMachineName "testvm1" -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {SubscriptionId} -ResourceGroupName {ResourceGroupName} -VirtualMachineName "testvm1" -ManagedImageName {ManagedImageName} -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
|
||||
@@ -5,7 +5,8 @@ enum ImageType {
|
||||
Windows2022 = 2
|
||||
Ubuntu2004 = 3
|
||||
Ubuntu2204 = 4
|
||||
UbuntuMinimal = 5
|
||||
Ubuntu2404 = 5
|
||||
UbuntuMinimal = 6
|
||||
}
|
||||
|
||||
Function Get-PackerTemplatePath {
|
||||
@@ -17,20 +18,24 @@ Function Get-PackerTemplatePath {
|
||||
)
|
||||
|
||||
switch ($ImageType) {
|
||||
# Note: Double Join-Path is required to support PowerShell 5.1
|
||||
([ImageType]::Windows2019) {
|
||||
$relativeTemplatePath = Join-Path "windows" "templates" "windows-2019.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2019.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Windows2022) {
|
||||
$relativeTemplatePath = Join-Path "windows" "templates" "windows-2022.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2022.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2004) {
|
||||
$relativeTemplatePath = Join-Path "ubuntu" "templates" "ubuntu-20.04.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-20.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2204) {
|
||||
$relativeTemplatePath = Join-Path "ubuntu" "templates" "ubuntu-22.04.pkr.hcl"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-22.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2404) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-24.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::UbuntuMinimal) {
|
||||
$relativeTemplatePath = Join-Path "ubuntu" "templates" "ubuntu-minimal.pkr.hcl"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-minimal.pkr.hcl"
|
||||
}
|
||||
default { throw "Unknown type of image" }
|
||||
}
|
||||
@@ -96,8 +101,10 @@ Function GenerateResourcesAndImage {
|
||||
This parameter cannot be used in combination with the virtual_network_name packer parameter.
|
||||
.PARAMETER Force
|
||||
Delete the resource group if it exists without user confirmation.
|
||||
This parameter is deprecated and will be removed in a future release.
|
||||
.PARAMETER ReuseResourceGroup
|
||||
Reuse the resource group if it exists without user confirmation.
|
||||
This parameter is deprecated and will be removed in a future release.
|
||||
.PARAMETER OnError
|
||||
Specify how packer handles an error during image creation.
|
||||
Options:
|
||||
@@ -145,10 +152,14 @@ Function GenerateResourcesAndImage {
|
||||
[hashtable] $Tags = @{}
|
||||
)
|
||||
|
||||
if ($Force -or $ReuseResourceGroup) {
|
||||
Write-Warning "The `ReuseResourceGroup` and `Force` parameters are deprecated and will be removed in a future release. The resource group will be reused when it already exists and an error will be thrown when it doesn't. If you want to delete the resource group, please delete it manually."
|
||||
}
|
||||
|
||||
if ($Force -and $ReuseResourceGroup) {
|
||||
throw "Force and ReuseResourceGroup cannot be used together."
|
||||
}
|
||||
|
||||
|
||||
Show-LatestCommit -ErrorAction SilentlyContinue
|
||||
|
||||
# Validate packer is installed
|
||||
@@ -169,30 +180,20 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
|
||||
Write-Host "Access to packer generated VM will be restricted to agent IP Address: $AgentIp."
|
||||
if ($TemplatePath.Contains("pkr.hcl")) {
|
||||
if ($PSVersionTable.PSVersion.Major -eq 5) {
|
||||
Write-Verbose "PowerShell 5 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
elseif ($PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -le 2) {
|
||||
Write-Verbose "PowerShell 7.0-7.2 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = '["{0}"]' -f $AgentIp
|
||||
}
|
||||
if ($PSVersionTable.PSVersion.Major -eq 5) {
|
||||
Write-Verbose "PowerShell 5 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
elseif ($PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -le 2) {
|
||||
Write-Verbose "PowerShell 7.0-7.2 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = $AgentIp
|
||||
$AllowedInboundIpAddresses = '["{0}"]' -f $AgentIp
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($TemplatePath.Contains("pkr.hcl")) {
|
||||
$AllowedInboundIpAddresses = "[]"
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = ""
|
||||
}
|
||||
$AllowedInboundIpAddresses = "[]"
|
||||
}
|
||||
Write-Debug "Allowed inbound IP addresses: $AllowedInboundIpAddresses."
|
||||
|
||||
@@ -209,19 +210,16 @@ Function GenerateResourcesAndImage {
|
||||
$TagsJson = $TagsJson -replace '"', '\"'
|
||||
}
|
||||
Write-Debug "Tags JSON: $TagsJson."
|
||||
if ($TemplatePath.Contains(".json")) {
|
||||
Write-Verbose "Injecting tags into packer template."
|
||||
if ($Tags) {
|
||||
$BuilderScriptPathInjected = $TemplatePath.Replace(".json", "-temp.json")
|
||||
$PackerTemplateContent = Get-Content -Path $TemplatePath | ConvertFrom-Json
|
||||
$PackerTemplateContent.builders | Add-Member -Name "azure_tags" -Value $Tags -MemberType NoteProperty
|
||||
$PackerTemplateContent | ConvertTo-Json -Depth 3 | Out-File -Encoding Ascii $BuilderScriptPathInjected
|
||||
$TemplatePath = $BuilderScriptPathInjected
|
||||
}
|
||||
}
|
||||
|
||||
$InstallPassword = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
Write-Host "Downloading packer plugins..."
|
||||
& $PackerBinary init $TemplatePath
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Packer plugins download failed."
|
||||
}
|
||||
|
||||
Write-Host "Validating packer template..."
|
||||
& $PackerBinary validate `
|
||||
"-var=client_id=fake" `
|
||||
@@ -235,7 +233,7 @@ Function GenerateResourcesAndImage {
|
||||
"-var=allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
"-var=azure_tags=$($TagsJson)" `
|
||||
$TemplatePath
|
||||
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Packer template validation failed."
|
||||
}
|
||||
@@ -248,7 +246,7 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
else {
|
||||
Write-Verbose "AzureClientId was provided, will use service principal login."
|
||||
az login --service-principal --username $AzureClientId --password $AzureClientSecret --tenant $AzureTenantId --output none
|
||||
az login --service-principal --username $AzureClientId --password=$AzureClientSecret --tenant $AzureTenantId --output none
|
||||
}
|
||||
az account set --subscription $SubscriptionId
|
||||
if ($LastExitCode -ne 0) {
|
||||
@@ -283,7 +281,7 @@ Function GenerateResourcesAndImage {
|
||||
# Resource group already exists, ask the user what to do
|
||||
$title = "Resource group '$ResourceGroupName' already exists"
|
||||
$message = "Do you want to delete the resource group and all resources in it?"
|
||||
|
||||
|
||||
$options = @(
|
||||
[System.Management.Automation.Host.ChoiceDescription]::new("&Yes", "Delete the resource group and all resources in it."),
|
||||
[System.Management.Automation.Host.ChoiceDescription]::new("&No", "Keep the resource group and continue."),
|
||||
@@ -339,7 +337,7 @@ Function GenerateResourcesAndImage {
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Failed to create service principal '$ServicePrincipalName'."
|
||||
}
|
||||
|
||||
|
||||
$ServicePrincipalAppId = $ServicePrincipal.appId
|
||||
$ServicePrincipalPassword = $ServicePrincipal.password
|
||||
$TenantId = $ServicePrincipal.tenant
|
||||
@@ -376,7 +374,7 @@ Function GenerateResourcesAndImage {
|
||||
Write-Error $_
|
||||
} finally {
|
||||
Write-Verbose "`nCleaning up..."
|
||||
|
||||
|
||||
# Remove ADServicePrincipal and ADApplication
|
||||
if ($ADCleanupRequired) {
|
||||
Write-Host "Removing ADServicePrincipal..."
|
||||
|
||||
@@ -13,15 +13,15 @@ class BaseNode {
|
||||
}
|
||||
|
||||
[String] ToMarkdown([Int32] $Level) {
|
||||
throw "Abtract method 'ToMarkdown(level)' is not implemented for '$($this.GetType().Name)'"
|
||||
throw "Abstract method 'ToMarkdown(level)' is not implemented for '$($this.GetType().Name)'"
|
||||
}
|
||||
|
||||
[Boolean] IsSimilarTo([BaseNode] $OtherNode) {
|
||||
throw "Abtract method 'IsSimilarTo' is not implemented for '$($this.GetType().Name)'"
|
||||
throw "Abstract method 'IsSimilarTo' is not implemented for '$($this.GetType().Name)'"
|
||||
}
|
||||
|
||||
[Boolean] IsIdenticalTo([BaseNode] $OtherNode) {
|
||||
throw "Abtract method 'IsIdenticalTo' is not implemented for '$($this.GetType().Name)'"
|
||||
throw "Abstract method 'IsIdenticalTo' is not implemented for '$($this.GetType().Name)'"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class BaseToolNode: BaseNode {
|
||||
}
|
||||
|
||||
[String] GetValue() {
|
||||
throw "Abtract method 'GetValue' is not implemented for '$($this.GetType().Name)'"
|
||||
throw "Abstract method 'GetValue' is not implemented for '$($this.GetType().Name)'"
|
||||
}
|
||||
|
||||
[Boolean] IsSimilarTo([BaseNode] $OtherNode) {
|
||||
@@ -53,4 +53,4 @@ class BaseToolNode: BaseNode {
|
||||
[Boolean] IsIdenticalTo([BaseNode] $OtherNode) {
|
||||
return $this.IsSimilarTo($OtherNode) -and ($this.GetValue() -eq $OtherNode.GetValue())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ class HeaderNode: BaseNode {
|
||||
}
|
||||
|
||||
[void] AddTable([PSCustomObject[]] $Table) {
|
||||
$this.AddNode([TableNode]::FromObjectsArray($Table))
|
||||
$this.AddNode([TableNode]::FromObjectsArray($Table))
|
||||
}
|
||||
|
||||
[void] AddNote([String] $Content) {
|
||||
|
||||
@@ -59,24 +59,19 @@ jobs:
|
||||
arguments: -RepoUrl $(CUSTOM_REPOSITORY_URL) `
|
||||
-RepoBranch $(CUSTOM_REPOSITORY_BRANCH)
|
||||
|
||||
- task: PowerShell@2
|
||||
- task: AzureCLI@2
|
||||
displayName: 'Set variables'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
azureSubscription: 'spn-hosted-runners'
|
||||
scriptType: 'pscore'
|
||||
scriptLocation: 'inlineScript'
|
||||
inlineScript: |
|
||||
$ImageType = "${{ parameters.image_type }}"
|
||||
$TemplateDirectoryName = if ($ImageType.StartsWith("ubuntu")) { "ubuntu/templates" } else { "windows/templates" }
|
||||
$TemplateDirectoryPath = Join-Path "images" $TemplateDirectoryName | Resolve-Path
|
||||
|
||||
$TemplateFileName = "${{ parameters.image_template_name }}"
|
||||
if ($TemplateFileName) {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath $TemplateFileName
|
||||
} else {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath "$ImageType.pkr.hcl"
|
||||
if ( -not (Test-Path $TemplatePath) ) {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath "$ImageType.json"
|
||||
}
|
||||
}
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath $TemplateFileName
|
||||
Write-Host "##vso[task.setvariable variable=TemplateDirectoryPath;]$TemplateDirectoryPath"
|
||||
Write-Host "##vso[task.setvariable variable=TemplatePath;]$TemplatePath"
|
||||
|
||||
@@ -86,13 +81,16 @@ jobs:
|
||||
$TempResourceGroupName = "packer-temp-$ManagedImageName"
|
||||
Write-Host "##vso[task.setvariable variable=TempResourceGroupName;]$TempResourceGroupName"
|
||||
|
||||
$clientSecret = $(az keyvault secret show --name "spnhostedrunners" --vault-name "gh-imagegeneration" --query value -o tsv)
|
||||
Write-Host "##vso[task.setvariable variable=ClientSecret;issecret=true]$clientSecret"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Build VM'
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: ./images.CI/linux-and-win/build-image.ps1
|
||||
arguments: -ClientId $(CLIENT_ID) `
|
||||
-ClientSecret $(CLIENT_SECRET) `
|
||||
-ClientSecret "$(ClientSecret)" `
|
||||
-TemplatePath $(TemplatePath) `
|
||||
-ImageName "$(ManagedImageName)" `
|
||||
-ImageResourceGroupName $(AZURE_RESOURCE_GROUP) `
|
||||
@@ -179,5 +177,5 @@ jobs:
|
||||
arguments: -TempResourceGroupName "$(TempResourceGroupName)" `
|
||||
-SubscriptionId $(AZURE_SUBSCRIPTION) `
|
||||
-ClientId $(CLIENT_ID) `
|
||||
-ClientSecret $(CLIENT_SECRET) `
|
||||
-ClientSecret "$(ClientSecret)" `
|
||||
-TenantId $(AZURE_TENANT)
|
||||
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: ubuntu2004
|
||||
image_readme_name: Ubuntu2004-Readme.md
|
||||
image_template_name: ubuntu-20.04.json
|
||||
image_template_name: ubuntu-20.04.pkr.hcl
|
||||
|
||||
+3
-5
@@ -1,4 +1,3 @@
|
||||
name: macOS-12_$(date:yyyyMMdd)$(rev:.r)_unstable
|
||||
schedules:
|
||||
- cron: "0 0 * * *"
|
||||
displayName: Daily
|
||||
@@ -17,7 +16,6 @@ pr:
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Monterey'
|
||||
base_image_name: 'clean-macOS-12-380Gb-runner'
|
||||
template_path: 'templates/macOS-12.json'
|
||||
target_datastore: 'ds-image'
|
||||
image_type: ubuntu2404
|
||||
image_readme_name: Ubuntu2404-Readme.md
|
||||
image_template_name: ubuntu-24.04.pkr.hcl
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: windows2019
|
||||
image_readme_name: Windows2019-Readme.md
|
||||
image_template_name: windows-2019.json
|
||||
image_template_name: windows-2019.pkr.hcl
|
||||
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: windows2022
|
||||
image_readme_name: Windows2022-Readme.md
|
||||
image_template_name: windows-2022.json
|
||||
image_template_name: windows-2022.pkr.hcl
|
||||
|
||||
@@ -10,7 +10,8 @@ param(
|
||||
[String] [Parameter (Mandatory=$true)] $TenantId,
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkName,
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkRG,
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkSubnet
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkSubnet,
|
||||
[String] [Parameter (Mandatory=$false)] $AllowedInboundIpAddresses = "[]"
|
||||
)
|
||||
|
||||
if (-not (Test-Path $TemplatePath))
|
||||
@@ -22,8 +23,6 @@ if (-not (Test-Path $TemplatePath))
|
||||
$ImageTemplateName = [io.path]::GetFileName($TemplatePath).Split(".")[0]
|
||||
$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
packer validate -syntax-only $TemplatePath
|
||||
|
||||
$SensitiveData = @(
|
||||
'OSType',
|
||||
'StorageAccountLocation',
|
||||
@@ -37,6 +36,12 @@ $SensitiveData = @(
|
||||
Write-Host "Show Packer Version"
|
||||
packer --version
|
||||
|
||||
Write-Host "Download packer plugins"
|
||||
packer init $TemplatePath
|
||||
|
||||
Write-Host "Validate packer template"
|
||||
packer validate -syntax-only $TemplatePath
|
||||
|
||||
Write-Host "Build $ImageTemplateName VM"
|
||||
packer build -var "client_id=$ClientId" `
|
||||
-var "client_secret=$ClientSecret" `
|
||||
@@ -50,7 +55,7 @@ packer build -var "client_id=$ClientId" `
|
||||
-var "virtual_network_name=$VirtualNetworkName" `
|
||||
-var "virtual_network_resource_group_name=$VirtualNetworkRG" `
|
||||
-var "virtual_network_subnet_name=$VirtualNetworkSubnet" `
|
||||
-var "run_validation_diskspace=$env:RUN_VALIDATION_FLAG" `
|
||||
-var "allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
-color=false `
|
||||
$TemplatePath `
|
||||
| Where-Object {
|
||||
|
||||
@@ -6,7 +6,7 @@ param(
|
||||
[Parameter (Mandatory=$true)] [string] $TenantId
|
||||
)
|
||||
|
||||
az login --service-principal --username $ClientId --password $ClientSecret --tenant $TenantId | Out-Null
|
||||
az login --service-principal --username $ClientId --password=$ClientSecret --tenant $TenantId | Out-Null
|
||||
az account set --subscription $SubscriptionId | Out-Null
|
||||
|
||||
$groupExist = az group exists --name $TempResourceGroupName
|
||||
|
||||
@@ -13,7 +13,7 @@ function Push-AnkaTemplateToRegistry {
|
||||
[string] $TemplateName
|
||||
)
|
||||
|
||||
# if registry uuid doesn't match than delete an image in registry
|
||||
# if registry uuid doesn't match then delete an image in registry
|
||||
$AnkaCaCrtPath="$HOME/.config/anka/certs/anka-ca-crt.pem"
|
||||
$images = anka --machine-readable registry --cacert $AnkaCaCrtPath --registry-path $RegistryUrl list | ConvertFrom-Json | ForEach-Object body
|
||||
$images | Where-Object name -eq $TemplateName | ForEach-Object {
|
||||
@@ -139,10 +139,7 @@ function Set-AnkaVMVideoController {
|
||||
)
|
||||
|
||||
$command = "anka modify $VMName set display -c $Controller"
|
||||
# Apple Metal is available starting from Big Sur
|
||||
if (-not $ShortMacOSVersion.StartsWith("10.")) {
|
||||
$null = Invoke-AnkaCommand -Command $command
|
||||
}
|
||||
$null = Invoke-AnkaCommand -Command $command
|
||||
}
|
||||
|
||||
function Set-AnkaVMDisplayResolution {
|
||||
|
||||
@@ -25,7 +25,7 @@ param(
|
||||
[bool] $EnableAutoLogon = $true,
|
||||
[int] $CPUCount = 6,
|
||||
[int] $RamSizeGb = 7,
|
||||
[int] $DiskSizeGb = 300,
|
||||
[int] $DiskSizeGb = 325,
|
||||
[string] $DisplayResolution = "1920x1080",
|
||||
[string] $TagName = [DateTimeOffset]::Now.ToUnixTimeSeconds(),
|
||||
[string] $Uuid = "4203018E-580F-C1B5-9525-B745CECA79EB"
|
||||
@@ -76,7 +76,7 @@ function Invoke-SoftwareUpdate {
|
||||
$ipAddress = Get-AnkaVMIPAddress -VMName $TemplateName
|
||||
|
||||
# Unenroll Seed
|
||||
Write-Host "`t[*] Reseting the seed before requesting stable versions"
|
||||
Write-Host "`t[*] Resetting the seed before requesting stable versions"
|
||||
Remove-CurrentBetaSeed -HostName $ipAddress | Show-StringWithFormat
|
||||
|
||||
# Install Software Updates
|
||||
@@ -89,41 +89,34 @@ function Invoke-SoftwareUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "`t[*] Fetching Software Updates ready to install on '$TemplateName' VM:"
|
||||
Show-StringWithFormat $newUpdates
|
||||
$listOfNewUpdates = $($($newUpdates.Split("*")).Split("Title") | Where-Object {$_ -match "Label:"}).Replace("Label: ", '')
|
||||
Write-Host "`t[*] Installing Software Updates on '$TemplateName' VM:"
|
||||
Install-SoftwareUpdate -HostName $ipAddress -listOfUpdates $listOfNewUpdates -Password $Password | Show-StringWithFormat
|
||||
|
||||
# Check if Action: restart
|
||||
# Define the next macOS version
|
||||
$command = "sw_vers"
|
||||
$guestMacosVersion = Invoke-SSHPassCommand -HostName $ipAddress -Command $command
|
||||
switch -regex ($guestMacosVersion[1]) {
|
||||
'12.\d' { $nextOSVersion = 'macOS Ventura' }
|
||||
'13.\d' { $nextOSVersion = 'macOS Sonoma' }
|
||||
'12.\d' { $nextOSVersion = 'macOS Ventura|macOS Sonoma|macOS Sequoia' }
|
||||
'13.\d' { $nextOSVersion = 'macOS Sonoma|macOS Sequoia' }
|
||||
'14.\d' { $nextOSVersion = 'macOS Sequoia' }
|
||||
}
|
||||
# Make an array of updates
|
||||
$listOfNewUpdates = $newUpdates.split('*').Trim('')
|
||||
|
||||
Write-Host "`t[*] Fetching Software Updates ready to install on '$TemplateName' VM:"
|
||||
Show-StringWithFormat $newUpdates
|
||||
$listOfNewUpdates = $($($newUpdates.Split("*")).Split("Title").where({$_ -match "Label:"}).Replace("Label: ", '').where({$_ -notmatch $nextOSVersion}))
|
||||
Write-Host "`t[*] Installing Software Updates on '$TemplateName' VM:"
|
||||
Install-SoftwareUpdate -HostName $ipAddress -listOfUpdates $listOfNewUpdates -Password $Password | Show-StringWithFormat
|
||||
Write-Host "`t[*] Sleep 60 seconds before the software updates have been installed"
|
||||
Start-Sleep -Seconds 60
|
||||
Write-Host "`t[*] Waiting for loginwindow process"
|
||||
Wait-LoginWindow -HostName $ipAddress | Show-StringWithFormat
|
||||
# Re-enable AutoLogon after installing a new security software update
|
||||
Invoke-EnableAutoLogon
|
||||
|
||||
foreach ($newupdate in $listOfNewUpdates) {
|
||||
# Will be True if the value is not Venture, not empty, and contains "Action: restart" words
|
||||
if ($newupdate.Contains("Action: restart") -and !$newupdate.Contains("$nextOSVersion") -and (-not [String]::IsNullOrEmpty($newupdate))) {
|
||||
Write-Host "`t[*] Sleep 120 seconds before the software updates have been installed"
|
||||
Start-Sleep -Seconds 120
|
||||
|
||||
Write-Host "`t[*] Waiting for loginwindow process"
|
||||
Wait-LoginWindow -HostName $ipAddress | Show-StringWithFormat
|
||||
|
||||
# Re-enable AutoLogon after installing a new security software update
|
||||
Invoke-EnableAutoLogon
|
||||
|
||||
# Check software updates have been installed
|
||||
$updates = Get-SoftwareUpdate -HostName $ipAddress
|
||||
if ($updates.Contains("Action: restart") -and !$updates.Contains("$nextOSVersion")) {
|
||||
Write-Host "`t[x] Software updates failed to install: "
|
||||
Show-StringWithFormat $updates
|
||||
exit 1
|
||||
}
|
||||
# Check software updates have been installed
|
||||
$updates = Get-SoftwareUpdate -HostName $ipAddress
|
||||
if ($updates.Contains("Action: restart") -and !($updates -match $nextOSVersion)) {
|
||||
Write-Host "`t[x] Software updates failed to install: "
|
||||
Show-StringWithFormat $updates
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,6 +129,7 @@ function Invoke-SoftwareUpdate {
|
||||
Invoke-SSHPassCommand -HostName $ipAddress -Command $command | Show-StringWithFormat
|
||||
}
|
||||
|
||||
|
||||
function Invoke-UpdateSettings {
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
@@ -182,10 +176,10 @@ if ([string]::IsNullOrEmpty($TemplateName)) {
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
$macOSInstaller = Get-MacOSIPSWInstaller -MacOSVersion $MacOSVersion -DownloadLatestVersion $DownloadLatestVersion -BetaSearch $BetaSearch
|
||||
$TemplateName = "clean_macos_${shortMacOSVersion}_${osArch}_${DiskSizeGb}gb"
|
||||
$TemplateName = "clean_macos_${shortMacOSVersion}_${osArch}"
|
||||
} else {
|
||||
$macOSInstaller = Get-MacOSInstaller -MacOSVersion $MacOSVersion -DownloadLatestVersion $DownloadLatestVersion -BetaSearch $BetaSearch
|
||||
$TemplateName = "clean_macos_${shortMacOSVersion}_${DiskSizeGb}gb"
|
||||
$TemplateName = "clean_macos_${shortMacOSVersion}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,14 +39,15 @@ function Invoke-SoftwareUpdateArm64 {
|
||||
$command = "sw_vers"
|
||||
$guestMacosVersion = Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
switch -regex ($guestMacosVersion[1]) {
|
||||
'13.\d' { $nextOSVersion = 'Sonoma' }
|
||||
'14.\d' { $nextOSVersion = 'NotYetDefined' }
|
||||
'12.\d' { $nextOSVersion = 'macOS Ventura|macOS Sonoma|macOS Sequoia' }
|
||||
'13.\d' { $nextOSVersion = 'macOS Sonoma|macOS Sequoia' }
|
||||
'14.\d' { $nextOSVersion = 'macOS Sequoia' }
|
||||
}
|
||||
|
||||
$url = "https://raw.githubusercontent.com/actions/runner-images/main/images/macos/assets/auto-software-update-arm64.exp"
|
||||
$script = Invoke-RestMethod -Uri $url
|
||||
foreach ($update in $listOfUpdates) {
|
||||
if ($update -notmatch "$nextOSVersion") {
|
||||
foreach ($update in $ListOfUpdates) {
|
||||
if ($update -notmatch $nextOSVersion) {
|
||||
$updatedScript = $script.Replace("MACOSUPDATE", $($($update.trim()).Replace(" ","\ ")))
|
||||
$base64 = [Convert]::ToBase64String($updatedScript.ToCharArray())
|
||||
$command = "echo $base64 | base64 --decode > ./auto-software-update-arm64.exp;chmod +x ./auto-software-update-arm64.exp; ./auto-software-update-arm64.exp ${Password};rm ./auto-software-update-arm64.exp"
|
||||
@@ -171,11 +172,11 @@ function Get-MacOSInstaller {
|
||||
Write-Host "`t[*] Beta Version requested. Enrolling machine to DeveloperSeed"
|
||||
sudo $seedutil enroll DeveloperSeed | Out-Null
|
||||
} else {
|
||||
Write-Host "`t[*] Reseting the seed before requesting stable versions"
|
||||
Write-Host "`t[*] Resetting the seed before requesting stable versions"
|
||||
sudo $seedutil unenroll | Out-Null
|
||||
}
|
||||
|
||||
# Validate there is no softwareupdate at the moment
|
||||
# Validate there is no software update at the moment
|
||||
Test-SoftwareUpdate
|
||||
|
||||
# Validate availability OSVersion
|
||||
@@ -266,36 +267,13 @@ function Install-SoftwareUpdate {
|
||||
[array] $listOfUpdates,
|
||||
[string] $Password
|
||||
)
|
||||
# If an update is happening on macOS 12 or 13 we will use the prepared list of updates, otherwise, we will install all updates.
|
||||
$command = "sw_vers"
|
||||
$guestMacosVersion = Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
if ($guestMacosVersion[1] -match "12") {
|
||||
foreach ($update in $listOfUpdates) {
|
||||
# Filtering updates that contain "Ventura" word
|
||||
if ($update -notmatch "Ventura") {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
} elseif ($guestMacosVersion[1] -match "13") {
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
foreach ($update in $listOfUpdates) {
|
||||
# Filtering updates that contain "Sonoma" word
|
||||
if ($update -notmatch "Sonoma") {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
}
|
||||
# If an update is happening on macOS arm64 we will use the additional tool to install updates.
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
$command = "sudo /usr/sbin/softwareupdate --all --install --restart --verbose"
|
||||
foreach ($update in $listOfUpdates) {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
@@ -348,14 +326,17 @@ function Invoke-WithRetry {
|
||||
[int] $RetryCount = 20,
|
||||
[int] $Seconds = 60
|
||||
)
|
||||
|
||||
while ($RetryCount -gt 0) {
|
||||
if ($Command) {
|
||||
$result = & $Command
|
||||
}
|
||||
try {
|
||||
if ($Command) {
|
||||
$result = & $Command
|
||||
}
|
||||
|
||||
if (& $BreakCondition) {
|
||||
return $result
|
||||
if (& $BreakCondition) {
|
||||
return $result
|
||||
}
|
||||
} catch {
|
||||
Write-Host "`t [!] Error during command execution: $_"
|
||||
}
|
||||
|
||||
$RetryCount--
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
jobs:
|
||||
- job: Image_generation
|
||||
displayName: Image Generation (${{ parameters.image_label }})
|
||||
timeoutInMinutes: 1200
|
||||
pool:
|
||||
name: Mac-Cloud Image Generation
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
|
||||
steps:
|
||||
- pwsh: |
|
||||
$cleanBuildNumber = "$(Build.BuildNumber)" -replace "(.+_unstable)(\.\d+)", '$1'
|
||||
$virtualMachineName = "${cleanBuildNumber}.$(System.JobAttempt)"
|
||||
echo "##vso[task.setvariable variable=VirtualMachineName;]$virtualMachineName"
|
||||
echo "##vso[build.updatebuildnumber]$virtualMachineName"
|
||||
displayName: Update BuildNumber
|
||||
|
||||
- checkout: self
|
||||
clean: true
|
||||
fetchDepth: 1
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Validate contributor permissions'
|
||||
condition: startsWith(variables['Build.SourceBranch'], 'refs/pull/')
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/macos/validate-contributor.ps1
|
||||
pwsh: true
|
||||
arguments: -RepositoryName "$(Build.Repository.Name)" `
|
||||
-AccessToken "$(github-feed-token)" `
|
||||
-SourceBranch "$(Build.SourceBranch)" `
|
||||
-ContributorAllowList "$(CONTRIBUTOR_ALLOWLIST)"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Download custom repository'
|
||||
condition: and(ne(variables['CUSTOM_REPOSITORY_URL'], ''), ne(variables['CUSTOM_REPOSITORY_BRANCH'], ''))
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/download-repo.ps1
|
||||
arguments: -RepoUrl $(CUSTOM_REPOSITORY_URL) `
|
||||
-RepoBranch $(CUSTOM_REPOSITORY_BRANCH)
|
||||
|
||||
- task: DeleteFiles@1
|
||||
displayName: Clean up self-hosted machine
|
||||
inputs:
|
||||
SourceFolder: 'images/macos/provision/log/'
|
||||
RemoveSourceFolder: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Select datastore'
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/macos/select-datastore.ps1
|
||||
arguments: -VMName "$(VirtualMachineName)" `
|
||||
-VIServer "$(vcenter-server-v2)" `
|
||||
-VIUserName "$(vcenter-username-v2)" `
|
||||
-VIPassword '$(vcenter-password-v2)' `
|
||||
-Cluster "$(esxi-cluster-v2)"
|
||||
|
||||
- pwsh: |
|
||||
$SensitiveData = @(
|
||||
'IP address:',
|
||||
'Using ssh communicator to connect:'
|
||||
)
|
||||
|
||||
packer build -on-error=abort `
|
||||
-var="vcenter_server=$(vcenter-server-v2)" `
|
||||
-var="vcenter_username=$(vcenter-username-v2)" `
|
||||
-var='vcenter_password=$(vcenter-password-v2)' `
|
||||
-var="vcenter_datacenter=$(vcenter-datacenter-v2)" `
|
||||
-var="cluster_or_esxi_host=$(esxi-cluster-v2)" `
|
||||
-var="esxi_datastore=$(buildDatastore)" `
|
||||
-var="output_folder=$(output-folder)" `
|
||||
-var="vm_username=$(vm-username)" `
|
||||
-var="vm_password=$(vm-password)" `
|
||||
-var="github_api_pat=$(github_api_pat)" `
|
||||
-var="build_id=$(VirtualMachineName)" `
|
||||
-var="baseimage_name=${{ parameters.base_image_name }}" `
|
||||
-var="xcode_install_storage_url=$(xcode_install_storage_url)" `
|
||||
-var="xcode_install_sas=$(xcode_install_sas)" `
|
||||
-color=false `
|
||||
${{ parameters.template_path }} `
|
||||
| Where-Object {
|
||||
#Filter sensitive data from Packer logs
|
||||
$currentString = $_
|
||||
$sensitiveString = $SensitiveData | Where-Object { $currentString -match $_ }
|
||||
$sensitiveString -eq $null
|
||||
}
|
||||
displayName: 'Build VM'
|
||||
workingDirectory: 'images/macos'
|
||||
env:
|
||||
PACKER_LOG: 1
|
||||
PACKER_LOG_PATH: $(Agent.TempDirectory)/packer-log.txt
|
||||
|
||||
- bash: |
|
||||
echo "Copy software report files"
|
||||
cp -vR "images/image-output/software-report/." "$(Build.ArtifactStagingDirectory)/"
|
||||
|
||||
echo "Put VM name to 'VM_Done_Name' file"
|
||||
echo "$(VirtualMachineName)" > "$(Build.ArtifactStagingDirectory)/VM_Done_Name"
|
||||
displayName: Prepare artifact
|
||||
|
||||
- bash: |
|
||||
cat "$(Build.ArtifactStagingDirectory)/systeminfo.md"
|
||||
displayName: Print markdown software report
|
||||
|
||||
- bash: |
|
||||
cat "$(Build.ArtifactStagingDirectory)/systeminfo.json"
|
||||
displayName: Print json software report
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
ArtifactName: 'Built_VM_Artifacts'
|
||||
displayName: Publish Artifacts
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Print provisioners duration'
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/measure-provisioners-duration.ps1
|
||||
arguments: -PackerLogPath "$(Agent.TempDirectory)/packer-log.txt" `
|
||||
-PrintTopNLongest 25
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Move vm to cold storage and clear datastore tag'
|
||||
condition: always()
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/macos/move-vm.ps1
|
||||
arguments: -VMName "$(VirtualMachineName)" `
|
||||
-TargetDataStore "${{ parameters.target_datastore }}" `
|
||||
-VIServer "$(vcenter-server-v2)" `
|
||||
-VIUserName "$(vcenter-username-v2)" `
|
||||
-VIPassword '$(vcenter-password-v2)' `
|
||||
-CpuCount "$(cpu-count)" `
|
||||
-CoresPerSocketCount "$(cores-per-socket-count)" `
|
||||
-Memory "$(memory)"
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Destroy VM (if build canceled only)'
|
||||
condition: eq(variables['Agent.JobStatus'], 'Canceled')
|
||||
inputs:
|
||||
targetType: 'filePath'
|
||||
filePath: ./images.CI/macos/destroy-vm.ps1
|
||||
arguments: -VMName "$(VirtualMachineName)" `
|
||||
-VIServer "$(vcenter-server-v2)" `
|
||||
-VIUserName "$(vcenter-username-v2)" `
|
||||
-VIPassword '$(vcenter-password-v2)'
|
||||
@@ -1,23 +0,0 @@
|
||||
name: macOS-11_$(date:yyyyMMdd)$(rev:.r)_unstable
|
||||
schedules:
|
||||
- cron: '45 0 * * *'
|
||||
displayName: Daily
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
trigger: none
|
||||
pr:
|
||||
autoCancel: true
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Big Sur'
|
||||
base_image_name: 'clean-macOS-11-380Gb-runner'
|
||||
template_path: 'templates/macOS-11.json'
|
||||
target_datastore: 'ds-image'
|
||||
@@ -1,95 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
This script deletes vm from vCenter
|
||||
|
||||
.PARAMETER VMName
|
||||
VM name to delete (Example "macOS-10.15_20201012.4")
|
||||
|
||||
.PARAMETER VIServer
|
||||
vCenter address (Example "10.0.1.16")
|
||||
|
||||
.PARAMETER VIUserName
|
||||
vCenter username (Example "Administrator")
|
||||
|
||||
.PARAMETER VIPassword
|
||||
vCenter password (Example "12345678")
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VMName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIServer,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIUserName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIPassword
|
||||
)
|
||||
|
||||
# Import helpers module
|
||||
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
|
||||
|
||||
# Connection to a vCenter Server system
|
||||
Connect-VCServer -VIServer $VIServer -VIUserName $VIUserName -VIPassword $VIPassword
|
||||
|
||||
# Check vm clone status
|
||||
$chainId = (Get-VIEvent -Entity $VMName).ChainId
|
||||
if ($chainId)
|
||||
{
|
||||
$task = Get-Task -Status Running | Where-Object { ($_.Name -eq 'CloneVM_Task') -and ($_.ExtensionData.Info.EventChainId -in $chainId) }
|
||||
if ($task)
|
||||
{
|
||||
try
|
||||
{
|
||||
Stop-Task -Task $task -Confirm:$false -ErrorAction Stop
|
||||
Write-Host "The vm '$VMName' clone task has been canceled"
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to cancel the task"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Remove a vm
|
||||
$vm = Get-VM -Name $VMName -ErrorAction SilentlyContinue
|
||||
|
||||
if ($vm)
|
||||
{
|
||||
$vmState = $vm.PowerState
|
||||
if ($vmState -ne "PoweredOff")
|
||||
{
|
||||
try
|
||||
{
|
||||
$null = Stop-VM -VM $vm -Confirm:$false -ErrorAction Stop
|
||||
Write-Host "The vm '$VMName' has been powered off"
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to shutdown '$VMName'"
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Remove-VM -VM $vm -DeletePermanently -Confirm:$false -ErrorAction Stop
|
||||
Write-Host "The vm '$VMName' has been removed"
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to remove '$VMName'"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "VM '$VMName' not found"
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
Helper functions to use in images.CI scripts
|
||||
#>
|
||||
|
||||
Function Connect-VCServer
|
||||
{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[System.String]$VIUserName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[System.String]$VIPassword,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[System.String]$VIServer
|
||||
)
|
||||
|
||||
try
|
||||
{
|
||||
# Preference
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
$global:WarningPreference = 'SilentlyContinue'
|
||||
# Ignore SSL
|
||||
$null = Set-PowerCLIConfiguration -Scope Session -InvalidCertificateAction Ignore -ParticipateInCEIP $false -Confirm:$false -WebOperationTimeoutSeconds 600
|
||||
$securePassword = ConvertTo-SecureString -String $VIPassword -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential($VIUserName, $securePassword)
|
||||
$null = Connect-VIServer -Server $VIServer -Credential $cred -ErrorAction Stop
|
||||
Write-Host "Connection to the vSphere server has been established"
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to connect to the vSphere server"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
This script migrates given VM to another datastore
|
||||
|
||||
.PARAMETER VMName
|
||||
VM name to migrate (Example "macOS-10.15_20201012.4")
|
||||
|
||||
.PARAMETER TargetDataStore
|
||||
Target datastore (Example "ds-image")
|
||||
|
||||
.PARAMETER VIServer
|
||||
vCenter address (Example "10.0.1.16")
|
||||
|
||||
.PARAMETER VIUserName
|
||||
vCenter username (Example "Administrator")
|
||||
|
||||
.PARAMETER VIPassword
|
||||
vCenter password (Example "12345678")
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VMName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$TargetDataStore,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIServer,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIUserName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIPassword,
|
||||
|
||||
[string]$JobStatus,
|
||||
|
||||
[int32]$CpuCount,
|
||||
|
||||
[int32]$CoresPerSocketCount,
|
||||
|
||||
[int64]$Memory
|
||||
)
|
||||
|
||||
# Import helpers module
|
||||
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
|
||||
|
||||
# Connection to a vCenter Server system
|
||||
Connect-VCServer -VIServer $VIServer -VIUserName $VIUserName -VIPassword $VIPassword
|
||||
|
||||
# Clear previously assigned tag with VM Name
|
||||
try {
|
||||
Remove-Tag $VMName -Confirm:$false
|
||||
} catch {
|
||||
Write-Host "Tag with $VMName doesn't exist"
|
||||
}
|
||||
|
||||
$vm = Get-VM $VMName
|
||||
if (($env:AGENT_JOBSTATUS -and $env:AGENT_JOBSTATUS -eq 'Failed') -or ($JobStatus -and $JobStatus -eq 'failure')) {
|
||||
try {
|
||||
if ($vm.PowerState -ne "PoweredOff") {
|
||||
Stop-VM -VM $vm -Confirm:$false -ErrorAction Stop | Out-Null
|
||||
}
|
||||
Set-VM -VM $vm -Name "${VMName}_failed" -Confirm:$false -ErrorAction Stop | Out-Null
|
||||
Write-Host "VM has been successfully powered off and renamed to [${VMName}_failed]"
|
||||
} catch {
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to power off and rename VM '$VMName'"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
Move-VM -Vm $vm -Datastore $TargetDataStore -ErrorAction Stop | Out-Null
|
||||
Write-Host "VM has been moved successfully to target datastore '$TargetDataStore'"
|
||||
} catch {
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to move VM '$VMName' to target datastore '$TargetDataStore'"
|
||||
exit 1
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
This script selects local datastore based on the following rules:
|
||||
|
||||
- Name starts with ds-local-Datastore
|
||||
- Datastore FreespaceGB > 400 Gb
|
||||
- VM count on the datastore < 2
|
||||
|
||||
.PARAMETER VIServer
|
||||
vCenter address (Example "10.0.1.16")
|
||||
|
||||
.PARAMETER VIUserName
|
||||
vCenter username (Example "Administrator")
|
||||
|
||||
.PARAMETER VIPassword
|
||||
vCenter password (Example "12345678")
|
||||
#>
|
||||
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VMName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIServer,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIUserName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIPassword,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$Cluster,
|
||||
|
||||
[string]$TagCategory = "Busy"
|
||||
)
|
||||
|
||||
# Import helpers module
|
||||
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
|
||||
|
||||
function Select-DataStore {
|
||||
param (
|
||||
[string]$VMName,
|
||||
[string]$TagCategory,
|
||||
[string]$TemplateDatastore = "ds-local-Datastore-*",
|
||||
[string]$Cluster,
|
||||
[int]$ThresholdInGb = 400,
|
||||
[int]$VMCount = 2,
|
||||
[int]$Retries = 5
|
||||
)
|
||||
|
||||
# 1. Name starts with ds-local-Datastore
|
||||
# 2. FreespaceGB > 400 Gb
|
||||
# 3. Choose a datastore with the minimal VM count < 2
|
||||
|
||||
Write-Host "Start Datastore selection process..."
|
||||
$clusterHosts = Get-Cluster -Name $Cluster | Get-VMHost
|
||||
$availableClusterDatastores = $clusterHosts | Get-Datastore -Name $TemplateDatastore | Where-Object -Property State -eq "Available"
|
||||
$availableDatastores = $availableClusterDatastores `
|
||||
| Where-Object { $_.FreeSpaceGB -ge $thresholdInGb } `
|
||||
| Where-Object {
|
||||
$vmOnDatastore = @((Get-ChildItem -Path $_.DatastoreBrowserPath).Name -notmatch '(^\.|vmkdump)').Count
|
||||
$vmOnDatastore -lt $vmCount } `
|
||||
| Group-Object -Property { $vmOnDatastore }
|
||||
|
||||
$datastore = $availableDatastores | Select-Object @{n="VmCount";e={$_.Name}},@{n="DatastoreName";e={$_.Group | Get-Random}} -First 1
|
||||
$buildDatastore = $datastore.DatastoreName
|
||||
|
||||
$tag = Get-Tag -Category $TagCategory -Name $VMName -ErrorAction Ignore
|
||||
if (-not $tag)
|
||||
{
|
||||
$tag = New-Tag -Name $VMName -Category $TagCategory
|
||||
}
|
||||
|
||||
New-TagAssignment -Tag $tag -Entity $buildDatastore | Out-Null
|
||||
|
||||
# Wait for 60 seconds to check if any other tags are assigned to the same datastore
|
||||
Start-Sleep -Seconds 60
|
||||
# If there are no datastores with 0 VMs, take a datastore with 1 VM (index 1 if datastore has 0 VMs and 2 if 1 VM)
|
||||
$index = 1 + [int]$datastore.VmCount
|
||||
$tagAssignments = (Get-TagAssignment -Entity $buildDatastore).Tag.Name | Select-Object -First $index
|
||||
$isAllow = $tagAssignments -contains $VMName
|
||||
|
||||
if ($isAllow)
|
||||
{
|
||||
Write-Host "Datastore selected successfully"
|
||||
Write-Host "##vso[task.setvariable variable=buildDatastore;issecret=true]$buildDatastore"
|
||||
return
|
||||
}
|
||||
|
||||
# Remove the tag if datastore wasn't selected
|
||||
Remove-Tag $tag -Confirm:$false
|
||||
|
||||
$retries--
|
||||
if ($retries -le 0)
|
||||
{
|
||||
Write-Host "##vso[task.LogIssue type=error;]No datastores found for the condition"
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "Datastore select failed, $retries left"
|
||||
Select-DataStore -VMName $VMName -Cluster $Cluster -TagCategory $TagCategory -Retries $retries
|
||||
}
|
||||
|
||||
# Connection to a vCenter Server system
|
||||
Connect-VCServer -VIServer $VIServer -VIUserName $VIUserName -VIPassword $VIPassword
|
||||
|
||||
# Get a target datastore for current deployment
|
||||
Select-DataStore -VMName $VMName -Cluster $Cluster -TagCategory $TagCategory
|
||||
@@ -1,73 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
This script sets resources for VM
|
||||
|
||||
.PARAMETER VMName
|
||||
VM name to resize (Example "macOS-10.15_20201012.4")
|
||||
|
||||
.PARAMETER VIServer
|
||||
vCenter address (Example "10.0.1.16")
|
||||
|
||||
.PARAMETER VIUserName
|
||||
vCenter username (Example "Administrator")
|
||||
|
||||
.PARAMETER VIPassword
|
||||
vCenter password (Example "12345678")
|
||||
|
||||
.PARAMETER CpuCount
|
||||
Target number of CPUs (Example "3")
|
||||
|
||||
.PARAMETER CoresPerSocketCount
|
||||
Target number of cores per socket (Example "3")
|
||||
|
||||
.PARAMETER Memory
|
||||
Target amount of memory in MB (Example "14336")
|
||||
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VMName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIServer,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIUserName,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$VIPassword,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[int32]$CpuCount,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[int32]$CoresPerSocketCount,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[int64]$Memory
|
||||
)
|
||||
|
||||
# Import helpers module
|
||||
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
|
||||
|
||||
# Connection to a vCenter Server system
|
||||
Connect-VCServer -VIServer $VIServer -VIUserName $VIUserName -VIPassword $VIPassword
|
||||
|
||||
$vm = Get-VM $VMName
|
||||
try {
|
||||
Write-Host "Change CPU count to $CpuCount, cores count to $CoresPerSocketCount, amount of RAM to $Memory"
|
||||
$vm | Set-VM -NumCPU $CpuCount -CoresPerSocket $CoresPerSocketCount -MemoryMB $Memory -Confirm:$false -ErrorAction Stop | Out-Null
|
||||
} catch {
|
||||
Write-Host "##vso[task.LogIssue type=error;]Failed to change specs for VM '$VMName'"
|
||||
exit 1
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
param(
|
||||
[Parameter(Mandatory)] [string] $RepositoryName,
|
||||
[Parameter(Mandatory)] [string] $AccessToken,
|
||||
[Parameter(Mandatory)] [string] $SourceBranch,
|
||||
[Parameter(Mandatory)] [string] $ContributorAllowList
|
||||
)
|
||||
|
||||
function Build-AuthHeader {
|
||||
param(
|
||||
[Parameter(Mandatory)] [string] $AccessToken
|
||||
)
|
||||
|
||||
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("'':${AccessToken}"))
|
||||
return "Basic ${base64AuthInfo}"
|
||||
}
|
||||
|
||||
function Get-PullRequest {
|
||||
param(
|
||||
[Parameter(Mandatory)] [string] $RepositoryName,
|
||||
[Parameter(Mandatory)] [string] $AccessToken,
|
||||
[Parameter(Mandatory)] [UInt32] $PullRequestNumber
|
||||
)
|
||||
|
||||
$requestUrl = "https://api.github.com/repos/$RepositoryName/pulls/$PullRequestNumber"
|
||||
$authHeader = Build-AuthHeader -AccessToken $AccessToken
|
||||
|
||||
$params = @{
|
||||
Method = "GET"
|
||||
ContentType = "application/json"
|
||||
Uri = $requestUrl
|
||||
Headers = @{ Authorization = $authHeader }
|
||||
}
|
||||
|
||||
return Invoke-RestMethod @params
|
||||
}
|
||||
|
||||
function Validate-ContributorPermissions {
|
||||
param(
|
||||
[Parameter(Mandatory)] [string] $ContributorAllowList,
|
||||
[Parameter(Mandatory)] [string] $ContributorName
|
||||
)
|
||||
|
||||
$allowedContributors = $ContributorAllowList.Split(",").Trim()
|
||||
$validСontributor = $allowedContributors | Where-Object { $_ -eq $ContributorName } `
|
||||
| Select-Object -First 1
|
||||
|
||||
if (-not $validСontributor) {
|
||||
Write-Host "Failed to start this build. '$ContributorName' is an unknown contributor"
|
||||
Write-Host "Please add '$ContributorName' to the allowed list to run builds"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
$pullRequestNumber = $SourceBranch.Split("/")[2]
|
||||
|
||||
$pullRequestInfo = Get-PullRequest -RepositoryName $RepositoryName `
|
||||
-AccessToken $AccessToken `
|
||||
-PullRequestNumber $pullRequestNumber
|
||||
|
||||
$contributorName = $pullRequestInfo.user.login
|
||||
|
||||
Validate-ContributorPermissions -ContributorAllowList $ContributorAllowList `
|
||||
-ContributorName $contributorName
|
||||
Regular → Executable
Regular → Executable
@@ -11,7 +11,7 @@ LICENSE_BLOCK
|
||||
USERNAME="${1}"
|
||||
PW="${2}"
|
||||
|
||||
function kcpasswordEncode {
|
||||
kcpasswordEncode() {
|
||||
#ascii string
|
||||
local thisString="${1}"
|
||||
local i
|
||||
|
||||
@@ -23,7 +23,7 @@ change_framework_version() {
|
||||
echo "Select $framework $version"
|
||||
|
||||
local countDigit=$(echo "${version}" | grep -o "\." | grep -c "\.")
|
||||
|
||||
|
||||
if [[ countDigit -gt 1 ]]; then
|
||||
echo "[WARNING] It is not recommended to specify the exact framework version because your build can be broken with the next patch update. Consider using "major.minor" only format."
|
||||
fi
|
||||
@@ -31,7 +31,7 @@ change_framework_version() {
|
||||
local framework_path=$(get_framework_path "$framework")
|
||||
|
||||
if [ -d "${framework_path}/${version}" ]; then
|
||||
sudo rm -f "${framework_path}/Current"
|
||||
sudo rm -f ${framework_path}/Current
|
||||
sudo ln -s "${framework_path}/${version}" "${framework_path}/Current"
|
||||
else
|
||||
echo "Invalid framework version ${framework_path}/${version}"
|
||||
@@ -46,7 +46,7 @@ for arg in "$@"; do
|
||||
case $key in
|
||||
--mono | --ios | --android | --mac) change_framework_version $key $value ;;
|
||||
*)
|
||||
echo "Invalid parameter <${key}>"
|
||||
echo "Invalid parameter <${key}>"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,357 +0,0 @@
|
||||
# macOS 11
|
||||
- OS Version: macOS 11.7.10 (20G1427)
|
||||
- Kernel Version: Darwin 20.6.0
|
||||
- Image Version: 20231030.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 6.0.416, 7.0.102, 7.0.202, 7.0.306, 7.0.403
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 13.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 10 (Homebrew GCC 10.5.0) - available by `gcc-10` alias
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GNU Fortran 10 (Homebrew GCC 10.5.0) - available by `gfortran-10` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- Julia 1.9.3
|
||||
- Kotlin 1.9.10-release-459
|
||||
- Go 1.20.10
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- MSBuild 16.10.1.51301 (Mono 6.12.0.188)
|
||||
- NVM 0.39.5
|
||||
- NVM - Cached node versions: 14.21.3, 16.20.2, 18.18.2, 20.9.0
|
||||
- Perl 5.38.0
|
||||
- PHP 8.2.12
|
||||
- Python 2.7.18
|
||||
- Python3 3.12.0
|
||||
- R 4.3.1
|
||||
- Ruby 2.7.8p225
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.21
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.2
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.17
|
||||
- Miniconda 23.9.0
|
||||
- NPM 9.8.1
|
||||
- NuGet 6.3.1.1
|
||||
- Pip 20.3.4 (python 2.7)
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.21
|
||||
- Vcpkg 2023 (build from commit 3715d743a)
|
||||
- Yarn 1.22.19
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | ---------------------- |
|
||||
| CONDA | /usr/local/miniconda |
|
||||
| VCPKG_INSTALLATION_ROOT | /usr/local/share/vcpkg |
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Sbt 1.9.7
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.36.0
|
||||
- azcopy 10.21.1
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- bsdtar 3.3.2 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Git 2.42.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.37.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- helm v3.13.1+g3547a4b
|
||||
- ImageMagick 7.1.1-21
|
||||
- jq 1.7
|
||||
- mongo 5.0.21
|
||||
- mongod 5.0.21
|
||||
- Newman 6.0.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- PostgreSQL 14.9 (Homebrew)
|
||||
- psql (PostgreSQL) 14.9 (Homebrew)
|
||||
- Sox 14.4.2
|
||||
- Subversion (SVN) 1.14.2
|
||||
- Switchaudio-osx 1.2.2
|
||||
- yq 4.35.2
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- Aliyun CLI 3.0.184
|
||||
- App Center CLI 2.14.0
|
||||
- AWS CLI 2.13.30
|
||||
- AWS SAM CLI 1.99.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.53.1
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.22.6
|
||||
- Cabal 3.10.1.0
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.1
|
||||
- Fastlane 2.216.0
|
||||
- GHC 9.6.2
|
||||
- GHCup 0.1.19.4
|
||||
- Jazzy 0.14.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.8
|
||||
- Swig 4.1.1
|
||||
- Xcode Command Line Tools 13.2.0.0.1.1638488800
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.48.0
|
||||
- Yamllint 1.32.0
|
||||
|
||||
### Browsers
|
||||
- Safari 16.6.1 (16615.3.12.11.5)
|
||||
- SafariDriver 16.6.1 (16615.3.12.11.5)
|
||||
- Google Chrome 118.0.5993.117
|
||||
- Google Chrome for Testing 118.0.5993.70
|
||||
- ChromeDriver 118.0.5993.70
|
||||
- Microsoft Edge 118.0.2088.76
|
||||
- Microsoft Edge WebDriver 118.0.2088.76
|
||||
- Mozilla Firefox 119.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.14.1
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.392+8 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0.LTS | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 2.5.9
|
||||
- 2.6.10
|
||||
- 2.7.8
|
||||
- 3.0.6
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
|
||||
#### Python
|
||||
- 3.7.17
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
|
||||
#### Node.js
|
||||
- 14.21.3
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.9.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.10
|
||||
- 1.21.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Rustup 1.26.0
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.68.1
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.13.1
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.16
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 10.4.1
|
||||
- MarkdownPS: 1.9
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceStatus | ListenPort |
|
||||
| ----- | ------- | ------------------------------- | ------------- | ---------- |
|
||||
| httpd | 2.4.58 | /usr/local/etc/httpd/httpd.conf | none | 80 |
|
||||
| nginx | 1.25.3 | /usr/local/etc/nginx/nginx.conf | none | 80 |
|
||||
|
||||
### Xamarin
|
||||
|
||||
#### Visual Studio for Mac
|
||||
| Version | Build | Path |
|
||||
| -------------- | ---------- | ------------------------------------ |
|
||||
| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app |
|
||||
| 2022 (default) | 17.6.6.408 | /Applications/Visual Studio.app |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
To use Visual Studio 2019 by default rename the app:
|
||||
mv "/Applications/Visual Studio.app" "/Applications/Visual Studio 2022.app"
|
||||
mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
```
|
||||
|
||||
#### Xamarin bundles
|
||||
| symlink | Xamarin.Mono | Xamarin.iOS | Xamarin.Mac | Xamarin.Android |
|
||||
| ----------------- | ------------ | ----------- | ----------- | --------------- |
|
||||
| 6_12_16 | 6.12 | 15.8 | 8.8 | 12.2 |
|
||||
| 6_12_15 | 6.12 | 15.8 | 8.8 | 12.1 |
|
||||
| 6_12_14 | 6.12 | 15.8 | 8.8 | 12.0 |
|
||||
| 6_12_13 | 6.12 | 15.6 | 8.6 | 12.0 |
|
||||
| 6_12_12 (default) | 6.12 | 15.4 | 8.4 | 12.0 |
|
||||
| 6_12_11 | 6.12 | 15.2 | 8.2 | 12.0 |
|
||||
| 6_12_10 | 6.12 | 15.0 | 7.14 | 11.3 |
|
||||
| 6_12_9 | 6.12 | 14.20 | 7.14 | 11.3 |
|
||||
| 6_12_8 | 6.12 | 14.16 | 7.10 | 11.2 |
|
||||
| 6_12_7 | 6.12 | 14.14 | 7.8 | 11.2 |
|
||||
| 6_12_6 | 6.12 | 14.10 | 7.4 | 11.1 |
|
||||
| 6_12_5 | 6.12 | 14.8 | 7.2 | 11.1 |
|
||||
| 6_12_4 | 6.12 | 14.6 | 7.0 | 11.1 |
|
||||
| 6_12_3 | 6.12 | 14.4 | 6.22 | 11.1 |
|
||||
| 6_12_2 | 6.12 | 14.2 | 6.20 | 11.0 |
|
||||
| 6_12_1 | 6.12 | 14.0 | 6.20 | 11.0 |
|
||||
| 6_12_0 | 6.12 | 13.20 | 6.20 | 11.0 |
|
||||
|
||||
#### Unit Test Framework
|
||||
- NUnit 3.6.1
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | -------- | ------------------------------ |
|
||||
| 13.2.1 (default) | 13C100 | /Applications/Xcode_13.2.1.app |
|
||||
| 13.1 | 13A1030d | /Applications/Xcode_13.1.app |
|
||||
| 13.0 | 13A233 | /Applications/Xcode_13.0.app |
|
||||
| 12.5.1 | 12E507 | /Applications/Xcode_12.5.1.app |
|
||||
| 12.4 | 12D4e | /Applications/Xcode_12.4.app |
|
||||
| 11.7 | 11E801a | /Applications/Xcode_11.7.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
- xcversion 2.8.1
|
||||
- Nomad CLI 0.0.2
|
||||
- Nomad shenzhen CLI 0.14.3
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ----------------------- | -------------------- | ------------- |
|
||||
| macOS 10.15 | macosx10.15 | 11.7 |
|
||||
| macOS 11.1 | macosx11.1 | 12.4 |
|
||||
| macOS 11.3 | macosx11.3 | 12.5.1, 13.0 |
|
||||
| macOS 12.0 | macosx12.0 | 13.1 |
|
||||
| macOS 12.1 | macosx12.1 | 13.2.1 |
|
||||
| iOS 13.7 | iphoneos13.7 | 11.7 |
|
||||
| iOS 14.4 | iphoneos14.4 | 12.4 |
|
||||
| iOS 14.5 | iphoneos14.5 | 12.5.1 |
|
||||
| iOS 15.0 | iphoneos15.0 | 13.0, 13.1 |
|
||||
| iOS 15.2 | iphoneos15.2 | 13.2.1 |
|
||||
| Simulator - iOS 13.7 | iphonesimulator13.7 | 11.7 |
|
||||
| Simulator - iOS 14.4 | iphonesimulator14.4 | 12.4 |
|
||||
| Simulator - iOS 14.5 | iphonesimulator14.5 | 12.5.1 |
|
||||
| Simulator - iOS 15.0 | iphonesimulator15.0 | 13.0, 13.1 |
|
||||
| Simulator - iOS 15.2 | iphonesimulator15.2 | 13.2.1 |
|
||||
| tvOS 13.4 | appletvos13.4 | 11.7 |
|
||||
| tvOS 14.3 | appletvos14.3 | 12.4 |
|
||||
| tvOS 14.5 | appletvos14.5 | 12.5.1 |
|
||||
| tvOS 15.0 | appletvos15.0 | 13.0, 13.1 |
|
||||
| tvOS 15.2 | appletvos15.2 | 13.2.1 |
|
||||
| Simulator - tvOS 13.4 | appletvsimulator13.4 | 11.7 |
|
||||
| Simulator - tvOS 14.3 | appletvsimulator14.3 | 12.4 |
|
||||
| Simulator - tvOS 14.5 | appletvsimulator14.5 | 12.5.1 |
|
||||
| Simulator - tvOS 15.0 | appletvsimulator15.0 | 13.0, 13.1 |
|
||||
| Simulator - tvOS 15.2 | appletvsimulator15.2 | 13.2.1 |
|
||||
| watchOS 6.2 | watchos6.2 | 11.7 |
|
||||
| watchOS 7.2 | watchos7.2 | 12.4 |
|
||||
| watchOS 7.4 | watchos7.4 | 12.5.1 |
|
||||
| watchOS 8.0 | watchos8.0 | 13.0, 13.1 |
|
||||
| watchOS 8.3 | watchos8.3 | 13.2.1 |
|
||||
| Simulator - watchOS 6.2 | watchsimulator6.2 | 11.7 |
|
||||
| Simulator - watchOS 7.2 | watchsimulator7.2 | 12.4 |
|
||||
| Simulator - watchOS 7.4 | watchsimulator7.4 | 12.5.1 |
|
||||
| Simulator - watchOS 8.0 | watchsimulator8.0 | 13.0, 13.1 |
|
||||
| Simulator - watchOS 8.3 | watchsimulator8.3 | 13.2.1 |
|
||||
| DriverKit 19.0 | driverkit.macosx19.0 | 11.7 |
|
||||
| DriverKit 20.2 | driverkit.macosx20.2 | 12.4 |
|
||||
| DriverKit 20.4 | driverkit.macosx20.4 | 12.5.1, 13.0 |
|
||||
| DriverKit 21.0.1 | driverkit21.0.1 | 13.1 |
|
||||
| DriverKit 21.2 | driverkit21.2 | 13.2.1 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 13.7 | 11.7 | iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (7th generation)<br>iPad Air (3rd generation)<br>iPad Pro (11-inch) (2nd generation)<br>iPad Pro (12.9-inch) (4th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 14.4 | 12.4 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (7th generation)<br>iPad (8th generation)<br>iPad Air (3rd generation)<br>iPad Air (4th generation)<br>iPad Pro (11-inch) (2nd generation)<br>iPad Pro (12.9-inch) (4th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 14.5 | 12.5.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (7th generation)<br>iPad (8th generation)<br>iPad Air (3rd generation)<br>iPad Air (4th generation)<br>iPad Pro (11-inch) (2nd generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.0 | 13.0<br>13.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (7th generation)<br>iPad (8th generation)<br>iPad (9th generation)<br>iPad Air (3rd generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (2nd generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.2 | 13.2.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (7th generation)<br>iPad (8th generation)<br>iPad (9th generation)<br>iPad Air (3rd generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (2nd generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| tvOS 13.4 | 11.7 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (at 1080p) |
|
||||
| tvOS 14.3 | 12.4 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (at 1080p) |
|
||||
| tvOS 14.5 | 12.5.1 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.0 | 13.0<br>13.1 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.2 | 13.2.1 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| watchOS 6.2 | 11.7 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<br>Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm |
|
||||
| watchOS 7.2 | 12.4 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<br>Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm |
|
||||
| watchOS 7.4 | 12.5.1 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<br>Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm |
|
||||
| watchOS 8.0 | 13.0<br>13.1 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<br>Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 8.3 | 13.2.1 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<br>Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2<br>32.0.0<br>31.0.0<br>30.0.0 30.0.1 30.0.2 30.0.3<br>29.0.0 29.0.1 29.0.2 29.0.3<br>28.0.0 28.0.1 28.0.2 28.0.3<br>27.0.0 27.0.1 27.0.2 27.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1)<br>android-30 (rev 3)<br>android-29 (rev 5)<br>android-28 (rev 6)<br>android-27 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.10.2<br>3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 23.2.8568313<br>24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
| SDK Patch Applier v4 | 1 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- libXext 1.3.5
|
||||
- libXft 2.3.8
|
||||
- Tcl/Tk 8.6.13_5
|
||||
- Zlib 1.3
|
||||
|
||||
+177
-168
@@ -1,51 +1,57 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
| [[Macos 13 and 14] Android NDK versions <=25 will be removed from images on October 07,2024](https://github.com/actions/runner-images/issues/10614) |
|
||||
| [[Macos 13 and 14] Go version 1.20.0 will be removed on October 07,2024.](https://github.com/actions/runner-images/issues/10612) |
|
||||
***
|
||||
# macOS 12
|
||||
- OS Version: macOS 12.7 (21G816)
|
||||
- OS Version: macOS 12.7.6 (21H1320)
|
||||
- Kernel Version: Darwin 21.6.0
|
||||
- Image Version: 20231029.1
|
||||
- Image Version: 20240926.174
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 6.0.416, 7.0.102, 7.0.202, 7.0.306, 7.0.403
|
||||
- .NET Core SDK: 6.0.425, 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.402
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.2.0) - available by `gcc-13` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.3
|
||||
- Kotlin 1.9.10-release-459
|
||||
- Go 1.20.10
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0) - available by `gfortran-14` alias
|
||||
- Julia 1.10.5
|
||||
- Kotlin 2.0.20-release-360
|
||||
- Go 1.21.13
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Node.js 18.20.4
|
||||
- MSBuild 16.10.1.51301 (Mono 6.12.0.188)
|
||||
- NVM 0.39.5
|
||||
- NVM - Cached node versions: 14.21.3, 16.20.2, 18.18.2, 20.9.0
|
||||
- Perl 5.38.0
|
||||
- PHP 8.2.12
|
||||
- NVM 0.39.7
|
||||
- NVM - Cached node versions: 16.20.2, 18.20.4, 20.17.0
|
||||
- Perl 5.38.2
|
||||
- PHP 8.3.11
|
||||
- Python 2.7.18
|
||||
- Python3 3.12.0
|
||||
- R 4.3.1
|
||||
- Ruby 3.0.6p216
|
||||
- Python3 3.12.6
|
||||
- R 4.4.1
|
||||
- Ruby 3.0.7p220
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.21
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.2
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.17
|
||||
- Miniconda 23.9.0
|
||||
- NPM 9.8.1
|
||||
- Bundler 2.5.20
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.15.2
|
||||
- Composer 2.7.9
|
||||
- Homebrew 4.3.24
|
||||
- Miniconda 24.7.1
|
||||
- NPM 10.7.0
|
||||
- NuGet 6.3.1.1
|
||||
- Pip 20.3.4 (python 2.7)
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.21
|
||||
- Vcpkg 2023 (build from commit 06c79a9af)
|
||||
- Yarn 1.22.19
|
||||
- Pip3 24.2 (python 3.12)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.20
|
||||
- Vcpkg 2024 (build from commit 3d8959985)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -54,78 +60,80 @@
|
||||
| VCPKG_INSTALLATION_ROOT | /usr/local/share/vcpkg |
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Sbt 1.9.7
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.10.2
|
||||
- Sbt 1.10.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.36.0
|
||||
- azcopy 10.21.1
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.26.0
|
||||
- bazel 7.3.1
|
||||
- bazelisk 1.21.0
|
||||
- bsdtar 3.5.1 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Git 2.42.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.37.0
|
||||
- Curl 8.10.1
|
||||
- Git 2.46.2
|
||||
- Git LFS 3.5.1
|
||||
- GitHub CLI 2.57.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- ImageMagick 7.1.1-21
|
||||
- jq 1.7
|
||||
- mongo 5.0.21
|
||||
- mongod 5.0.21
|
||||
- GNU Wget 1.24.5
|
||||
- gpg (GnuPG) 2.4.5
|
||||
- ImageMagick 7.1.1-38
|
||||
- jq 1.7.1
|
||||
- mongo 5.0.29
|
||||
- mongod 5.0.29
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- PostgreSQL 14.9 (Homebrew)
|
||||
- psql (PostgreSQL) 14.9 (Homebrew)
|
||||
- PostgreSQL 14.13 (Homebrew)
|
||||
- psql (PostgreSQL) 14.13 (Homebrew)
|
||||
- Sox 14.4.2
|
||||
- Subversion (SVN) 1.14.2
|
||||
- Subversion (SVN) 1.14.3
|
||||
- Switchaudio-osx 1.2.2
|
||||
- Vagrant 2.4.0
|
||||
- VirtualBox 7.0.12r159484
|
||||
- yq 4.35.2
|
||||
- zstd 1.5.5
|
||||
- Vagrant 2.4.1
|
||||
- VirtualBox 6.1.38r153438
|
||||
- yq 4.44.3
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- App Center CLI 2.14.0
|
||||
- AWS CLI 2.13.30
|
||||
- AWS SAM CLI 1.99.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.53.1
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.22.6
|
||||
- Cabal 3.6.2.0
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.1
|
||||
- Colima 0.5.6
|
||||
- Fastlane 2.216.0
|
||||
- GHC 9.8.1
|
||||
- GHCup 0.1.19.4
|
||||
- Jazzy 0.14.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.8
|
||||
- Swig 4.1.1
|
||||
- App Center CLI 3.0.1
|
||||
- AWS CLI 2.17.59
|
||||
- AWS SAM CLI 1.124.0
|
||||
- AWS Session Manager CLI 1.2.650.0
|
||||
- Azure CLI 2.64.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.30.23
|
||||
- Cabal 3.10.3.0
|
||||
- Cmake 3.30.3
|
||||
- CodeQL Action Bundle 2.19.0
|
||||
- Colima 0.7.5
|
||||
- Fastlane 2.222.0
|
||||
- GHC 9.10.1
|
||||
- GHCup 0.1.30.0
|
||||
- Jazzy 0.15.2
|
||||
- Stack 3.1.1
|
||||
- SwiftFormat 0.54.5
|
||||
- Swig 4.2.1
|
||||
- Xcbeautify 1.6.0
|
||||
- Xcode Command Line Tools 14.2.0.0.1.1668646533
|
||||
- Xcodes 1.5.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.53.0
|
||||
- Yamllint 1.32.0
|
||||
- Yamllint 1.35.1
|
||||
|
||||
### Browsers
|
||||
- Safari 17.0 (17616.1.27.111.22)
|
||||
- SafariDriver 17.0 (17616.1.27.111.22)
|
||||
- Google Chrome 118.0.5993.117
|
||||
- Google Chrome for Testing 118.0.5993.70
|
||||
- ChromeDriver 118.0.5993.70
|
||||
- Microsoft Edge 118.0.2088.76
|
||||
- Microsoft Edge WebDriver 118.0.2088.76
|
||||
- Mozilla Firefox 119.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.14.1
|
||||
- Safari 17.6 (17618.3.11.11.7)
|
||||
- SafariDriver 17.6 (17618.3.11.11.7)
|
||||
- Google Chrome 129.0.6668.71
|
||||
- Google Chrome for Testing 129.0.6668.70
|
||||
- ChromeDriver 129.0.6668.70
|
||||
- Microsoft Edge 129.0.2792.52
|
||||
- Microsoft Edge WebDriver 129.0.2792.46
|
||||
- Mozilla Firefox 130.0.1
|
||||
- geckodriver 0.35.0
|
||||
- Selenium server 4.25.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -135,82 +143,83 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.392+8 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0.LTS | JAVA_HOME_21_X64 |
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 8.0.422+5.1 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.24+8 | JAVA_HOME_11_X64 |
|
||||
| 17.0.12+7 | JAVA_HOME_17_X64 |
|
||||
| 21.0.4+7.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 2.7.8
|
||||
- 3.0.6
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 2.7.18 [PyPy 7.3.17]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.14 [PyPy 7.3.17]
|
||||
|
||||
#### Ruby
|
||||
- 3.0.7
|
||||
- 3.1.6
|
||||
- 3.2.5
|
||||
- 3.3.5
|
||||
|
||||
#### Python
|
||||
- 3.7.17
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.9.20
|
||||
- 3.10.15
|
||||
- 3.11.9
|
||||
- 3.12.6
|
||||
|
||||
#### Node.js
|
||||
- 14.21.3
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.9.0
|
||||
- 18.20.4
|
||||
- 20.17.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.10
|
||||
- 1.21.3
|
||||
- 1.20.14
|
||||
- 1.21.13
|
||||
- 1.22.7
|
||||
- 1.23.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Rustup 1.26.0
|
||||
- Cargo 1.81.0
|
||||
- Rust 1.81.0
|
||||
- Rustdoc 1.81.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.68.1
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.13.1
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Bindgen 0.70.1
|
||||
- Cargo-audit 0.20.1
|
||||
- Cargo-outdated 0.15.0
|
||||
- Cbindgen 0.27.0
|
||||
- Clippy 0.1.81
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.16
|
||||
- PowerShell 7.4.5
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 10.4.1
|
||||
- MarkdownPS: 1.9
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
- Az: 12.3.0
|
||||
- MarkdownPS: 1.10
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.22.0
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceStatus | ListenPort |
|
||||
| ----- | ------- | ------------------------------- | ------------- | ---------- |
|
||||
| httpd | 2.4.58 | /usr/local/etc/httpd/httpd.conf | none | 80 |
|
||||
| nginx | 1.25.3 | /usr/local/etc/nginx/nginx.conf | none | 80 |
|
||||
| httpd | 2.4.62 | /usr/local/etc/httpd/httpd.conf | none | 80 |
|
||||
| nginx | 1.27.1 | /usr/local/etc/nginx/nginx.conf | none | 80 |
|
||||
|
||||
### Xamarin
|
||||
|
||||
#### Visual Studio for Mac
|
||||
| Version | Build | Path |
|
||||
| -------------- | ---------- | ------------------------------------ |
|
||||
| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app |
|
||||
| 2022 (default) | 17.6.6.408 | /Applications/Visual Studio.app |
|
||||
| Version | Build | Path |
|
||||
| -------------- | ----------- | ------------------------------------ |
|
||||
| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app |
|
||||
| 2022 (default) | 17.6.14.413 | /Applications/Visual Studio.app |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
@@ -222,6 +231,7 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
#### Xamarin bundles
|
||||
| symlink | Xamarin.Mono | Xamarin.iOS | Xamarin.Mac | Xamarin.Android |
|
||||
| ----------------- | ------------ | ----------- | ----------- | --------------- |
|
||||
| 6_12_25 | 6.12 | 16.4 | 9.3 | 13.2 |
|
||||
| 6_12_24 | 6.12 | 16.2 | 9.1 | 13.2 |
|
||||
| 6_12_23 | 6.12 | 16.2 | 9.1 | 13.1 |
|
||||
| 6_12_22 | 6.12 | 16.1 | 9.0 | 13.1 |
|
||||
@@ -305,40 +315,39 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ----------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 15.0 | 13.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.2 | 13.2.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.4 | 13.3.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.5 | 13.4.1 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.0 | 14.0.1 | iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.1 | 14.1 | iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.2 | 14.2 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro (9.7-inch) |
|
||||
| tvOS 15.0 | 13.1 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.2 | 13.2.1 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.4 | 13.3.1<br>13.4.1 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 16.0 | 13.1<br>13.2.1<br>13.3.1<br>13.4.1<br>14.0.1<br>14.1<br>14.2 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 16.1 | 13.1<br>13.2.1<br>13.3.1<br>13.4.1<br>14.0.1<br>14.1<br>14.2 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| watchOS 8.0 | 13.1 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 8.3 | 13.2.1 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 8.5 | 13.3.1<br>13.4.1 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 9.0 | 13.1<br>13.2.1<br>13.3.1<br>13.4.1<br>14.0.1<br>14.1<br>14.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.1 | 13.1<br>13.2.1<br>13.3.1<br>13.4.1<br>14.0.1<br>14.1<br>14.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| OS | Simulators |
|
||||
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 15.0 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.2 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.4 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 15.5 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.0 | iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.1 | iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro (9.7-inch) |
|
||||
| iOS 16.2 | iPod touch (7th generation)<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPhone 12<br>iPhone 12 mini<br>iPhone 12 Pro<br>iPhone 12 Pro Max<br>iPhone 13<br>iPhone 13 mini<br>iPhone 13 Pro<br>iPhone 13 Pro Max<br>iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 8<br>iPhone 8 Plus<br>iPhone SE (2nd generation)<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (9th generation)<br>iPad Air (4th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (3rd generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (5th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro (9.7-inch) |
|
||||
| tvOS 15.0 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.2 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 15.4 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 16.0 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (2nd generation)<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p)<br>Apple TV 4K (at 1080p) (2nd generation) |
|
||||
| watchOS 8.0 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 8.3 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 8.5 | Apple Watch Series 5 - 40mm<br>Apple Watch Series 5 - 44mm<br>Apple Watch Series 6 - 40mm<br>Apple Watch Series 6 - 44mm<br>Apple Watch Series 7 - 41mm<br>Apple Watch Series 7 - 45mm |
|
||||
| watchOS 9.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2<br>32.0.0<br>31.0.0<br>30.0.0 30.0.1 30.0.2 30.0.3<br>29.0.0 29.0.1 29.0.2 29.0.3<br>28.0.0 28.0.1 28.0.2 28.0.3<br>27.0.0 27.0.1 27.0.2 27.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1)<br>android-30 (rev 3)<br>android-29 (rev 5)<br>android-28 (rev 6)<br>android-27 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 23.2.8568313<br>24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
| SDK Patch Applier v4 | 1 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 35.1.21 |
|
||||
| Android SDK Build-tools | 35.0.0<br>34.0.0<br>33.0.0 33.0.1 33.0.2 33.0.3<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platforms | android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653 (default)<br>26.3.11579264<br>27.1.12297006 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -346,20 +355,20 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.1.12297006 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- libXext 1.3.5
|
||||
- libXext 1.3.6
|
||||
- libXft 2.3.8
|
||||
- Tcl/Tk 8.6.13_5
|
||||
- Zlib 1.3
|
||||
- Tcl/Tk 8.6.15
|
||||
- Zlib 1.3.1
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.1.0-54729/ParallelsDesktop-19.1.0-54729.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.0.1-55659/ParallelsDesktop-20.0.1-55659.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
+179
-148
@@ -1,102 +1,108 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[ macOS ] Node.js version 16 will be removed from macOS13 and macOS13 arm64 images on November, 25.](https://github.com/actions/runner-images/issues/10873) |
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] Python 3.9 and 3.10 will be removed from macOS13 arm64 and macOS14 arm64 on November 25.](https://github.com/actions/runner-images/issues/10812) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [[macOS] Support policy changes; Xcode 14 and 16 will be removed from macOS 14 on November 4](https://github.com/actions/runner-images/issues/10703) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.6 (22G120)
|
||||
- OS Version: macOS 13.7.1 (22H221)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20231025.2
|
||||
- Image Version: 20241125.399
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.403
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.3
|
||||
- Clang/LLVM 14.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.2.0) - available by `gcc-13` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.3
|
||||
- Kotlin 1.9.10-release-459
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.0.21-release-482
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Perl 5.38.0
|
||||
- PHP 8.2.11
|
||||
- Python3 3.12.0
|
||||
- R 4.3.1
|
||||
- Ruby 3.0.6p216
|
||||
- Node.js 20.18.1
|
||||
- Perl 5.40.0
|
||||
- PHP 8.4.1
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.0.7p220
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.21
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.13.0
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.17
|
||||
- NPM 9.8.1
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.3
|
||||
- Homebrew 4.4.7
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.21
|
||||
- Vcpkg 2023 (build from commit 213c01f87)
|
||||
- Yarn 1.22.19
|
||||
- Pip3 24.3.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Vcpkg 2024 (build from commit 5e5d0e1cd)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.36.0
|
||||
- azcopy 10.21.1
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Git 2.42.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.37.0
|
||||
- Curl 8.11.0
|
||||
- Git 2.47.0
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.62.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.35.2
|
||||
- zstd 1.5.5
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.13.29
|
||||
- AWS SAM CLI 1.99.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.53.1
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.22.6
|
||||
- Cabal 3.6.2.0
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.1
|
||||
- Fastlane 2.216.0
|
||||
- GHC 9.8.1
|
||||
- GHCup 0.1.19.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.8
|
||||
- Xcode Command Line Tools 15.0.0.0.1.1694021235
|
||||
- AWS CLI 2.22.4
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.2
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.53.0
|
||||
- SwiftLint 0.57.1
|
||||
|
||||
### Browsers
|
||||
- Safari 17.0 (18616.1.27.111.22)
|
||||
- SafariDriver 17.0 (18616.1.27.111.22)
|
||||
- Google Chrome 118.0.5993.117
|
||||
- Google Chrome for Testing 118.0.5993.70
|
||||
- ChromeDriver 118.0.5993.70
|
||||
- Microsoft Edge 118.0.2088.69
|
||||
- Microsoft Edge WebDriver 118.0.2088.69
|
||||
- Mozilla Firefox 119.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.14.1
|
||||
- Safari 18.1.1 (18619.2.8.111.7)
|
||||
- SafariDriver 18.1.1 (18619.2.8.111.7)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Microsoft Edge 131.0.2903.63
|
||||
- Microsoft Edge WebDriver 131.0.2903.63
|
||||
- Mozilla Firefox 132.0.2
|
||||
- geckodriver 0.35.0
|
||||
- Selenium server 4.26.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -106,75 +112,73 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------ | -------------------- |
|
||||
| 8.0.392+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0.LTS | JAVA_HOME_21_X64 |
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 8.0.432+6 | JAVA_HOME_8_X64 |
|
||||
| 11.0.25+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.13+11 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.5+11.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.0.6
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 2.7.18 [PyPy 7.3.17]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.14 [PyPy 7.3.17]
|
||||
|
||||
#### Ruby
|
||||
- 3.0.7
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.9.20
|
||||
- 3.10.15
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.9.0
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.10
|
||||
- 1.21.3
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Rustup 1.26.0
|
||||
- Cargo 1.82.0
|
||||
- Rust 1.82.0
|
||||
- Rustdoc 1.82.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.68.1
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.13.1
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.82
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.15
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 10.4.1
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 (default) | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
@@ -183,26 +187,35 @@
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
@@ -210,42 +223,60 @@
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | 14.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | 14.3.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
| SDK Patch Applier v4 | 1 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.15
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.1.1-55740/ParallelsDesktop-20.1.1-55740.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
If you want to use Parallels Desktop you should download a package from URL stored in
|
||||
PARALLELS_DMG_URL environment variable. A system extension is allowed for this version.
|
||||
```
|
||||
|
||||
|
||||
@@ -1,84 +1,97 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images once [date not determined]](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.6 (22G120)
|
||||
- OS Version: macOS 13.7.1 (22H221)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20231024.2
|
||||
- Image Version: 20241202.469
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.403
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.3
|
||||
- Clang/LLVM 14.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.2.0) - available by `gcc-13` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.3
|
||||
- Kotlin 1.9.10-release-459
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.1.0-release-394
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Perl 5.38.0
|
||||
- R 4.3.1
|
||||
- Ruby 3.0.6p216
|
||||
- Node.js 20.18.1
|
||||
- Perl 5.40.0
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.0.7p220
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.21
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.13.0
|
||||
- Homebrew 4.1.17
|
||||
- NPM 9.8.1
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.4.8
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- RubyGems 3.4.21
|
||||
- Yarn 1.22.19
|
||||
- Pip3 24.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.36.0
|
||||
- azcopy 10.21.0
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.1.2
|
||||
- Git 2.42.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.37.0
|
||||
- Curl 8.7.1
|
||||
- Git 2.47.1
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.63.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.35.2
|
||||
- zstd 1.5.5
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- Azure CLI 2.53.1
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.22.6
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.1
|
||||
- Fastlane 2.216.0
|
||||
- SwiftFormat 0.52.8
|
||||
- Xcode Command Line Tools 15.0.0.0.1.1694021235
|
||||
- AWS CLI 2.22.8
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.3
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 17.0 (18616.1.27.111.22)
|
||||
- SafariDriver 17.0 (18616.1.27.111.22)
|
||||
- Google Chrome 118.0.5993.117
|
||||
- Google Chrome for Testing 118.0.5993.70
|
||||
- ChromeDriver 118.0.5993.70
|
||||
- Selenium server 4.14.1
|
||||
- Safari 18.1.1 (18619.2.8.111.7)
|
||||
- SafariDriver 18.1.1 (18619.2.8.111.7)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Selenium server 4.27.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -88,58 +101,62 @@
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------ | -------------------- |
|
||||
| 11.0.21+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.9+9 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.1+12.0.LTS | JAVA_HOME_21_arm64 |
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 11.0.25+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.13+11 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.5+11.0 | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.0.7
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 16.20.1
|
||||
- 18.16.1
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.8
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Rustup 1.26.0
|
||||
- Cargo 1.83.0
|
||||
- Rust 1.83.0
|
||||
- Rustdoc 1.83.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.68.1
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.13.1
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.83
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.15
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 10.4.1
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 (default) | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
@@ -148,26 +165,35 @@
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
@@ -175,17 +201,50 @@
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | 14.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | 14.3.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.15
|
||||
|
||||
|
||||
@@ -0,0 +1,296 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[ macOS ] Node.js version 16 will be removed from macOS13 and macOS13 arm64 images on November, 25.](https://github.com/actions/runner-images/issues/10873) |
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] Python 3.9 and 3.10 will be removed from macOS13 arm64 and macOS14 arm64 on November 25.](https://github.com/actions/runner-images/issues/10812) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [[macOS] Support policy changes; Xcode 14 and 16 will be removed from macOS 14 on November 4](https://github.com/actions/runner-images/issues/10703) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.7.1 (23H222)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20241125.421
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.0.21-release-482
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.18.1
|
||||
- Perl 5.40.0
|
||||
- PHP 8.4.1
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.0.7p220
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.3
|
||||
- Homebrew 4.4.7
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 24.3.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.11.0
|
||||
- Git 2.47.0
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.62.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.22.4
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.2
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 16.1.0.0.1.1729049160
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.57.1
|
||||
|
||||
### Browsers
|
||||
- Safari 18.1.1 (19619.2.8.111.7)
|
||||
- SafariDriver 18.1.1 (19619.2.8.111.7)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Microsoft Edge 131.0.2903.63
|
||||
- Microsoft Edge WebDriver 131.0.2903.63
|
||||
- Mozilla Firefox 132.0.2
|
||||
- geckodriver 0.35.0
|
||||
- Selenium server 4.26.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 8.0.432+6 | JAVA_HOME_8_X64 |
|
||||
| 11.0.25+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_X64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.0.7
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.9.20
|
||||
- 3.10.15
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.82.0
|
||||
- Rust 1.82.0
|
||||
- Rustdoc 1.82.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.82
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
| 15.4 (default) | 15F31d | /Applications/Xcode_15.4.app | /Applications/Xcode_15.4.0.app<br>/Applications/Xcode.app |
|
||||
| 15.3 | 15E204a | /Applications/Xcode_15.3.app | /Applications/Xcode_15.3.0.app |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| macOS 14.4 | macosx14.4 | 15.3 |
|
||||
| macOS 14.5 | macosx14.5 | 15.4 |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| iOS 17.4 | iphoneos17.4 | 15.3 |
|
||||
| iOS 17.5 | iphoneos17.5 | 15.4 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 17.4 | iphonesimulator17.4 | 15.3 |
|
||||
| Simulator - iOS 17.5 | iphonesimulator17.5 | 15.4 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| tvOS 17.4 | appletvos17.4 | 15.3 |
|
||||
| tvOS 17.5 | appletvos17.5 | 15.4 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 17.4 | appletvsimulator17.4 | 15.3 |
|
||||
| Simulator - tvOS 17.5 | appletvsimulator17.5 | 15.4 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| watchOS 10.4 | watchos10.4 | 15.3 |
|
||||
| watchOS 10.5 | watchos10.5 | 15.4 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 10.4 | watchsimulator10.4 | 15.3 |
|
||||
| Simulator - watchOS 10.5 | watchsimulator10.5 | 15.4 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.1 | xrsimulator1.1 | 15.3 |
|
||||
| visionOS 1.1 | xros1.1 | 15.3 |
|
||||
| Simulator - visionOS 1.2 | xrsimulator1.2 | 15.4 |
|
||||
| visionOS 1.2 | xros1.2 | 15.4 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
| DriverKit 23.4 | driverkit23.4 | 15.3 |
|
||||
| DriverKit 23.5 | driverkit23.5 | 15.4 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 17.0 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.0 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad mini (A17 Pro)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.15
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.1.1-55740/ParallelsDesktop-20.1.1-55740.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
If you want to use Parallels Desktop you should download a package from URL stored in
|
||||
PARALLELS_DMG_URL environment variable. A system extension is allowed for this version.
|
||||
```
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[ macOS ] Node.js version 16 will be removed from macOS13 and macOS13 arm64 images on November, 25.](https://github.com/actions/runner-images/issues/10873) |
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] Python 3.9 and 3.10 will be removed from macOS13 arm64 and macOS14 arm64 on November 25.](https://github.com/actions/runner-images/issues/10812) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [[macOS] Support policy changes; Xcode 14 and 16 will be removed from macOS 14 on November 4](https://github.com/actions/runner-images/issues/10703) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.7.1 (23H222)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20241125.556
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.0.21-release-482
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.18.1
|
||||
- Perl 5.40.0
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.0.7p220
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.4.6
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 24.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.47.0
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.62.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.22.4
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.2
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 16.1.0.0.1.1729049160
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 18.1.1 (19619.2.8.111.7)
|
||||
- SafariDriver 18.1.1 (19619.2.8.111.7)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Selenium server 4.26.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.25+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.0.7
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.82.0
|
||||
- Rust 1.82.0
|
||||
- Rustdoc 1.82.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.82
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
| 15.4 (default) | 15F31d | /Applications/Xcode_15.4.app | /Applications/Xcode_15.4.0.app<br>/Applications/Xcode.app |
|
||||
| 15.3 | 15E204a | /Applications/Xcode_15.3.app | /Applications/Xcode_15.3.0.app |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| macOS 14.4 | macosx14.4 | 15.3 |
|
||||
| macOS 14.5 | macosx14.5 | 15.4 |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| iOS 17.4 | iphoneos17.4 | 15.3 |
|
||||
| iOS 17.5 | iphoneos17.5 | 15.4 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 17.4 | iphonesimulator17.4 | 15.3 |
|
||||
| Simulator - iOS 17.5 | iphonesimulator17.5 | 15.4 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| tvOS 17.4 | appletvos17.4 | 15.3 |
|
||||
| tvOS 17.5 | appletvos17.5 | 15.4 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 17.4 | appletvsimulator17.4 | 15.3 |
|
||||
| Simulator - tvOS 17.5 | appletvsimulator17.5 | 15.4 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| watchOS 10.4 | watchos10.4 | 15.3 |
|
||||
| watchOS 10.5 | watchos10.5 | 15.4 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 10.4 | watchsimulator10.4 | 15.3 |
|
||||
| Simulator - watchOS 10.5 | watchsimulator10.5 | 15.4 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.1 | xrsimulator1.1 | 15.3 |
|
||||
| visionOS 1.1 | xros1.1 | 15.3 |
|
||||
| visionOS 1.2 | xros1.2 | 15.4 |
|
||||
| Simulator - visionOS 1.2 | xrsimulator1.2 | 15.4 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
| DriverKit 23.4 | driverkit23.4 | 15.3 |
|
||||
| DriverKit 23.5 | driverkit23.5 | 15.4 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 17.0 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.0 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad mini (A17 Pro)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
| visionOS 1.1 | Apple Vision Pro |
|
||||
| visionOS 1.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.15
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[ macOS ] Node.js version 16 will be removed from macOS13 and macOS13 arm64 images on November, 25.](https://github.com/actions/runner-images/issues/10873) |
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] Python 3.9 and 3.10 will be removed from macOS13 arm64 and macOS14 arm64 on November 25.](https://github.com/actions/runner-images/issues/10812) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [[macOS] Support policy changes; Xcode 14 and 16 will be removed from macOS 14 on November 4](https://github.com/actions/runner-images/issues/10703) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.1.1 (24B91)
|
||||
- Kernel Version: Darwin 24.1.0
|
||||
- Image Version: 20241125.404
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.0.21-release-482
|
||||
- Node.js 22.11.0
|
||||
- Perl 5.40.0
|
||||
- PHP 8.4.1
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.3.6
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.3
|
||||
- Homebrew 4.4.7
|
||||
- NPM 10.9.0
|
||||
- Pip3 24.3.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.11.0
|
||||
- Git 2.47.0
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.62.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.22.4
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.2
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 16.1.0.0.1.1729049160
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.57.1
|
||||
|
||||
### Browsers
|
||||
- Safari 18.1.1 (20619.2.8.11.12)
|
||||
- SafariDriver 18.1.1 (20619.2.8.11.12)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Microsoft Edge 131.0.2903.63
|
||||
- Microsoft Edge WebDriver 131.0.2903.63
|
||||
- Mozilla Firefox 132.0.2
|
||||
- geckodriver 0.35.0
|
||||
- Selenium server 4.26.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.25+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_X64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.9.20
|
||||
- 3.10.15
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.82.0
|
||||
- Rust 1.82.0
|
||||
- Rustdoc 1.82.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.82
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ----------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| 16.2 (beta) | 16C5023f | /Applications/Xcode_16.2_beta_3.app | /Applications/Xcode_16.2.0.app<br>/Applications/Xcode_16.2.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 (default) | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app<br>/Applications/Xcode.app |
|
||||
| 15.4 | 15F31d | /Applications/Xcode_15.4.app | /Applications/Xcode_15.4.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 14.5 | macosx14.5 | 15.4 |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| macOS 15.2 | macosx15.2 | 16.2 |
|
||||
| iOS 17.5 | iphoneos17.5 | 15.4 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
| Simulator - iOS 17.5 | iphonesimulator17.5 | 15.4 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
| tvOS 17.5 | appletvos17.5 | 15.4 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
| Simulator - tvOS 17.5 | appletvsimulator17.5 | 15.4 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
| watchOS 10.5 | watchos10.5 | 15.4 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
| Simulator - watchOS 10.5 | watchsimulator10.5 | 15.4 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| Simulator - watchOS 11.2 | watchsimulator11.2 | 16.2 |
|
||||
| Simulator - visionOS 1.2 | xrsimulator1.2 | 15.4 |
|
||||
| visionOS 1.2 | xros1.2 | 15.4 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
| DriverKit 23.5 | driverkit23.5 | 15.4 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.0 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.2.12479018 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
@@ -0,0 +1,231 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[ macOS ] Node.js version 16 will be removed from macOS13 and macOS13 arm64 images on November, 25.](https://github.com/actions/runner-images/issues/10873) |
|
||||
| [[macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4](https://github.com/actions/runner-images/issues/10817) |
|
||||
| [[macOS] Python 3.9 and 3.10 will be removed from macOS13 arm64 and macOS14 arm64 on November 25.](https://github.com/actions/runner-images/issues/10812) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [[macOS] Support policy changes; Xcode 14 and 16 will be removed from macOS 14 on November 4](https://github.com/actions/runner-images/issues/10703) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.1.1 (24B91)
|
||||
- Kernel Version: Darwin 24.1.0
|
||||
- Image Version: 20241125.405
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.404
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 16.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.0.21-release-482
|
||||
- Node.js 22.11.0
|
||||
- Perl 5.40.0
|
||||
- Python3 3.13.0
|
||||
- Ruby 3.3.6
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.23
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.4.6
|
||||
- NPM 10.9.0
|
||||
- Pip3 24.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.5.23
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.11.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.27.1
|
||||
- bazel 7.4.1
|
||||
- bazelisk 1.24.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.47.0
|
||||
- Git LFS 3.6.0
|
||||
- GitHub CLI 2.62.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.6
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.44.5
|
||||
- zstd 1.5.6
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.22.4
|
||||
- AWS SAM CLI 1.131.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.67.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.31.92
|
||||
- Cmake 3.31.1
|
||||
- CodeQL Action Bundle 2.19.3
|
||||
- Fastlane 2.225.0
|
||||
- SwiftFormat 0.55.2
|
||||
- Xcbeautify 2.15.0
|
||||
- Xcode Command Line Tools 16.1.0.0.1.1729049160
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 18.1.1 (20619.2.8.11.12)
|
||||
- SafariDriver 18.1.1 (20619.2.8.11.12)
|
||||
- Google Chrome 131.0.6778.86
|
||||
- Google Chrome for Testing 131.0.6778.85
|
||||
- ChromeDriver 131.0.6778.85
|
||||
- Selenium server 4.26.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.25+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.6
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.7
|
||||
- 3.13.0
|
||||
|
||||
#### Node.js
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.11.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.9
|
||||
- 1.23.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.82.0
|
||||
- Rust 1.82.0
|
||||
- Rustdoc 1.82.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.82
|
||||
- Rustfmt 1.7.1-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.6.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ----------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| 16.2 (beta) | 16C5023f | /Applications/Xcode_16.2_beta_3.app | /Applications/Xcode_16.2.0.app<br>/Applications/Xcode_16.2.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 (default) | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app<br>/Applications/Xcode.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| macOS 15.2 | macosx15.2 | 16.2 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| Simulator - watchOS 11.2 | watchsimulator11.2 | 16.2 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.0 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 18.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 2.0 | Apple Vision Pro |
|
||||
| visionOS 2.1 | Apple Vision Pro |
|
||||
| visionOS 2.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 35.2.10 |
|
||||
| Android SDK Build-tools | 35.0.0 |
|
||||
| Android SDK Platforms | android-35-ext14 (rev 1)<br>android-35 (rev 1)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1) |
|
||||
| Android SDK Platform-Tools | 35.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.2.12479018 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
+7
-10
@@ -6,8 +6,7 @@
|
||||
|
||||
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
|
||||
function Get-ToolsetToolFullPath
|
||||
{
|
||||
function Get-ToolsetToolFullPath {
|
||||
param
|
||||
(
|
||||
[Parameter(Mandatory)] [string] $ToolName,
|
||||
@@ -23,25 +22,23 @@ function Get-ToolsetToolFullPath
|
||||
}
|
||||
|
||||
$arch = Get-Architecture
|
||||
$toolcache = Get-ToolsetValue "toolcache"
|
||||
$toolcache = (Get-ToolsetContent).toolcache
|
||||
|
||||
foreach ($tool in $toolcache)
|
||||
{
|
||||
foreach ($tool in $toolcache) {
|
||||
$toolName = $tool.name
|
||||
$toolEnvironment = $tool.arch.$arch.variable_template
|
||||
|
||||
if (-not $toolEnvironment)
|
||||
{
|
||||
if (-not $toolEnvironment) {
|
||||
continue
|
||||
}
|
||||
|
||||
foreach ($toolVersion in $tool.arch.$arch.versions)
|
||||
{
|
||||
foreach ($toolVersion in $tool.arch.$arch.versions) {
|
||||
Write-Host "Set $toolName $toolVersion environment variable..."
|
||||
$toolPath = Get-ToolsetToolFullPath -ToolName $toolName -ToolVersion $toolVersion -ToolArchitecture $arch
|
||||
$envName = $toolEnvironment -f $toolVersion.split(".")
|
||||
|
||||
# Add environment variable name=value
|
||||
Add-EnvironmentVariable -Name $envName -Value $toolPath
|
||||
$envVar = "export {0}={1}" -f $envName, $toolPath
|
||||
Add-Content -Path "${env:HOME}/.bashrc" -Value $envVar
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
################################################################################
|
||||
## File: Configure-Xcode-Simulators.ps1
|
||||
## Team: CI-Build
|
||||
## Desc: CHeck and remove duplicate simulators
|
||||
################################################################################
|
||||
|
||||
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "~/image-generation/helpers/Xcode.Helpers.psm1"
|
||||
$arch = Get-Architecture
|
||||
$xcodeVersions = (Get-ToolsetContent).xcode.${arch}.versions
|
||||
|
||||
# Switch to each Xcode version
|
||||
foreach ($xcodeVersion in $xcodeVersions.link) {
|
||||
write-host "Switching to Xcode $xcodeVersion"
|
||||
Switch-Xcode -Version $XcodeVersion
|
||||
|
||||
# Make object of all simulators
|
||||
$devicesList = $(xcrun simctl list -j devices | ConvertFrom-Json)
|
||||
$devicesObject = [System.Collections.ArrayList]@()
|
||||
foreach ($runtime in $devicesList.devices.psobject.Properties.name) {
|
||||
foreach ($device in $devicesList.devices.$runtime) {
|
||||
$devicesObject += [PSCustomObject]@{
|
||||
runtime = $runtime
|
||||
DeviceName = $($device.name)
|
||||
DeviceId = $($device.udid)
|
||||
DeviceCreationTime = (Get-Item $HOME/Library/Developer/CoreSimulator/Devices/$($device.udid)).CreationTime
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Remove duplicates
|
||||
foreach ($simRuntume in $devicesObject.runtime | Sort-Object -Unique) {
|
||||
[System.Collections.ArrayList]$sameRuntimeDevices = [array]$($devicesObject | Where-Object {$_.runtime -eq $simRuntume} | Sort-Object -Property DeviceName)
|
||||
Write-Host "///////////////////////////////////////////////////////////////////"
|
||||
Write-Host "// Checking for duplicates in $simRuntume "
|
||||
$devicesAsHashTable = $sameRuntimeDevices | Group-Object -Property DeviceName -AsHashTable -AsString
|
||||
foreach ($key in $devicesAsHashTable.Keys) {
|
||||
if ( $devicesAsHashTable[$key].count -gt 1) {
|
||||
Write-Host "// Duplicates for $key - $($devicesAsHashTable[$key].count)"
|
||||
}
|
||||
}
|
||||
Write-Host "///////////////////////////////////////////////////////////////////"
|
||||
for ($i = 0; $i -lt $sameRuntimeDevices.Count; $i++) {
|
||||
if ( [string]::IsNullOrEmpty($($sameRuntimeDevices[$i+1].DeviceName)) ){
|
||||
Write-Host "No more devices to compare in $simRuntume"
|
||||
Write-Host "-------------------------------------------------------------------"
|
||||
continue
|
||||
}
|
||||
Write-Host "$($sameRuntimeDevices[$i].DeviceName) - DeviceId $($sameRuntimeDevices[$i].DeviceId) comparing with"
|
||||
Write-Host "$($sameRuntimeDevices[$i+1].DeviceName) - DeviceId $($sameRuntimeDevices[$i+1].DeviceId)"
|
||||
Write-Host "-------------------------------------------------------------------"
|
||||
if ($sameRuntimeDevices[$i].DeviceName -eq $sameRuntimeDevices[$i+1].DeviceName) {
|
||||
write-host "*******************************************************************"
|
||||
write-host "** Duplicate found"
|
||||
if ($sameRuntimeDevices[$i].DeviceCreationTime -lt $sameRuntimeDevices[$i+1].DeviceCreationTime) {
|
||||
Write-Host "** will be removed $($sameRuntimeDevices[$i+1].DeviceName) with id $($sameRuntimeDevices[$i+1].DeviceId)"
|
||||
xcrun simctl delete $sameRuntimeDevices[$i+1].DeviceId
|
||||
$sameRuntimeDevices.RemoveAt($i+1)
|
||||
} else {
|
||||
Write-Host "** will be removed $($sameRuntimeDevices[$i].DeviceName) with id $($sameRuntimeDevices[$i].DeviceId)"
|
||||
xcrun simctl delete $sameRuntimeDevices[$i].DeviceId
|
||||
$sameRuntimeDevices.RemoveAt($i)
|
||||
}
|
||||
write-host "*******************************************************************"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
-11
@@ -1,9 +1,10 @@
|
||||
################################################################################
|
||||
## File: toolset.ps1
|
||||
## File: Install-Toolset.ps1
|
||||
## Team: CI-Build
|
||||
## Desc: Install toolset
|
||||
################################################################################
|
||||
Import-Module "~/image-generation/helpers/Tests.Helpers.psm1"
|
||||
|
||||
Import-Module "~/image-generation/tests/Helpers.psm1"
|
||||
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
|
||||
Function Install-Asset {
|
||||
@@ -12,14 +13,12 @@ Function Install-Asset {
|
||||
[object] $ReleaseAsset
|
||||
)
|
||||
|
||||
$assetFolderPath = Join-Path "/tmp" "$($ReleaseAsset.filename)-temp-dir"
|
||||
New-Item -ItemType Directory -Path $assetFolderPath | Out-Null
|
||||
$assetArchivePath = Join-Path $assetFolderPath $ReleaseAsset.filename
|
||||
|
||||
Write-Host "Download $($ReleaseAsset.filename) archive to the $assetFolderPath folder..."
|
||||
Start-DownloadWithRetry -Url $ReleaseAsset.download_url -DownloadPath $assetFolderPath
|
||||
Write-Host "Download $($ReleaseAsset.filename) archive..."
|
||||
$assetArchivePath = Invoke-DownloadWithRetry $ReleaseAsset.download_url
|
||||
|
||||
Write-Host "Extract $($ReleaseAsset.filename) content..."
|
||||
$assetFolderPath = Join-Path "/tmp" "$($ReleaseAsset.filename)-temp-dir"
|
||||
New-Item -ItemType Directory -Path $assetFolderPath | Out-Null
|
||||
tar -xzf $assetArchivePath -C $assetFolderPath
|
||||
|
||||
Write-Host "Invoke installation script..."
|
||||
@@ -32,11 +31,11 @@ $arch = Get-Architecture
|
||||
|
||||
# Get toolcache content from toolset
|
||||
$toolsToInstall = @("Python", "Node", "Go")
|
||||
$tools = Get-ToolsetValue "toolcache" | Where-Object {$toolsToInstall -contains $_.Name}
|
||||
$tools = (Get-ToolsetContent).toolcache | Where-Object {$toolsToInstall -contains $_.Name}
|
||||
|
||||
foreach ($tool in $tools) {
|
||||
# Get versions manifest for current tool
|
||||
$assets = Invoke-RestMethodWithRetry -Url $tool.url
|
||||
$assets = Invoke-RestMethod $tool.url -MaximumRetryCount 10 -RetryIntervalSec 30
|
||||
|
||||
# Get github release asset for each version
|
||||
foreach ($version in $tool.arch.$arch.versions) {
|
||||
@@ -55,4 +54,4 @@ foreach ($tool in $tools) {
|
||||
}
|
||||
}
|
||||
|
||||
Invoke-PesterTests "Toolcache"
|
||||
Invoke-PesterTests "Toolcache"
|
||||
+10
-6
@@ -1,12 +1,17 @@
|
||||
################################################################################
|
||||
## File: Install-Xcode.ps1
|
||||
## Desc: Install Xcode
|
||||
################################################################################
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
Import-Module "$env:HOME/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "$env:HOME/image-generation/helpers/Xcode.Installer.psm1" -DisableNameChecking
|
||||
|
||||
$ARCH = Get-Architecture
|
||||
[Array]$xcodeVersions = Get-ToolsetValue "xcode.$ARCH.versions"
|
||||
$arch = Get-Architecture
|
||||
[Array]$xcodeVersions = (Get-ToolsetContent).xcode.$arch.versions
|
||||
write-host $xcodeVersions
|
||||
$defaultXcode = Get-ToolsetValue "xcode.default"
|
||||
$defaultXcode = (Get-ToolsetContent).xcode.default
|
||||
[Array]::Reverse($xcodeVersions)
|
||||
$threadCount = "5"
|
||||
|
||||
@@ -16,7 +21,7 @@ $xcodeVersions | ForEach-Object -ThrottleLimit $threadCount -Parallel {
|
||||
Import-Module "$env:HOME/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "$env:HOME/image-generation/helpers/Xcode.Installer.psm1" -DisableNameChecking
|
||||
|
||||
Install-XcodeVersion -Version $_.version -LinkTo $_.link
|
||||
Install-XcodeVersion -Version $_.version -LinkTo $_.link -Sha256Sum $_.sha256
|
||||
Confirm-XcodeIntegrity -Version $_.link
|
||||
}
|
||||
|
||||
@@ -39,7 +44,6 @@ $xcodeVersions | ForEach-Object {
|
||||
$xcodebuildPath = Get-XcodeToolPath -Version $_.link -ToolName 'xcodebuild'
|
||||
Invoke-ValidateCommand "sudo $xcodebuildPath -downloadPlatform $runtime" | Out-Null
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Invoke-XcodeRunFirstLaunch -Version $defaultXcode
|
||||
@@ -56,7 +60,7 @@ $xcodeVersions | ForEach-Object {
|
||||
|
||||
Write-Host "Rebuilding Launch Services database ..."
|
||||
$xcodeVersions | ForEach-Object {
|
||||
Rebuild-XcodeLaunchServicesDb -Version $_.link
|
||||
Initialize-XcodeLaunchServicesDb -Version $_.link
|
||||
}
|
||||
|
||||
Write-Host "Setting default Xcode to $defaultXcode"
|
||||
+12
-7
@@ -1,18 +1,23 @@
|
||||
################################################################################
|
||||
## File: Update-XcodeSimulators.ps1
|
||||
## Desc: Check available Xcode simulators and create missing ones
|
||||
################################################################################
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
Import-Module "$env:HOME/image-generation/helpers/Xcode.Helpers.psm1" -DisableNameChecking
|
||||
Import-Module "$env:HOME/image-generation/software-report/SoftwareReport.Xcode.psm1" -DisableNameChecking
|
||||
|
||||
function Ensure-SimulatorInstalled {
|
||||
function Test-SimulatorInstalled {
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$RuntimeId,
|
||||
[string] $RuntimeId,
|
||||
[Parameter(Mandatory)]
|
||||
[string]$DeviceId,
|
||||
[string] $DeviceId,
|
||||
[Parameter(Mandatory)]
|
||||
[string]$SimulatorName,
|
||||
[string] $SimulatorName,
|
||||
[Parameter(Mandatory)]
|
||||
[string]$XcodeVersion
|
||||
[string] $XcodeVersion
|
||||
)
|
||||
|
||||
$simctlPath = Get-XcodeToolPath -Version $XcodeVersion -ToolName "simctl"
|
||||
@@ -47,5 +52,5 @@ Get-XcodeInfoList | Out-Null
|
||||
|
||||
Write-Host "Validating and fixing Xcode simulators..."
|
||||
Get-BrokenXcodeSimulatorsList | ForEach-Object {
|
||||
Ensure-SimulatorInstalled -RuntimeId $_.RuntimeId -DeviceId $_.DeviceId -SimulatorName $_.SimulatorName -XcodeVersion $_.XcodeVersion
|
||||
}
|
||||
Test-SimulatorInstalled -RuntimeId $_.RuntimeId -DeviceId $_.DeviceId -SimulatorName $_.SimulatorName -XcodeVersion $_.XcodeVersion
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
brew_smart_install httpd
|
||||
sudo sed -Ei '' 's/Listen .*/Listen 80/' $(brew --prefix)/etc/httpd/httpd.conf
|
||||
|
||||
invoke_tests "WebServers" "Apache"
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "install switchaudio-osx"
|
||||
brew_smart_install "switchaudio-osx"
|
||||
|
||||
echo "install sox"
|
||||
brew_smart_install "sox"
|
||||
|
||||
# Big Sur doesn't support soundflower installation without user interaction https://github.com/mattingalls/Soundflower/releases/tag/2.0b2
|
||||
# Install blackhole-2ch for Big Sur instead
|
||||
|
||||
echo "install blackhole-2ch"
|
||||
brew_smart_install "blackhole-2ch"
|
||||
|
||||
echo "set BlackHole 2ch as input/output device"
|
||||
SwitchAudioSource -s "BlackHole 2ch" -t input
|
||||
SwitchAudioSource -s "BlackHole 2ch" -t output
|
||||
|
||||
invoke_tests "System" "Audio Device"
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing aws...
|
||||
AWS_CLI_URL="https://awscli.amazonaws.com/AWSCLIV2.pkg"
|
||||
download_with_retries $AWS_CLI_URL "/tmp"
|
||||
sudo installer -pkg /tmp/AWSCLIV2.pkg -target /
|
||||
|
||||
echo Installing aws sam cli...
|
||||
brew tap aws/tap
|
||||
brew_smart_install aws-sam-cli
|
||||
|
||||
echo "Install aws cli session manager"
|
||||
brew install --cask session-manager-plugin
|
||||
|
||||
invoke_tests "Common" "AWS"
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
arch=$(get_arch)
|
||||
|
||||
# Check MacOS architecture and if ARM install using brew
|
||||
if [ $arch == "arm64" ]; then
|
||||
brew_smart_install azcopy
|
||||
else
|
||||
AZCOPY_DOWNLOAD_URL="https://aka.ms/downloadazcopy-v10-mac"
|
||||
|
||||
download_with_retries $AZCOPY_DOWNLOAD_URL "/tmp" "azcopy.zip"
|
||||
unzip /tmp/azcopy.zip -d azcopy
|
||||
AZCOPY_EXTRACTED=$(echo azcopy/azcopy*)
|
||||
cp "$AZCOPY_EXTRACTED/azcopy" "/usr/local/bin/azcopy"
|
||||
chmod +x "/usr/local/bin/azcopy"
|
||||
|
||||
echo "Done, cleaning up"
|
||||
rm -rf azcopy*
|
||||
fi
|
||||
|
||||
invoke_tests "Common" "AzCopy"
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing bicep cli...
|
||||
brew tap azure/bicep
|
||||
brew_smart_install bicep
|
||||
|
||||
invoke_tests "Common" "Bicep"
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Link the existing Xcodes into the correct location for provisionator.
|
||||
|
||||
# These symlinks are necessary for Xamarin team to make sure that xamarin-provisionator can find them.
|
||||
|
||||
# Old style provisionator directories. This is maintained for
|
||||
# backwards compatibility only. Do not add new xcodes here.
|
||||
ln -sf /Applications/Xcode_8.app /Applications/Xcode8.app
|
||||
ln -sf /Applications/Xcode_8.1.app /Applications/Xcode81.app
|
||||
ln -sf /Applications/Xcode_9.app /Applications/Xcode9.app
|
||||
ln -sf /Applications/Xcode_9.1.app /Applications/Xcode91.app
|
||||
ln -sf /Applications/Xcode_9.2.app /Applications/Xcode92.app
|
||||
ln -sf /Applications/Xcode_9.3.app /Applications/Xcode93.app
|
||||
ln -sf /Applications/Xcode_9.3.app /Applications/Xcode_9.3_beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4-beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4_beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4_beta_2.app
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
arch=$(get_arch)
|
||||
|
||||
echo "Installing Google Chrome..."
|
||||
brew install --cask google-chrome
|
||||
|
||||
# Parse Google Chrome version
|
||||
FULL_CHROME_VERSION=$("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version)
|
||||
FULL_CHROME_VERSION=${FULL_CHROME_VERSION#Google Chrome }
|
||||
CHROME_VERSION=${FULL_CHROME_VERSION%.*}
|
||||
echo "Google Chrome version is $FULL_CHROME_VERSION"
|
||||
|
||||
# Get Google Chrome versions information
|
||||
CHROME_PLATFORM="mac-$arch"
|
||||
CHROME_VERSIONS_URL="https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build-with-downloads.json"
|
||||
download_with_retries "$CHROME_VERSIONS_URL" "/tmp" "latest-patch-versions-per-build-with-downloads.json"
|
||||
CHROME_VERSIONS_JSON=$(cat /tmp/latest-patch-versions-per-build-with-downloads.json)
|
||||
|
||||
# Download and unpack the latest release of Chrome Driver
|
||||
CHROMEDRIVER_VERSION=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].version')
|
||||
echo "Installing Chrome Driver version $CHROMEDRIVER_VERSION"
|
||||
|
||||
CHROMEDRIVER_URL=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].downloads.chromedriver[] | select(.platform=="'"${CHROME_PLATFORM}"'").url')
|
||||
CHROMEDRIVER_ARCHIVE="chromedriver-${CHROME_PLATFORM}.zip"
|
||||
CHROMEDRIVER_DIR="/usr/local/share/chromedriver-${CHROME_PLATFORM}"
|
||||
CHROMEDRIVER_BIN="$CHROMEDRIVER_DIR/chromedriver"
|
||||
|
||||
download_with_retries "$CHROMEDRIVER_URL" "/tmp" "$CHROMEDRIVER_ARCHIVE"
|
||||
unzip -qq /tmp/$CHROMEDRIVER_ARCHIVE -d /tmp/
|
||||
sudo mv "/tmp/chromedriver-${CHROME_PLATFORM}" "$CHROMEDRIVER_DIR"
|
||||
ln -s "$CHROMEDRIVER_BIN" /usr/local/bin/chromedriver
|
||||
echo "export CHROMEWEBDRIVER=$CHROMEDRIVER_DIR" >> "${HOME}/.bashrc"
|
||||
|
||||
# Download and unpack the latest release of Google Chrome for Testing
|
||||
CHROME_FOR_TESTING_VERSION=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].version')
|
||||
echo "Installing Google Chrome for Testing version $CHROME_FOR_TESTING_VERSION"
|
||||
|
||||
CHROME_FOR_TESTING_URL=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].downloads.chrome[] | select(.platform=="'"${CHROME_PLATFORM}"'").url')
|
||||
CHROME_FOR_TESTING_ARCHIVE="chrome-${CHROME_PLATFORM}.zip"
|
||||
CHROME_FOR_TESTING_APP="Google Chrome for Testing.app"
|
||||
|
||||
download_with_retries $CHROME_FOR_TESTING_URL "/tmp" $CHROME_FOR_TESTING_ARCHIVE
|
||||
unzip -qq /tmp/$CHROME_FOR_TESTING_ARCHIVE -d /tmp/
|
||||
mv "/tmp/chrome-${CHROME_PLATFORM}/${CHROME_FOR_TESTING_APP}" "/Applications/${CHROME_FOR_TESTING_APP}"
|
||||
|
||||
echo "Installing Selenium"
|
||||
brew_smart_install "selenium-server"
|
||||
|
||||
invoke_tests "Browsers" "Chrome"
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
###########################################################################
|
||||
# The script removes local Homebrew cache
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
rm -rf "$(brew --cache)"
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Retrieve the CLI version of the latest CodeQL bundle.
|
||||
download_with_retries https://raw.githubusercontent.com/github/codeql-action/v2/src/defaults.json "/tmp" "codeql-defaults.json"
|
||||
bundle_version="$(jq -r '.cliVersion' /tmp/codeql-defaults.json)"
|
||||
bundle_tag_name="codeql-bundle-v$bundle_version"
|
||||
|
||||
echo "Downloading CodeQL bundle $bundle_version..."
|
||||
# Note that this is the all-platforms CodeQL bundle, to support scenarios where customers run
|
||||
# different operating systems within containers.
|
||||
download_with_retries "https://github.com/github/codeql-action/releases/download/$bundle_tag_name/codeql-bundle.tar.gz" "/tmp" "codeql-bundle.tar.gz"
|
||||
codeql_archive="/tmp/codeql-bundle.tar.gz"
|
||||
|
||||
codeql_toolcache_path="$AGENT_TOOLSDIRECTORY/CodeQL/$bundle_version/x64"
|
||||
mkdir -p "$codeql_toolcache_path"
|
||||
|
||||
echo "Unpacking the downloaded CodeQL bundle archive..."
|
||||
tar -xzf "$codeql_archive" -C "$codeql_toolcache_path"
|
||||
|
||||
# Touch a file to indicate to the CodeQL Action that this bundle shipped with the toolcache. This is
|
||||
# to support overriding the CodeQL version specified in defaults.json on GitHub Enterprise.
|
||||
touch "$codeql_toolcache_path/pinned-version"
|
||||
|
||||
# Touch a file to indicate to the toolcache that setting up CodeQL is complete.
|
||||
touch "$codeql_toolcache_path.complete"
|
||||
|
||||
invoke_tests "Common" "CodeQL Bundle"
|
||||
@@ -1,96 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Download and install YQ in cases when it is not available in the formulae as for macOS 11: https://formulae.brew.sh/formula/yq
|
||||
if is_BigSur; then
|
||||
download_with_retries "https://github.com/mikefarah/yq/releases/latest/download/yq_darwin_amd64" "/tmp" "yq"
|
||||
sudo install /tmp/yq /usr/local/bin/yq
|
||||
fi
|
||||
|
||||
# Monterey needs future review:
|
||||
# aliyun-cli, gnupg, helm have issues with building from the source code.
|
||||
# Added gmp for now, because toolcache ruby needs its libs. Remove it when php starts to build from source code.
|
||||
common_packages=$(get_toolset_value '.brew.common_packages[]')
|
||||
for package in $common_packages; do
|
||||
echo "Installing $package..."
|
||||
brew_smart_install "$package"
|
||||
done
|
||||
|
||||
cask_packages=$(get_toolset_value '.brew.cask_packages[]')
|
||||
for package in $cask_packages; do
|
||||
echo "Installing $package..."
|
||||
if is_Monterey && [[ $package == "virtualbox" ]]; then
|
||||
# Do not update VirtualBox on macOS 12 due to the issue with VMs in gurumediation state which blocks Vagrant on macOS: https://github.com/actions/runner-images/issues/8730
|
||||
# macOS host: Dropped all kernel extensions. VirtualBox relies fully on the hypervisor and vmnet frameworks provided by Apple now.
|
||||
vbcask_url="https://raw.githubusercontent.com/Homebrew/homebrew-cask/aa3c55951fc9d687acce43e5c0338f42c1ddff7b/Casks/virtualbox.rb"
|
||||
download_with_retries $vbcask_url
|
||||
brew install ./virtualbox.rb
|
||||
rm ./virtualbox.rb
|
||||
else
|
||||
brew install --cask $package
|
||||
fi
|
||||
done
|
||||
|
||||
# Load "Parallels International GmbH"
|
||||
if is_Monterey; then
|
||||
sudo kextload /Applications/Parallels\ Desktop.app/Contents/Library/Extensions/10.9/prl_hypervisor.kext || true
|
||||
fi
|
||||
|
||||
# Execute AppleScript to change security preferences
|
||||
# System Preferences -> Security & Privacy -> General -> Unlock -> Allow -> Not now
|
||||
if is_Monterey; then
|
||||
if is_Veertu; then
|
||||
for retry in {4..0}; do
|
||||
echo "Executing AppleScript to change security preferences. Retries left: $retry"
|
||||
{
|
||||
set -e
|
||||
osascript -e 'tell application "System Events" to get application processes where visible is true'
|
||||
osascript $HOME/utils/confirm-identified-developers.scpt $USER_PASSWORD
|
||||
} && break
|
||||
|
||||
if [ "$retry" -eq 0 ]; then
|
||||
echo "Executing AppleScript failed. No retries left"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Executing AppleScript failed. Sleeping for 10 seconds and retrying"
|
||||
sleep 10
|
||||
done
|
||||
else
|
||||
echo "Executing AppleScript to change security preferences"
|
||||
osascript $HOME/utils/confirm-identified-developers.scpt $USER_PASSWORD
|
||||
fi
|
||||
fi
|
||||
|
||||
# Validate "Parallels International GmbH" kext
|
||||
if is_Monterey; then
|
||||
echo "Closing System Preferences window if it is still opened"
|
||||
killall "System Preferences" || true
|
||||
|
||||
echo "Checking parallels kexts"
|
||||
dbName="/var/db/SystemPolicyConfiguration/KextPolicy"
|
||||
dbQuery="SELECT * FROM kext_policy WHERE bundle_id LIKE 'com.parallels.kext.%';"
|
||||
kext=$(sudo sqlite3 $dbName "$dbQuery")
|
||||
|
||||
if [ -z "$kext" ]; then
|
||||
echo "Parallels International GmbH not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create env variable
|
||||
url=$(brew info --json=v2 --installed | jq -r '.casks[] | select(.name[] == "Parallels Desktop").url')
|
||||
if [ -z "$url" ]; then
|
||||
echo "Unable to parse url for Parallels Desktop cask"
|
||||
exit 1
|
||||
fi
|
||||
echo "export PARALLELS_DMG_URL=$url" >> "${HOME}/.bashrc"
|
||||
fi
|
||||
|
||||
# Invoke bazel to download bazel version via bazelisk
|
||||
bazel
|
||||
|
||||
# Install Azure DevOps extension for Azure Command Line Interface
|
||||
az extension add -n azure-devops
|
||||
|
||||
# Invoke tests for all basic tools
|
||||
invoke_tests "BasicTools"
|
||||
+5
-2
@@ -1,8 +1,11 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-auto-updates.sh
|
||||
## Desc: Disabling automatic updates
|
||||
################################################################################
|
||||
|
||||
# Disabling automatic updates
|
||||
sudo softwareupdate --schedule off
|
||||
defaults write com.apple.SoftwareUpdate AutomaticDownload -int 0
|
||||
defaults write com.apple.SoftwareUpdate CriticalUpdateInstall -int 0
|
||||
defaults write com.apple.commerce AutoUpdate -bool false
|
||||
defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool false
|
||||
defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool false
|
||||
+8
-6
@@ -1,13 +1,15 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
# This script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/autologin.sh
|
||||
# Distributed by MIT license, license can be found at the bottom of this script
|
||||
################################################################################
|
||||
## File: configure-autologin.sh
|
||||
## Desc: add a Daemon to re-detect the attached network interfaces after vm is booted.
|
||||
## Maintainer: @timsutton
|
||||
## script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/autologin.sh
|
||||
################################################################################
|
||||
|
||||
echo "Enabling automatic GUI login for the '$USERNAME' user.."
|
||||
|
||||
python3 $HOME/bootstrap/kcpassword.py "$PASSWORD"
|
||||
|
||||
/usr/bin/defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser "$USERNAME"
|
||||
/usr/bin/defaults write /Library/Preferences/com.apple.loginwindow autoLoginUserScreenLocked -bool false
|
||||
|
||||
: '
|
||||
The MIT License (MIT)
|
||||
@@ -15,4 +17,4 @@ Copyright (c) 2013-2017 Timothy Sutton
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
'
|
||||
'
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-hostname.sh
|
||||
## Desc: Change the hostname at startup to prevent duplicates
|
||||
## Hostname and Computername should contain .local in name to avoid name resolution issues
|
||||
################################################################################
|
||||
|
||||
# Add script for changing hostname to run on startup to prevent duplicate hostnames across the environment. Hostname and Computername should contain .local in name to avoid name resolution issues
|
||||
tee -a /usr/local/bin/change_hostname.sh > /dev/null <<\EOF
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
@@ -10,7 +14,7 @@ scutil --set LocalHostName $name
|
||||
scutil --set ComputerName "${name}.local"
|
||||
EOF
|
||||
|
||||
chmod +x "/usr/local/bin/change_hostname.sh"
|
||||
chmod +x /usr/local/bin/change_hostname.sh
|
||||
|
||||
sudo tee -a /Library/LaunchDaemons/change_hostname.plist > /dev/null <<\EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
@@ -25,4 +29,4 @@ sudo tee -a /Library/LaunchDaemons/change_hostname.plist > /dev/null <<\EOF
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
EOF
|
||||
EOF
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-machine.sh
|
||||
## Desc: Configure guest OS settings
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
@@ -13,14 +17,7 @@ sudo rm -f /var/vm/sleepimage
|
||||
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
|
||||
|
||||
# Disable Keyboard Setup Assistant window
|
||||
if is_Veertu; then
|
||||
sudo defaults write /Library/Preferences/com.apple.keyboardtype "keyboardtype" -dict-add "3-7582-0" -int 40
|
||||
fi
|
||||
|
||||
# Change screen resolution to the maximum supported for 4Mb video memory
|
||||
if [ -d "/Library/Application Support/VMware Tools" ]; then
|
||||
sudo "/Library/Application Support/VMware Tools/vmware-resolutionSet" 1176 885
|
||||
fi
|
||||
sudo defaults write /Library/Preferences/com.apple.keyboardtype "keyboardtype" -dict-add "3-7582-0" -int 40
|
||||
|
||||
# Update VoiceOver Utility to allow VoiceOver to be controlled with AppleScript
|
||||
# by creating a special Accessibility DB file (SIP must be disabled) and
|
||||
@@ -35,11 +32,9 @@ defaults write com.apple.VoiceOver4/default SCREnableAppleScript -bool YES
|
||||
# Rotate the certificate before expiration to ensure your apps are installed and signed with an active certificate.
|
||||
# Confirm that the correct intermediate certificate is installed by verifying the expiration date is set to 2030.
|
||||
# sudo security delete-certificate -Z FF6797793A3CD798DC5B2ABEF56F73EDC9F83A64 /Library/Keychains/System.keychain
|
||||
# Big Sur requires user interaction to add a cert https://developer.apple.com/forums/thread/671582, we need to use a workaround with SecItemAdd swift method
|
||||
|
||||
swiftc -suppress-warnings "${HOME}/image-generation/add-certificate.swift"
|
||||
|
||||
|
||||
certs=(
|
||||
AppleWWDRCAG3.cer
|
||||
DeveloperIDG2CA.cer
|
||||
@@ -48,55 +43,55 @@ for cert in ${certs[@]}; do
|
||||
echo "Adding ${cert} certificate"
|
||||
cert_path="${HOME}/${cert}"
|
||||
curl -fsSL "https://www.apple.com/certificateauthority/${cert}" --output ${cert_path}
|
||||
|
||||
sudo ./add-certificate ${cert_path}
|
||||
|
||||
rm ${cert_path}
|
||||
done
|
||||
|
||||
rm -f ./add-certificate
|
||||
|
||||
# enable-automationmode-without-authentication
|
||||
if ! is_BigSur; then
|
||||
brew install expect
|
||||
retry=10
|
||||
while [ $retry -gt 0 ]; do
|
||||
while [[ $retry -gt 0 ]]; do
|
||||
{
|
||||
osascript <<EOF
|
||||
tell application "Terminal"
|
||||
activate
|
||||
do script "automationmodetool enable-automationmode-without-authentication"
|
||||
delay 2
|
||||
tell application "System Events"
|
||||
keystroke "${PASSWORD}"
|
||||
keystroke return
|
||||
end tell
|
||||
end tell
|
||||
delay 5
|
||||
/usr/bin/expect <<EOF
|
||||
spawn automationmodetool enable-automationmode-without-authentication
|
||||
expect "password"
|
||||
send "${PASSWORD}\r"
|
||||
expect {
|
||||
"succeeded." { puts "Automation mode enabled successfully"; exit 0 }
|
||||
eof
|
||||
}
|
||||
EOF
|
||||
} && break
|
||||
|
||||
retry=$((retry-1))
|
||||
if [ $retry -eq 0 ]; then
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
echo "No retry attempts left"
|
||||
exit 1
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
|
||||
echo "Getting terminal windows"
|
||||
term_service=$(launchctl list | grep -i terminal | cut -f3)
|
||||
echo "Getting terminal windows"
|
||||
launchctl_output=$(launchctl list | grep -i terminal || true)
|
||||
|
||||
if [ -n "$launchctl_output" ]; then
|
||||
term_service=$(echo "$launchctl_output" | cut -f3)
|
||||
echo "Close terminal windows: gui/501/${term_service}"
|
||||
launchctl bootout gui/501/${term_service} && sleep 5
|
||||
else
|
||||
echo "No open terminal windows found."
|
||||
fi
|
||||
|
||||
# test enable-automationmode-without-authentication
|
||||
if [[ ! "$(automationmodetool)" =~ "DOES NOT REQUIRE" ]]; then
|
||||
echo "Failed to enable enable-automationmode-without-authentication option"
|
||||
exit 1
|
||||
fi
|
||||
# test enable-automationmode-without-authentication
|
||||
if [[ ! "$(automationmodetool)" =~ "DOES NOT REQUIRE" ]]; then
|
||||
echo "Failed to enable enable-automationmode-without-authentication option"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create symlink for tests running
|
||||
if [ ! -d "/usr/local/bin" ];then
|
||||
if [[ ! -d "/usr/local/bin" ]];then
|
||||
sudo mkdir -p -m 775 /usr/local/bin
|
||||
sudo chown $USER:admin /usr/local/bin
|
||||
fi
|
||||
|
||||
+8
-6
@@ -1,10 +1,14 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-max-files-limitation.sh
|
||||
## Desc: Configure max files limitation
|
||||
################################################################################
|
||||
|
||||
Launch_Daemons="/Library/LaunchDaemons"
|
||||
|
||||
# EOF in quotes to disable variable expansion
|
||||
echo "Creating limit.maxfiles.plist"
|
||||
cat > "${Launch_Daemons}/limit.maxfiles.plist" << EOF
|
||||
cat > ${Launch_Daemons}/limit.maxfiles.plist << EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
||||
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@@ -24,19 +28,17 @@ EOF
|
||||
|
||||
# Creating script for applying workaround https://developer.apple.com/forums/thread/735798
|
||||
|
||||
cat > "/Users/runner/limit-maxfiles.sh" << EOF
|
||||
cat > /Users/runner/limit-maxfiles.sh << EOF
|
||||
#!/bin/bash
|
||||
sudo launchctl limit maxfiles 256 unlimited
|
||||
sudo launchctl limit maxfiles 65536 524288
|
||||
EOF
|
||||
|
||||
echo "limit.maxfiles.sh permissions changing"
|
||||
chmod +x "/Users/runner/limit-maxfiles.sh"
|
||||
chmod +x /Users/runner/limit-maxfiles.sh
|
||||
|
||||
echo "limit.maxfiles.plist permissions changing"
|
||||
chown root:wheel "${Launch_Daemons}/limit.maxfiles.plist"
|
||||
chmod 0644 "${Launch_Daemons}/limit.maxfiles.plist"
|
||||
|
||||
chmod 0644 ${Launch_Daemons}/limit.maxfiles.plist
|
||||
|
||||
echo "Done, limit.maxfiles has been updated"
|
||||
|
||||
+10
-11
@@ -1,13 +1,13 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-network-interface-detection.sh
|
||||
## Desc: add a Daemon to re-detect the attached network interfaces after vm is booted.
|
||||
## Maintainer: @timsutton
|
||||
## script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/add-network-interface-detection.sh
|
||||
################################################################################
|
||||
|
||||
# This script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/add-network-interface-detection.sh
|
||||
# Distributed by MIT license, license can be found at the bottom of this script
|
||||
|
||||
# This script adds a Mac OS Launch Daemon, which runs every time the
|
||||
# machine is booted. The daemon will re-detect the attached network
|
||||
# interfaces. If this is not done, network devices may not work.
|
||||
PLIST=/Library/LaunchDaemons/sonoma.detectnewhardware.plist
|
||||
cat <<EOF > "${PLIST}"
|
||||
cat <<EOF > ${PLIST}
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
@@ -27,9 +27,8 @@ EOF
|
||||
|
||||
# These should be already set as follows, but since they're required
|
||||
# in order to load properly, we set them explicitly.
|
||||
/bin/chmod 644 "${PLIST}"
|
||||
/usr/sbin/chown root:wheel "${PLIST}"
|
||||
|
||||
/bin/chmod 644 ${PLIST}
|
||||
/usr/sbin/chown root:wheel ${PLIST}
|
||||
|
||||
: '
|
||||
The MIT License (MIT)
|
||||
@@ -37,4 +36,4 @@ Copyright (c) 2013-2017 Timothy Sutton
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
'
|
||||
'
|
||||
+5
-1
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-ntpconf.sh
|
||||
## Desc: Configure NTP servers and set the timezone to UTC
|
||||
################################################################################
|
||||
|
||||
echo Additional NTP servers adding into /etc/ntp.conf file...
|
||||
cat > /etc/ntp.conf << EOF
|
||||
@@ -11,5 +15,5 @@ server time.windows.com
|
||||
EOF
|
||||
|
||||
# Set the timezone to UTC.
|
||||
echo The Timezone setting to UTC...
|
||||
echo "The Timezone setting to UTC..."
|
||||
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
|
||||
+6
-8
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-preimagedata.sh
|
||||
## Desc: Configure data used in the image
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
@@ -15,15 +19,9 @@ if [[ $arch == "arm64" ]]; then
|
||||
else
|
||||
image_label="macos-${label_version}"
|
||||
fi
|
||||
release_label="macOS-${label_version}"
|
||||
|
||||
if is_VenturaX64 || is_SonomaX64; then
|
||||
software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version}/images/macos/${image_label}-Readme.md"
|
||||
releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version}"
|
||||
else
|
||||
software_url="https://github.com/actions/runner-images/blob/${release_label}/${image_version}/images/macos/${image_label}-Readme.md"
|
||||
releaseUrl="https://github.com/actions/runner-images/releases/tag/${release_label}%2F${image_version}"
|
||||
fi
|
||||
software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version}/images/macos/${image_label}-Readme.md"
|
||||
releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version}"
|
||||
|
||||
cat <<EOF > $imagedata_file
|
||||
[
|
||||
+5
-1
@@ -1,7 +1,11 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-screensaver.sh
|
||||
## Desc: Configure screensaver
|
||||
################################################################################
|
||||
|
||||
# set screensaver idleTime to 0, to prevent turning screensaver on
|
||||
macUUID=`ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62`
|
||||
macUUID=$(ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62)
|
||||
|
||||
rm -rf /Users/$USERNAME/Library/Preferences/com.apple.screensaver.$macUUID.plist
|
||||
rm -rf /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.$macUUID.plist
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-shell.sh
|
||||
## Desc: Configure shell to use bash
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
arch=$(get_arch)
|
||||
|
||||
echo "Changing shell to bash"
|
||||
sudo chsh -s /bin/bash $USERNAME
|
||||
sudo chsh -s /bin/bash root
|
||||
|
||||
# Check MacOS architecture and add HOMEBREW PATH to bashrc
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
echo "Adding Homebrew environment to bash"
|
||||
# Discussed here: https://github.com/Homebrew/brew/pull/18366
|
||||
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bashrc
|
||||
fi
|
||||
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-ssh.sh
|
||||
## Desc: Configure ssh
|
||||
################################################################################
|
||||
|
||||
[[ ! -d ~/.ssh ]] && mkdir ~/.ssh 2>/dev/null
|
||||
chmod 777 ~/.ssh
|
||||
|
||||
+18
-6
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-system.sh
|
||||
## Desc: Post deployment system configuration actions
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
@@ -7,18 +11,20 @@ close_finder_window
|
||||
|
||||
# Remove Parallels Desktop
|
||||
# https://github.com/actions/runner-images/issues/6105
|
||||
if is_Monterey; then
|
||||
# https://github.com/actions/runner-images/issues/10143
|
||||
if is_Monterey || is_SonomaX64 || is_VenturaX64; then
|
||||
brew uninstall parallels
|
||||
fi
|
||||
|
||||
# Put documentation to $HOME root
|
||||
cp $HOME/image-generation/output/software-report/systeminfo.* $HOME/
|
||||
|
||||
# Put build vm assets scripts to proper directory
|
||||
mkdir -p /usr/local/opt/$USER/scripts
|
||||
mv $HOME/image-generation/assets/* /usr/local/opt/$USER/scripts
|
||||
|
||||
find /usr/local/opt/$USER/scripts -type f -name "*\.sh" -exec chmod +x {} \;
|
||||
# Put build vm assets (xamarin-selector) scripts to proper directory
|
||||
if is_Monterey || is_Sonoma || is_Ventura; then
|
||||
mkdir -p /usr/local/opt/$USER/scripts
|
||||
mv $HOME/image-generation/assets/* /usr/local/opt/$USER/scripts
|
||||
find /usr/local/opt/$USER/scripts -type f -name "*\.sh" -exec chmod +x {} \;
|
||||
fi
|
||||
|
||||
# Remove fastlane cached cookie
|
||||
rm -rf ~/.fastlane
|
||||
@@ -41,3 +47,9 @@ echo "Indexing completed"
|
||||
|
||||
# delete symlink for tests running
|
||||
sudo rm -f /usr/local/bin/invoke_tests
|
||||
|
||||
# Clean Homebrew downloads
|
||||
sudo rm -rf /Users/$USER/Library/Caches/Homebrew/downloads/*
|
||||
|
||||
# Uninstall expect used in configure-machine.sh
|
||||
brew uninstall expect
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
# This script adds permissions, which are required for some installed tools to work properly, to the TCC.db
|
||||
################################################################################
|
||||
## File: configure-tccdb-macos.sh
|
||||
## Desc: Configure permissions to the TCC.db
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
@@ -20,7 +22,7 @@ systemValuesArray=(
|
||||
"'kTCCServiceScreenCapture','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1599831148"
|
||||
"'kTCCServiceScreenCapture','com.devexpress.testcafe-browser-tools',0,2,3,1,X'fade0c0000000068000000010000000700000007000000080000001443fa4ca5141baeda21aeca1f50894673b440d4690000000800000014f8afcf6e69791b283e55bd0b03e39e422745770e0000000800000014bf4fc1aed64c871a49fc6bc9dd3878ce5d4d17c6',NULL,0,'UNUSED',NULL,0,1687952810"
|
||||
"'kTCCServicePostEvent','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1644565949"
|
||||
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',0,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
|
||||
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
|
||||
"'kTCCServiceAccessibility','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552"
|
||||
# Allow Full Disk Access for "Microsoft Defender for macOS" to bypass installation on-flight
|
||||
@@ -30,7 +32,7 @@ systemValuesArray=(
|
||||
"'kTCCServiceSystemPolicyNetworkVolumes','com.apple.Terminal',0,2,4,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'UNUSED',NULL,0,1678990068"
|
||||
)
|
||||
for values in "${systemValuesArray[@]}"; do
|
||||
if is_Sonoma; then
|
||||
if is_Sonoma || is_Sequoia; then
|
||||
# TCC access table in Sonoma has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
|
||||
configure_system_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
else
|
||||
@@ -60,11 +62,11 @@ userValuesArray=(
|
||||
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1650386089"
|
||||
"'kTCCServicePostEvent','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
|
||||
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',0,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
|
||||
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1592919552"
|
||||
)
|
||||
for values in "${userValuesArray[@]}"; do
|
||||
if is_Sonoma; then
|
||||
if is_Sonoma || is_Sequoia; then
|
||||
# TCC access table in Sonoma has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
|
||||
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
else
|
||||
|
||||
+12
-9
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-windows.sh
|
||||
## Desc: Close open windows
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
@@ -9,11 +13,10 @@ if is_Arm64; then
|
||||
fi
|
||||
|
||||
retry=10
|
||||
while [ $retry -gt 0 ]; do
|
||||
while [[ $retry -gt 0 ]]; do
|
||||
openwindows=$(osascript -e 'tell application "System Events" to get every window of (every process whose class of windows contains window)') && break
|
||||
|
||||
retry=$((retry-1))
|
||||
if [ $retry -eq 0 ]; then
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
echo "No retry attempts left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -21,19 +24,19 @@ while [ $retry -gt 0 ]; do
|
||||
done
|
||||
IFS=',' read -r -a windowslist <<< "$openwindows"
|
||||
|
||||
if [ -n "${openwindows}" ]; then
|
||||
if [[ -n ${openwindows} ]]; then
|
||||
echo "Found opened window:"
|
||||
fi
|
||||
|
||||
for window in "${windowslist[@]}"; do
|
||||
if [[ $window =~ "NotificationCenter" ]]; then
|
||||
echo "[Warning] $window"
|
||||
for key in ${!windowslist[@]}; do
|
||||
if [[ ${windowslist[$key]} =~ "NotificationCenter" ]]; then
|
||||
echo "[Warning] ${windowslist[$key]}"
|
||||
else
|
||||
echo " - ${window}" | xargs
|
||||
echo " - ${windowslist[$key]}" | xargs
|
||||
scripterror=true
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${scripterror}" = true ]; then
|
||||
if [[ ${scripterror} = true ]]; then
|
||||
exit 1
|
||||
fi
|
||||
+24
-35
@@ -1,51 +1,40 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
# What is this for?
|
||||
# This script fixes an issue appeared for some Xcode users where it would show long identifiers
|
||||
# in the list of simulators instead of usual short names. This is caused by duplicate simulators
|
||||
# being sometimes created after switching between Xcode versions, with the same
|
||||
# device type + runtime pair occurring more than once in your list of available simulators.
|
||||
# Instead of showing the same simulator name twice, Xcode defaults to simulator identifiers.
|
||||
#
|
||||
# What it does?
|
||||
# The script queries Xcode's `simctl` utility for all simulators you have, finds duplicate type + runtime pairs,
|
||||
# and offers you to delete them. After that, Xcode should return to displaying the list of simulators normally.
|
||||
# When searching for duplicates, the script sorts simulators by their creation time to make sure it deletes
|
||||
# the copy that was created more recently.
|
||||
#
|
||||
# License
|
||||
# This script was taken from https://gist.github.com/vlas-voloshin/f9982128200345cd3fb7 and some modifications made
|
||||
# Distributed by MIT license, license can be found at the bottom of this script
|
||||
################################################################################
|
||||
## File: configure-xcode-simulators.rb
|
||||
## Desc: List all simulators, find duplicate type and delete them.
|
||||
## Maintainer: @vlas-voloshin
|
||||
## script was taken from https://gist.github.com/vlas-voloshin/f9982128200345cd3fb7
|
||||
################################################################################
|
||||
|
||||
class SimDevice
|
||||
|
||||
|
||||
attr_accessor :runtime
|
||||
attr_accessor :name
|
||||
attr_accessor :identifier
|
||||
attr_accessor :timestamp
|
||||
|
||||
|
||||
def initialize(runtime, name, identifier, timestamp)
|
||||
@runtime = runtime
|
||||
@name = name
|
||||
@identifier = identifier
|
||||
@timestamp = timestamp
|
||||
end
|
||||
|
||||
|
||||
def to_s
|
||||
return "#{@name} - #{@runtime} (#{@identifier}) [#{@timestamp}]"
|
||||
end
|
||||
|
||||
|
||||
def equivalent_to_device(device)
|
||||
return @runtime == device.runtime && @name == device.name
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
# Executes a shell command and returns the result from stdout
|
||||
def execute_simctl_command(command)
|
||||
return %x[xcrun simctl #{command}]
|
||||
end
|
||||
|
||||
|
||||
# Retrieves the creation date/time of simulator with specified identifier
|
||||
def simulator_creation_date(identifier)
|
||||
directory = Dir.home() + "/Library/Developer/CoreSimulator/Devices/" + identifier
|
||||
@@ -60,14 +49,14 @@ class SimDevice
|
||||
return Time.now
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Deletes specified simulator
|
||||
def delete_device(device)
|
||||
execute_simctl_command("delete #{device.identifier}")
|
||||
end
|
||||
|
||||
|
||||
puts("Searching for simulators...")
|
||||
|
||||
|
||||
# Retrieve the list of existing simulators
|
||||
devices = []
|
||||
runtime = ""
|
||||
@@ -87,10 +76,10 @@ class SimDevice
|
||||
devices.push(device)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Sort the simulators by their creation timestamp, ascending
|
||||
devices = devices.sort { |a, b| a.timestamp <=> b.timestamp }
|
||||
|
||||
|
||||
duplicates = {}
|
||||
# Enumerate all devices except for the last one
|
||||
for i in 0..devices.count-2
|
||||
@@ -106,12 +95,12 @@ class SimDevice
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if duplicates.count == 0
|
||||
puts("You don't have duplicate simulators!")
|
||||
exit()
|
||||
end
|
||||
|
||||
|
||||
puts("Looks like you have #{duplicates.count} duplicate simulator#{duplicates.count > 1 ? "s" : ""}:")
|
||||
duplicates.each_pair do |duplicate, original|
|
||||
puts
|
||||
@@ -120,14 +109,14 @@ class SimDevice
|
||||
puts("#{original}")
|
||||
end
|
||||
puts
|
||||
|
||||
|
||||
puts("Each duplicate was determined as the one created later than the 'original'.")
|
||||
|
||||
|
||||
puts("Deleting...")
|
||||
duplicates.each_key do |duplicate|
|
||||
delete_device(duplicate)
|
||||
end
|
||||
|
||||
|
||||
puts("Done!")
|
||||
|
||||
=begin
|
||||
@@ -152,4 +141,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
=end
|
||||
=end
|
||||
+8
-4
@@ -1,6 +1,11 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-xcode.sh
|
||||
## Desc: Configure Xcode after installation
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
XCODE_LIST=($(get_toolset_value '.xcode.versions | reverse | .[].link'))
|
||||
DEFAULT_XCODE_VERSION=$(get_toolset_value '.xcode.default')
|
||||
|
||||
@@ -8,15 +13,14 @@ DEFAULT_XCODE_VERSION=$(get_toolset_value '.xcode.default')
|
||||
# Assets.xcassets : error : CoreData: error: (6922) I/O error for database
|
||||
# at $HOME/Library/Developer/Xcode/UserData/IB Support/Simulator Devices/{GUID}
|
||||
echo "Erase a device's contents and settings:"
|
||||
for XCODE_VERSION in "${XCODE_LIST[@]}"
|
||||
do
|
||||
for XCODE_VERSION in ${XCODE_LIST[@]}; do
|
||||
echo " Xcode Version: ${XCODE_VERSION}"
|
||||
launchctl remove com.apple.CoreSimulator.CoreSimulatorService || true
|
||||
#add sleep to let CoreSimulatorService to exit
|
||||
sleep 3
|
||||
|
||||
# Select xcode version by default
|
||||
sudo xcode-select -s "/Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer"
|
||||
sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer
|
||||
|
||||
# Erase a device's contents and settings
|
||||
xcrun simctl erase all
|
||||
@@ -27,4 +31,4 @@ done
|
||||
|
||||
# Select xcode version by default
|
||||
echo "Setting Xcode ${DEFAULT_XCODE_VERSION} as default"
|
||||
sudo xcode-select -s "/Applications/Xcode_${DEFAULT_XCODE_VERSION}.app/Contents/Developer"
|
||||
sudo xcode-select -s /Applications/Xcode_${DEFAULT_XCODE_VERSION}.app/Contents/Developer
|
||||
@@ -1,61 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
###########################################################################
|
||||
# The main idea of this script is to automate dotnet installs
|
||||
# Based on:
|
||||
# https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script
|
||||
#
|
||||
###########################################################################
|
||||
source ~/utils/utils.sh
|
||||
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
|
||||
arch=$(get_arch)
|
||||
|
||||
# Download installer from dot.net and keep it locally
|
||||
DOTNET_INSTALL_SCRIPT="https://dot.net/v1/dotnet-install.sh"
|
||||
download_with_retries $DOTNET_INSTALL_SCRIPT .
|
||||
chmod +x ./dotnet-install.sh
|
||||
|
||||
ARGS_LIST=()
|
||||
echo "Parsing dotnet SDK (except rc and preview versions) from .json..."
|
||||
|
||||
DOTNET_VERSIONS=($(get_toolset_value ".dotnet.arch[\"$arch\"].versions | .[]"))
|
||||
|
||||
for DOTNET_VERSION in "${DOTNET_VERSIONS[@]}"; do
|
||||
RELEASE_URL="https://raw.githubusercontent.com/dotnet/core/main/release-notes/${DOTNET_VERSION}/releases.json"
|
||||
download_with_retries "$RELEASE_URL" "/tmp" "dotnet_${DOTNET_VERSION}.json"
|
||||
|
||||
if [[ $DOTNET_VERSION == "6.0" ]]; then
|
||||
ARGS_LIST+=(
|
||||
$(cat /tmp/dotnet_${DOTNET_VERSION}.json | jq -r 'first(.releases[].sdks[]?.version | select(contains("preview") or contains("rc") | not))')
|
||||
)
|
||||
else
|
||||
ARGS_LIST+=(
|
||||
$(cat /tmp/dotnet_${DOTNET_VERSION}.json | \
|
||||
jq -r '.releases[].sdk."version"' | grep -v -E '\-(preview|rc)\d*' | \
|
||||
sort -r | rev | uniq -s 2 | rev)
|
||||
)
|
||||
fi
|
||||
done
|
||||
|
||||
for ARGS in "${ARGS_LIST[@]}"; do
|
||||
./dotnet-install.sh --version $ARGS -NoPath --arch $arch
|
||||
done
|
||||
|
||||
rm ./dotnet-install.sh
|
||||
|
||||
# dotnet installer doesn't create symlink to executable in /user/local/bin
|
||||
# Moreover at that moment /user/local/bin doesn't exist (though already added to $PATH)
|
||||
ln -s ~/.dotnet/dotnet /usr/local/bin/dotnet
|
||||
|
||||
# Validate installation
|
||||
if [ $(dotnet --list-sdks | wc -l) -lt "1" ]; then
|
||||
echo "The .NET Core SDK is not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> "$HOME/.bashrc"
|
||||
echo "Dotnet operations have been completed successfully..."
|
||||
|
||||
invoke_tests "Common" ".NET"
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
source ~/utils/utils.sh
|
||||
|
||||
DEFAULT_GO_VERSION=$(get_toolset_value '.go.default')
|
||||
echo "Installing Go..."
|
||||
brew_smart_install "go@${DEFAULT_GO_VERSION}"
|
||||
|
||||
# Create symlinks to preserve backward compatibility. Symlinks are not created when non-latest go is being installed
|
||||
ln -sf $(brew --prefix go@${DEFAULT_GO_VERSION})/bin/* /usr/local/bin/
|
||||
|
||||
invoke_tests "Common" "Go"
|
||||
+7
-9
@@ -1,22 +1,20 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
|
||||
################################################################################
|
||||
## File: action-archive-cache.sh
|
||||
## Desc: Download latest release from https://github.com/actions/action-verions
|
||||
## and un-tar to $HOME/actionarchivecache
|
||||
## File: install-actions-cache.sh
|
||||
## Desc: Download latest release from https://github.com/actions/action-versions
|
||||
## Maintainer: #actions-runtime and @TingluoHuang
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Check if ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE folder exist..."
|
||||
if [ ! -d $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE ]; then
|
||||
if [[ ! -d $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE ]]; then
|
||||
mkdir -p $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
fi
|
||||
|
||||
downloadUrl=$(get_github_package_download_url "actions/action-versions" "contains(\"action-versions.tar.gz\")" "latest")
|
||||
echo "Downloading action-versions $downloadUrl"
|
||||
download_with_retries "$downloadUrl" "/tmp" action-versions.tar.gz
|
||||
tar -xzf /tmp/action-versions.tar.gz -C $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
download_url=$(resolve_github_release_asset_url "actions/action-versions" "contains(\"action-versions.tar.gz\")" "latest" "$API_PAT")
|
||||
echo "Downloading action-versions $download_url"
|
||||
archive_path=$(download_with_retry $download_url)
|
||||
tar -xzf $archive_path -C $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
|
||||
invoke_tests "ActionArchiveCache"
|
||||
+43
-44
@@ -1,56 +1,58 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-android-sdk.sh
|
||||
## Desc: Install Android SDK, NDK and tools
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
function filter_components_by_version {
|
||||
minimumVersion=$1
|
||||
add_filtered_installation_components() {
|
||||
local minimum_version=$1
|
||||
shift
|
||||
toolsArr=("$@")
|
||||
local tools_array=("$@")
|
||||
|
||||
for item in ${toolsArr[@]}
|
||||
do
|
||||
# take the last argument after spliting string by ';'' and '-''
|
||||
for item in ${tools_array[@]}; do
|
||||
# take the last argument after splitting string by ';'' and '-''
|
||||
version=$(echo "${item##*[-;]}")
|
||||
if verlte $minimumVersion $version
|
||||
then
|
||||
if [[ "$(printf "${minimum_version}\n${version}\n" | sort -V | head -n1)" == "$minimum_version" ]]; then
|
||||
components+=($item)
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function get_full_ndk_version {
|
||||
majorVersion=$1
|
||||
ndkVersion=$(${SDKMANAGER} --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
||||
get_full_ndk_version() {
|
||||
local majorVersion=$1
|
||||
|
||||
ndkVersion=$(${SDKMANAGER} --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
||||
echo "$ndkVersion"
|
||||
}
|
||||
|
||||
components=()
|
||||
|
||||
ANDROID_PLATFORM=$(get_toolset_value '.android.platform_min_version')
|
||||
ANDROID_BUILD_TOOL=$(get_toolset_value '.android.build_tools_min_version')
|
||||
ANDROID_EXTRA_LIST=($(get_toolset_value '.android."extra-list"[]'))
|
||||
ANDROID_ADDON_LIST=($(get_toolset_value '.android."addon-list"[]'))
|
||||
ANDROID_ADDITIONAL_TOOLS=($(get_toolset_value '.android."additional-tools"[]'))
|
||||
ANDROID_NDK_MAJOR_VERSIONS=($(get_toolset_value '.android.ndk."versions"[]'))
|
||||
ANDROID_NDK_MAJOR_DEFAULT=$(get_toolset_value '.android.ndk.default')
|
||||
ANDROID_NDK_MAJOR_LATEST=$(get_toolset_value '.android.ndk."versions"[-1]')
|
||||
android_platform=$(get_toolset_value '.android.platform_min_version')
|
||||
android_build_tool=$(get_toolset_value '.android.build_tools_min_version')
|
||||
android_extra_list=($(get_toolset_value '.android."extras"[]'))
|
||||
android_addon_list=($(get_toolset_value '.android."addons"[]'))
|
||||
android_additional_tools=($(get_toolset_value '.android."additional_tools"[]'))
|
||||
android_ndk_major_versions=($(get_toolset_value '.android.ndk."versions"[]'))
|
||||
android_ndk_major_default=$(get_toolset_value '.android.ndk.default')
|
||||
android_ndk_major_latest=$(get_toolset_value '.android.ndk."versions"[-1]')
|
||||
# Get the latest command line tools from https://developer.android.com/studio#cmdline-tools
|
||||
# Newer version(s) require Java 11 by default
|
||||
# See https://github.com/actions/runner-images/issues/6960
|
||||
ANDROID_HOME=$HOME/Library/Android/sdk
|
||||
ANDROID_OSX_SDK_FILE=tools-macosx.zip
|
||||
|
||||
# Download the latest command line tools so that we can accept all of the licenses.
|
||||
# See https://developer.android.com/studio/#command-tools
|
||||
cmdlineToolsVersion=$(get_toolset_value '.android."cmdline-tools"')
|
||||
|
||||
if [[ $cmdlineToolsVersion == "latest" ]]; then
|
||||
repositoryXmlUrl="https://dl.google.com/android/repository/repository2-1.xml"
|
||||
download_with_retries $repositoryXmlUrl "/tmp" "repository2-1.xml"
|
||||
repository_xml_url="https://dl.google.com/android/repository/repository2-1.xml"
|
||||
repository_xml_path=$(download_with_retry $repository_xml_url)
|
||||
cmdlineToolsVersion=$(
|
||||
yq -p=xml \
|
||||
'.sdk-repository.remotePackage[] | select(."+@path" == "cmdline-tools;latest" and .channelRef."+@ref" == "channel-0").archives.archive[].complete.url | select(contains("commandlinetools-mac"))' \
|
||||
/tmp/repository2-1.xml
|
||||
"$repository_xml_path"
|
||||
)
|
||||
|
||||
if [[ -z $cmdlineToolsVersion ]]; then
|
||||
@@ -60,16 +62,15 @@ if [[ $cmdlineToolsVersion == "latest" ]]; then
|
||||
fi
|
||||
|
||||
echo "Downloading android command line tools..."
|
||||
download_with_retries "https://dl.google.com/android/repository/${cmdlineToolsVersion}" /tmp $ANDROID_OSX_SDK_FILE
|
||||
archive_path=$(download_with_retry "https://dl.google.com/android/repository/${cmdlineToolsVersion}")
|
||||
|
||||
echo "Uncompressing android command line tools..."
|
||||
mkdir -p $HOME/Library/Android/sdk
|
||||
unzip -q /tmp/$ANDROID_OSX_SDK_FILE -d $HOME/Library/Android/sdk/cmdline-tools
|
||||
# Command line tools need to be placed in $HOME/Library/Android/sdk/cmdline-tools/latest to function properly
|
||||
mv $HOME/Library/Android/sdk/cmdline-tools/cmdline-tools $HOME/Library/Android/sdk/cmdline-tools/latest
|
||||
rm -f /tmp/$ANDROID_OSX_SDK_FILE
|
||||
mkdir -p "$ANDROID_HOME"
|
||||
unzip -q "$archive_path" -d "$ANDROID_HOME/cmdline-tools"
|
||||
# Command line tools need to be placed in $ANDROID_HOME/cmdline-tools/latest to function properly
|
||||
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
|
||||
|
||||
echo ANDROID_HOME is $ANDROID_HOME
|
||||
echo ANDROID_HOME is "$ANDROID_HOME"
|
||||
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest:$ANDROID_HOME/cmdline-tools/latest/bin
|
||||
|
||||
SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager
|
||||
@@ -78,15 +79,15 @@ echo "Installing latest tools & platform tools..."
|
||||
echo y | $SDKMANAGER "tools" "platform-tools"
|
||||
|
||||
echo "Installing latest ndk..."
|
||||
for ndk_version in "${ANDROID_NDK_MAJOR_VERSIONS[@]}"
|
||||
for ndk_version in "${android_ndk_major_versions[@]}"
|
||||
do
|
||||
ndk_full_version=$(get_full_ndk_version $ndk_version)
|
||||
echo y | $SDKMANAGER "ndk;$ndk_full_version"
|
||||
done
|
||||
|
||||
ndkDefault=$(get_full_ndk_version $ANDROID_NDK_MAJOR_DEFAULT)
|
||||
ndkDefault=$(get_full_ndk_version $android_ndk_major_default)
|
||||
ANDROID_NDK_HOME=$ANDROID_HOME/ndk/$ndkDefault
|
||||
ndkLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST)
|
||||
ndkLatest=$(get_full_ndk_version $android_ndk_major_latest)
|
||||
ANDROID_NDK_LATEST_HOME=$ANDROID_HOME/ndk/$ndkLatest
|
||||
# ANDROID_NDK, ANDROID_NDK_HOME, and ANDROID_NDK_ROOT variables should be set as many customer builds depend on them https://github.com/actions/runner-images/issues/5879
|
||||
echo "export ANDROID_NDK=$ANDROID_NDK_HOME" >> "${HOME}/.bashrc"
|
||||
@@ -95,39 +96,37 @@ echo "export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME" >> "${HOME}/.bashrc"
|
||||
echo "export ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" >> "${HOME}/.bashrc"
|
||||
|
||||
availablePlatforms=($($SDKMANAGER --list | grep "platforms;android-[0-9]" | cut -d"|" -f 1 | sort -u))
|
||||
filter_components_by_version $ANDROID_PLATFORM "${availablePlatforms[@]}"
|
||||
add_filtered_installation_components $android_platform "${availablePlatforms[@]}"
|
||||
|
||||
allBuildTools=($($SDKMANAGER --list --include_obsolete | grep "build-tools;" | cut -d"|" -f 1 | sort -u))
|
||||
availableBuildTools=$(echo ${allBuildTools[@]//*rc[0-9]/})
|
||||
filter_components_by_version $ANDROID_BUILD_TOOL "${availableBuildTools[@]}"
|
||||
add_filtered_installation_components $android_build_tool "${availableBuildTools[@]}"
|
||||
|
||||
echo "y" | $SDKMANAGER ${components[@]}
|
||||
|
||||
for extra_name in "${ANDROID_EXTRA_LIST[@]}"
|
||||
for extra_name in "${android_extra_list[@]}"
|
||||
do
|
||||
echo "Installing extra $extra_name ..."
|
||||
echo y | $SDKMANAGER "extras;$extra_name"
|
||||
done
|
||||
|
||||
for addon_name in "${ANDROID_ADDON_LIST[@]}"
|
||||
for addon_name in "${android_addon_list[@]}"
|
||||
do
|
||||
echo "Installing add-on $addon_name ..."
|
||||
echo y | $SDKMANAGER "add-ons;$addon_name"
|
||||
done
|
||||
|
||||
for tool_name in "${ANDROID_ADDITIONAL_TOOLS[@]}"
|
||||
for tool_name in "${android_additional_tools[@]}"
|
||||
do
|
||||
echo "Installing additional tool $tool_name ..."
|
||||
echo y | $SDKMANAGER "$tool_name"
|
||||
done
|
||||
|
||||
# Download SDK tools to preserve backward compatibility
|
||||
sdkTools="android-sdk-tools.zip"
|
||||
sdkToolsVersion=$(get_toolset_value '.android."sdk-tools"')
|
||||
if [ "$sdkToolsVersion" != "null" ]; then
|
||||
download_with_retries "https://dl.google.com/android/repository/${sdkToolsVersion}" "." $sdkTools
|
||||
unzip -o -qq $sdkTools -d ${ANDROID_SDK_ROOT}
|
||||
rm -f $sdkTools
|
||||
sdk_tools_version=$(get_toolset_value '.android."sdk-tools"')
|
||||
if [ "$sdk_tools_version" != "null" ]; then
|
||||
sdk_tools_archive_path=$(download_with_retry "https://dl.google.com/android/repository/${sdk_tools_version}")
|
||||
unzip -o -qq "$sdk_tools_archive_path" -d "${ANDROID_SDK_ROOT}"
|
||||
fi
|
||||
|
||||
invoke_tests "Android"
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-apache.sh
|
||||
## Desc: Install Apache HTTP Server
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
brew_smart_install httpd
|
||||
sudo sed -Ei '' 's/Listen .*/Listen 80/' $(brew --prefix)/etc/httpd/httpd.conf
|
||||
|
||||
invoke_tests "WebServers" "Apache"
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-audiodevice.sh
|
||||
## Desc: Install audio device
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "install switchaudio-osx"
|
||||
brew_smart_install "switchaudio-osx"
|
||||
|
||||
echo "install sox"
|
||||
brew_smart_install "sox"
|
||||
|
||||
invoke_tests "System" "Audio Device"
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-aws-tools.sh
|
||||
## Desc: Install the AWS CLI, Session Manager plugin for the AWS CLI, and AWS SAM CLI
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Installing aws..."
|
||||
awscliv2_pkg_path=$(download_with_retry "https://awscli.amazonaws.com/AWSCLIV2.pkg")
|
||||
sudo installer -pkg "$awscliv2_pkg_path" -target /
|
||||
|
||||
echo "Installing aws sam cli..."
|
||||
brew tap aws/tap
|
||||
brew_smart_install aws-sam-cli
|
||||
|
||||
echo "Install aws cli session manager"
|
||||
brew install --cask session-manager-plugin
|
||||
|
||||
invoke_tests "Common" "AWS"
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-azcopy.sh
|
||||
## Desc: Install AzCopy
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
if is_Arm64; then
|
||||
url="https://aka.ms/downloadazcopy-v10-mac-arm64"
|
||||
else
|
||||
url="https://aka.ms/downloadazcopy-v10-mac"
|
||||
fi
|
||||
|
||||
# Install AzCopy
|
||||
archive_path=$(download_with_retry ${url})
|
||||
unzip -qq $archive_path -d /tmp/azcopy
|
||||
extract_path=$(echo /tmp/azcopy/azcopy*)
|
||||
cp $extract_path/azcopy /usr/local/bin/azcopy
|
||||
chmod +x /usr/local/bin/azcopy
|
||||
|
||||
|
||||
invoke_tests "Common" "AzCopy"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user