mirror of
https://github.com/gradle/gradle-build-action.git
synced 2025-04-05 21:04:15 +02:00
Compare commits
1176 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
093dfe9d59 | ||
![]() |
b579b5c6ad | ||
![]() |
ac2d340dc0 | ||
![]() |
66535aaf56 | ||
![]() |
04b20c065c | ||
![]() |
db35f23046 | ||
![]() |
4c39dd82cd | ||
![]() |
e2097ccd7e | ||
![]() |
8baac4c8ef | ||
![]() |
595fa85721 | ||
![]() |
f02f491d0d | ||
![]() |
cb6e43f180 | ||
![]() |
bdf99f9dad | ||
![]() |
fe59895742 | ||
![]() |
928891f9d8 | ||
![]() |
942d5e1456 | ||
![]() |
2bd30acc50 | ||
![]() |
7b0e57d62d | ||
![]() |
585b565652 | ||
![]() |
29c0906b64 | ||
![]() |
ebc47c299c | ||
![]() |
0706ab3a3c | ||
![]() |
3b1b3b9a21 | ||
![]() |
d4bd442194 | ||
![]() |
4587492cf1 | ||
![]() |
ef85c4ed42 | ||
![]() |
7e08fe288b | ||
![]() |
4a8703fa34 | ||
![]() |
4a39eedb8c | ||
![]() |
272883a7ba | ||
![]() |
2a8bfcf231 | ||
![]() |
e1ada08a9a | ||
![]() |
a8e3e5e2b4 | ||
![]() |
2be01ca1c6 | ||
![]() |
a00827eebb | ||
![]() |
ad80850e98 | ||
![]() |
bd6d0a74d4 | ||
![]() |
1b6cac1f97 | ||
![]() |
90d7c1a069 | ||
![]() |
4062866f05 | ||
![]() |
83a95864e5 | ||
![]() |
60c43cb563 | ||
![]() |
75b3db10df | ||
![]() |
f1361c71c2 | ||
![]() |
49ade81b5d | ||
![]() |
79fa674432 | ||
![]() |
46878035be | ||
![]() |
42452daeb5 | ||
![]() |
346645706f | ||
![]() |
5516b39940 | ||
![]() |
7099569988 | ||
![]() |
610728fa8c | ||
![]() |
a835cbb991 | ||
![]() |
ee4d92bb22 | ||
![]() |
173b6ae553 | ||
![]() |
a01f794d92 | ||
![]() |
369fcc54d8 | ||
![]() |
6523a87c8f | ||
![]() |
11693a1169 | ||
![]() |
0e6b90783e | ||
![]() |
932abbbe13 | ||
![]() |
1a18d0b2d3 | ||
![]() |
7af89832c5 | ||
![]() |
b5ebb0cc96 | ||
![]() |
3a75647ad4 | ||
![]() |
4dda5928c7 | ||
![]() |
6c7537229b | ||
![]() |
650620f9f9 | ||
![]() |
d4e24dfc10 | ||
![]() |
7c57ba1136 | ||
![]() |
32bab5b15a | ||
![]() |
270f30ba56 | ||
![]() |
c00a847f3f | ||
![]() |
e2aa3f332c | ||
![]() |
ff5d63e9dc | ||
![]() |
4faac45dc8 | ||
![]() |
45ed60450e | ||
![]() |
72abd931ce | ||
![]() |
a4107da76d | ||
![]() |
d16a3f4093 | ||
![]() |
333078158e | ||
![]() |
34a07dced0 | ||
![]() |
24e9e9dc6b | ||
![]() |
bc72ac9e9d | ||
![]() |
c791d32284 | ||
![]() |
ceb0c736c1 | ||
![]() |
3f2ca32cb0 | ||
![]() |
5d2dd0dea4 | ||
![]() |
e865911745 | ||
![]() |
0538e78c32 | ||
![]() |
a4dabb3a70 | ||
![]() |
51b7a82e8e | ||
![]() |
92cb3fe7e8 | ||
![]() |
e843ea4565 | ||
![]() |
14b4921945 | ||
![]() |
9c7269b85b | ||
![]() |
a7b743845f | ||
![]() |
e6566cde89 | ||
![]() |
89f8dcd819 | ||
![]() |
93050d1483 | ||
![]() |
df38ec05e0 | ||
![]() |
b3f092e821 | ||
![]() |
63ce84df08 | ||
![]() |
57f3f23714 | ||
![]() |
38785d7d62 | ||
![]() |
a738af78ea | ||
![]() |
ae24bf6608 | ||
![]() |
334a4b8d4d | ||
![]() |
009bd36b91 | ||
![]() |
9d6738618d | ||
![]() |
f053e6b7e7 | ||
![]() |
c821b7c4f1 | ||
![]() |
982da8e78c | ||
![]() |
a0fc8606d2 | ||
![]() |
a1980784de | ||
![]() |
89e46180c6 | ||
![]() |
f95e9c7459 | ||
![]() |
8cbcb9948b | ||
![]() |
a71aff6a12 | ||
![]() |
77699bae74 | ||
![]() |
dc5927259f | ||
![]() |
4f0075d967 | ||
![]() |
e1f9864a52 | ||
![]() |
76d5a9b475 | ||
![]() |
39d8c6d06e | ||
![]() |
0280eb7de5 | ||
![]() |
87a9a15658 | ||
![]() |
375481748b | ||
![]() |
beff1c573c | ||
![]() |
21a3ebb55f | ||
![]() |
a5be560235 | ||
![]() |
9bca466e27 | ||
![]() |
f757bcfd86 | ||
![]() |
8b6c211905 | ||
![]() |
8db1c7621b | ||
![]() |
6eaacfc06c | ||
![]() |
750905c0ed | ||
![]() |
d5fbcc8361 | ||
![]() |
0e761ca2b4 | ||
![]() |
6b7c087721 | ||
![]() |
0bfe00a136 | ||
![]() |
62cce3c597 | ||
![]() |
842c587ad8 | ||
![]() |
4241e05054 | ||
![]() |
bfa3c0508e | ||
![]() |
c3bdce8205 | ||
![]() |
f92e7c3428 | ||
![]() |
d1b726d8c1 | ||
![]() |
6fcc109efa | ||
![]() |
fde5b4fcde | ||
![]() |
324fbdc804 | ||
![]() |
5658338fb0 | ||
![]() |
87ccc98a2a | ||
![]() |
4441c9f9bf | ||
![]() |
b5126f31db | ||
![]() |
d8615ccc8b | ||
![]() |
444c20baf7 | ||
![]() |
aea76e1766 | ||
![]() |
103e3a7ba7 | ||
![]() |
73e3fc21c7 | ||
![]() |
b063df05a4 | ||
![]() |
5e3952da92 | ||
![]() |
ed940a329a | ||
![]() |
3bfe3a4658 | ||
![]() |
8f08e41675 | ||
![]() |
ef76a971e2 | ||
![]() |
98d77952ea | ||
![]() |
3122f2c659 | ||
![]() |
53c4cf6c4c | ||
![]() |
f2d7085b02 | ||
![]() |
9124f04a83 | ||
![]() |
c304f927c4 | ||
![]() |
e3426b1f20 | ||
![]() |
d79398df06 | ||
![]() |
b9cd1d9e69 | ||
![]() |
d4db33d499 | ||
![]() |
05acc776e8 | ||
![]() |
33c9bfac14 | ||
![]() |
97d9c134b7 | ||
![]() |
a617adb316 | ||
![]() |
b156d58cac | ||
![]() |
b946c060aa | ||
![]() |
96bed685e4 | ||
![]() |
800e5e1e62 | ||
![]() |
ff3f4cfbf8 | ||
![]() |
a07019c726 | ||
![]() |
b17d107b8c | ||
![]() |
12dcfaa735 | ||
![]() |
9fb6114fb4 | ||
![]() |
50d07aa0e5 | ||
![]() |
3d49588efc | ||
![]() |
68e1dcdea4 | ||
![]() |
8cade330d4 | ||
![]() |
124cb765ee | ||
![]() |
243af859f8 | ||
![]() |
dc5f59ec6e | ||
![]() |
c87c55823d | ||
![]() |
cfdcfc37ed | ||
![]() |
193108951e | ||
![]() |
f9b4995b32 | ||
![]() |
4283247a19 | ||
![]() |
337198a5e3 | ||
![]() |
e3028deccc | ||
![]() |
cb1fda6460 | ||
![]() |
19e2bdf3c0 | ||
![]() |
891451e1fc | ||
![]() |
03f0ac2c51 | ||
![]() |
999ba18af8 | ||
![]() |
43f8f93391 | ||
![]() |
e8d1617724 | ||
![]() |
a4cf152f48 | ||
![]() |
a8aac055e2 | ||
![]() |
7241fa5d56 | ||
![]() |
9e58f8b1de | ||
![]() |
632e888003 | ||
![]() |
ced6859e9c | ||
![]() |
0904709a46 | ||
![]() |
1b94073332 | ||
![]() |
4821f54162 | ||
![]() |
2dbad1ea2d | ||
![]() |
915a66c096 | ||
![]() |
8e5c8782a3 | ||
![]() |
9f977db2d8 | ||
![]() |
fa27d06744 | ||
![]() |
a0fdbb009a | ||
![]() |
f59a6d4310 | ||
![]() |
b69de5f2a9 | ||
![]() |
3c11eee5f9 | ||
![]() |
4301451b53 | ||
![]() |
295170c2ce | ||
![]() |
ce999babab | ||
![]() |
ce35ffa374 | ||
![]() |
ad97b0f09e | ||
![]() |
29c79cfd95 | ||
![]() |
bd57605957 | ||
![]() |
f464d5c9e5 | ||
![]() |
cef72ff9e4 | ||
![]() |
7a67f395d2 | ||
![]() |
bc190ca89a | ||
![]() |
f01b48d89d | ||
![]() |
1e71bceb3f | ||
![]() |
9a4d99b236 | ||
![]() |
33f9bc031c | ||
![]() |
437bff62b6 | ||
![]() |
c0186c5832 | ||
![]() |
ee7ca6ac9b | ||
![]() |
063cc1c708 | ||
![]() |
820b228f28 | ||
![]() |
d0ffeaa089 | ||
![]() |
4c9c435d2f | ||
![]() |
a6ad1901be | ||
![]() |
d7761f188f | ||
![]() |
92c37aaab7 | ||
![]() |
1a6aca96f3 | ||
![]() |
90c9cfa90d | ||
![]() |
35af09efd8 | ||
![]() |
00309f16a9 | ||
![]() |
3273b6ada1 | ||
![]() |
f807993b34 | ||
![]() |
bde650d6f1 | ||
![]() |
40b6781dcd | ||
![]() |
626d937994 | ||
![]() |
6c3f1eadfe | ||
![]() |
8e02c8272a | ||
![]() |
f63cb02cfc | ||
![]() |
198484d871 | ||
![]() |
fce96e0d6a | ||
![]() |
75a86cfe02 | ||
![]() |
be413309fa | ||
![]() |
1b2daf5833 | ||
![]() |
4388b1f9e5 | ||
![]() |
07023d3e3e | ||
![]() |
c94d573317 | ||
![]() |
680037c65b | ||
![]() |
2bf6bc3646 | ||
![]() |
631021bf98 | ||
![]() |
d1c4012c0d | ||
![]() |
c097126a28 | ||
![]() |
b4a540a61f | ||
![]() |
c9a87440e3 | ||
![]() |
d23c38fad3 | ||
![]() |
a810b86311 | ||
![]() |
7e48093f71 | ||
![]() |
12681a2972 | ||
![]() |
a8aa75965b | ||
![]() |
a580d9bd57 | ||
![]() |
a13870c94e | ||
![]() |
55d241b8a2 | ||
![]() |
9cf99034d2 | ||
![]() |
6778644d75 | ||
![]() |
749f47bda3 | ||
![]() |
eb126d771e | ||
![]() |
5056fa9d50 | ||
![]() |
8a0051ffb2 | ||
![]() |
4f87177da0 | ||
![]() |
ff62946998 | ||
![]() |
2eddd207d6 | ||
![]() |
887e0bda35 | ||
![]() |
dac0b87334 | ||
![]() |
a8f0f0d523 | ||
![]() |
951bc8ab16 | ||
![]() |
c0e9e4809f | ||
![]() |
c5df77b4dd | ||
![]() |
f04973c111 | ||
![]() |
2287707267 | ||
![]() |
530c579a03 | ||
![]() |
f65e80839b | ||
![]() |
fed795f38c | ||
![]() |
a63ae37710 | ||
![]() |
6095a76664 | ||
![]() |
96015f1e52 | ||
![]() |
4a570433d8 | ||
![]() |
601a5d4aa4 | ||
![]() |
6df3b5baf5 | ||
![]() |
96374ed57d | ||
![]() |
59d37bdb61 | ||
![]() |
5abf330283 | ||
![]() |
86ee4f1f60 | ||
![]() |
e0391a3985 | ||
![]() |
09af07ef76 | ||
![]() |
b47aad4750 | ||
![]() |
758ee5a303 | ||
![]() |
50f436c485 | ||
![]() |
32863c1a40 | ||
![]() |
b744d1079a | ||
![]() |
bff802913e | ||
![]() |
cacfec068e | ||
![]() |
935e8941dd | ||
![]() |
cfc50b189a | ||
![]() |
7e68f96bb3 | ||
![]() |
e444647395 | ||
![]() |
970a1475f1 | ||
![]() |
d9106fb21d | ||
![]() |
6f59210bbe | ||
![]() |
a8cfaf666b | ||
![]() |
c82ad7fca4 | ||
![]() |
e70e4c5e6b | ||
![]() |
2bc6cca4b8 | ||
![]() |
38bf8d67e6 | ||
![]() |
1c56ebc005 | ||
![]() |
7b3886699e | ||
![]() |
c7ca785b85 | ||
![]() |
dbca794d9a | ||
![]() |
cbd0ff0688 | ||
![]() |
1e6c29c1af | ||
![]() |
d518883ba8 | ||
![]() |
b3d342ca6a | ||
![]() |
f7e0e454da | ||
![]() |
60499ea6fd | ||
![]() |
e4ca0fdab0 | ||
![]() |
9adc0d5566 | ||
![]() |
b1d3b7d6a0 | ||
![]() |
43879ebea6 | ||
![]() |
a64e4c087d | ||
![]() |
3952b17b6f | ||
![]() |
cb48b1f38e | ||
![]() |
68ef9a8880 | ||
![]() |
980f056e16 | ||
![]() |
57f5c44cc6 | ||
![]() |
e34d59c741 | ||
![]() |
3d966761cf | ||
![]() |
1b220aef6b | ||
![]() |
a40cc892c0 | ||
![]() |
7a088f07a3 | ||
![]() |
ce77f6daf4 | ||
![]() |
ba25077191 | ||
![]() |
ea2e601207 | ||
![]() |
4ebaed58ba | ||
![]() |
9884d8f3dc | ||
![]() |
2e30e4cc65 | ||
![]() |
2fcb85ffb5 | ||
![]() |
617a29d5b5 | ||
![]() |
0ea8b0085d | ||
![]() |
084bf86b45 | ||
![]() |
a1c0141aa8 | ||
![]() |
19307c73ca | ||
![]() |
12054785f0 | ||
![]() |
5d67aff3ea | ||
![]() |
c2abdfc02b | ||
![]() |
4d24cb28d8 | ||
![]() |
9db683d515 | ||
![]() |
45abe419bb | ||
![]() |
d9799478b8 | ||
![]() |
579b14502b | ||
![]() |
a0cffe83e1 | ||
![]() |
add2af0efd | ||
![]() |
1fcc75d614 | ||
![]() |
5df685c7b2 | ||
![]() |
ee7cbb6fb4 | ||
![]() |
1d2e9eb287 | ||
![]() |
2df8f7bc66 | ||
![]() |
3fbe033aaa | ||
![]() |
0842a550d1 | ||
![]() |
3b959539de | ||
![]() |
c267ad1fcb | ||
![]() |
fab7664a6a | ||
![]() |
a5b34e05de | ||
![]() |
a4b5212a9d | ||
![]() |
ad59e53998 | ||
![]() |
c224a16628 | ||
![]() |
ec783957f3 | ||
![]() |
6b08b7d2b5 | ||
![]() |
fd32ae9081 | ||
![]() |
8545e5aed7 | ||
![]() |
d92395703c | ||
![]() |
af916fa394 | ||
![]() |
3d9f1fdd28 | ||
![]() |
387c8bc97a | ||
![]() |
31c4390f56 | ||
![]() |
05b706c1e7 | ||
![]() |
b9a8697f71 | ||
![]() |
394498f89f | ||
![]() |
c295a4096e | ||
![]() |
74a56b60ce | ||
![]() |
aeb3e0fcd7 | ||
![]() |
8a17724c3e | ||
![]() |
76ed799d26 | ||
![]() |
dd8493d4f2 | ||
![]() |
66061a0409 | ||
![]() |
1a66a38284 | ||
![]() |
bf471096d3 | ||
![]() |
e8a7e1402f | ||
![]() |
0e3ce37aac | ||
![]() |
8d2472536e | ||
![]() |
832889a6eb | ||
![]() |
61f7cb1f75 | ||
![]() |
e440eaf750 | ||
![]() |
570f67893a | ||
![]() |
402732a560 | ||
![]() |
a6f860c57c | ||
![]() |
657d21ac23 | ||
![]() |
688380a438 | ||
![]() |
cce16c4e36 | ||
![]() |
b50380a07d | ||
![]() |
aa2854e6ea | ||
![]() |
471bcda20a | ||
![]() |
91306f47ea | ||
![]() |
65c865a172 | ||
![]() |
1761dcff13 | ||
![]() |
356abb47e7 | ||
![]() |
fc9e8feb61 | ||
![]() |
0e4b100458 | ||
![]() |
82bc72e1e7 | ||
![]() |
8be955ee80 | ||
![]() |
531cc21aeb | ||
![]() |
164712adb1 | ||
![]() |
535b494721 | ||
![]() |
d6110ecac2 | ||
![]() |
cc60593845 | ||
![]() |
fb549a8417 | ||
![]() |
c64fe31590 | ||
![]() |
6e56b59601 | ||
![]() |
c77676cc69 | ||
![]() |
f39ea084f9 | ||
![]() |
27a2f232f6 | ||
![]() |
b4c3d51488 | ||
![]() |
99ec710825 | ||
![]() |
d427a379a8 | ||
![]() |
ed5f3e6998 | ||
![]() |
11c5fa73ac | ||
![]() |
3e3c80e9b4 | ||
![]() |
25ec178747 | ||
![]() |
3cc0a8f6bb | ||
![]() |
915123c493 | ||
![]() |
ef638c00fd | ||
![]() |
05257c7a5f | ||
![]() |
c1a6f51e61 | ||
![]() |
865815e1b6 | ||
![]() |
eb22e65b5b | ||
![]() |
8a386f6915 | ||
![]() |
84bc83e639 | ||
![]() |
cd579d970f | ||
![]() |
f0ec7fb780 | ||
![]() |
bf2a15ee94 | ||
![]() |
c85b5e1be7 | ||
![]() |
330980897f | ||
![]() |
9411346324 | ||
![]() |
8f9b7c7d7f | ||
![]() |
8df5664474 | ||
![]() |
25e9b4d3f6 | ||
![]() |
b49446f8e1 | ||
![]() |
cbebff71e9 | ||
![]() |
e4e8267f88 | ||
![]() |
1e61c9a322 | ||
![]() |
1a981dbaeb | ||
![]() |
58e9059de1 | ||
![]() |
a62a2e6297 | ||
![]() |
daa635c20c | ||
![]() |
9ee08ff30d | ||
![]() |
f4ef189a47 | ||
![]() |
8e9c25766c | ||
![]() |
8ca744f938 | ||
![]() |
f1b090783c | ||
![]() |
8624823510 | ||
![]() |
203397ae27 | ||
![]() |
2aee3e724e | ||
![]() |
a1707fcc88 | ||
![]() |
b173558d72 | ||
![]() |
d1ddcc2b6a | ||
![]() |
1f2d557283 | ||
![]() |
544b84f77b | ||
![]() |
23d17c1372 | ||
![]() |
ba3953a01d | ||
![]() |
02e50e0dcd | ||
![]() |
cd48d2d9f1 | ||
![]() |
a81a96bcb6 | ||
![]() |
7a5430f22f | ||
![]() |
6b46ca579b | ||
![]() |
933706c9f3 | ||
![]() |
f524932f69 | ||
![]() |
115127d4c2 | ||
![]() |
115f70f942 | ||
![]() |
1c23b66302 | ||
![]() |
7a714ca5cb | ||
![]() |
f559e1b425 | ||
![]() |
5c38a9cbe9 | ||
![]() |
ede6deb03b | ||
![]() |
e3c7fbbbf0 | ||
![]() |
a5bedc5d4f | ||
![]() |
97590ddc37 | ||
![]() |
41839de420 | ||
![]() |
ad8dc7ef6a | ||
![]() |
35da154adf | ||
![]() |
3e0e3a6dea | ||
![]() |
25d3ae13f9 | ||
![]() |
5db8d22748 | ||
![]() |
86acd2a1fd | ||
![]() |
3f1275846c | ||
![]() |
ef1e109eb6 | ||
![]() |
5c54c52839 | ||
![]() |
89ea1bd733 | ||
![]() |
444dfef7d6 | ||
![]() |
957e1cc621 | ||
![]() |
731c4e9bf4 | ||
![]() |
6700f3a162 | ||
![]() |
1691ab51b6 | ||
![]() |
27f9f12663 | ||
![]() |
474cf85207 | ||
![]() |
37c9711406 | ||
![]() |
cd3cedc781 | ||
![]() |
e54bfe60d4 | ||
![]() |
d70ff19b06 | ||
![]() |
45417006b1 | ||
![]() |
925e60d017 | ||
![]() |
47a028a7f5 | ||
![]() |
7df347a3ca | ||
![]() |
d742f2f6db | ||
![]() |
e4c0d1d512 | ||
![]() |
64a1064eca | ||
![]() |
bc57473979 | ||
![]() |
11ea84dec5 | ||
![]() |
5a614fb332 | ||
![]() |
d3a8ea948b | ||
![]() |
fba23f26a1 | ||
![]() |
683f9d4247 | ||
![]() |
f87d5a33c9 | ||
![]() |
42014fb4fa | ||
![]() |
2da06d5689 | ||
![]() |
792a93a5e3 | ||
![]() |
86da5e6c4e | ||
![]() |
6daf446e27 | ||
![]() |
8a8f74b15c | ||
![]() |
15453523bd | ||
![]() |
b1b0eab63d | ||
![]() |
f580ce7b99 | ||
![]() |
2a7ffc9c95 | ||
![]() |
ff6b0e0388 | ||
![]() |
71e1e1b52b | ||
![]() |
02b67b8bfe | ||
![]() |
5ce69a34b6 | ||
![]() |
e7f3e4d839 | ||
![]() |
7645d3e274 | ||
![]() |
be13141ec7 | ||
![]() |
db33711f5a | ||
![]() |
84dee23dd9 | ||
![]() |
a603ab7405 | ||
![]() |
bc41b8f654 | ||
![]() |
32923891b5 | ||
![]() |
fecf3693b5 | ||
![]() |
6965e8ed4c | ||
![]() |
884bca012f | ||
![]() |
7f46dbd76f | ||
![]() |
ea4554d4d2 | ||
![]() |
d8b58e3519 | ||
![]() |
4cb86e9712 | ||
![]() |
eaed5520c4 | ||
![]() |
ec939a8c10 | ||
![]() |
6594e9d359 | ||
![]() |
52e6e7d89f | ||
![]() |
2bf1894aa3 | ||
![]() |
795895fc71 | ||
![]() |
98376690f1 | ||
![]() |
67421db6bd | ||
![]() |
ce3874fec9 | ||
![]() |
67f42d16a1 | ||
![]() |
56036f8577 | ||
![]() |
1903bd4674 | ||
![]() |
df4c1902a6 | ||
![]() |
132237ba05 | ||
![]() |
2335d51128 | ||
![]() |
2f7e5c0d4b | ||
![]() |
2248b3f239 | ||
![]() |
7d8a9a65e5 | ||
![]() |
bc39e4abaa | ||
![]() |
26cd1c9794 | ||
![]() |
5ccc7fa6a6 | ||
![]() |
badf18c0a6 | ||
![]() |
1ee84620f9 | ||
![]() |
f1c1269910 | ||
![]() |
c09f41c4bd | ||
![]() |
829c7a236d | ||
![]() |
c1ed8b1925 | ||
![]() |
3d091fa7a8 | ||
![]() |
a8d44c9749 | ||
![]() |
6125b490f2 | ||
![]() |
f75a77b009 | ||
![]() |
3510b43886 | ||
![]() |
61ba2ad220 | ||
![]() |
4b449e5b54 | ||
![]() |
b8f0ecc408 | ||
![]() |
c2bd86551b | ||
![]() |
92087b6bb6 | ||
![]() |
9355458b6c | ||
![]() |
4ec1021d58 | ||
![]() |
f3e4903860 | ||
![]() |
c5d80a628f | ||
![]() |
ee54c1fd71 | ||
![]() |
f33d84950e | ||
![]() |
d20c5c0356 | ||
![]() |
c207cf448f | ||
![]() |
a534572737 | ||
![]() |
acf6027bd2 | ||
![]() |
f6ab09b0bf | ||
![]() |
55ddd21594 | ||
![]() |
33ed11e54c | ||
![]() |
93c31ca3b5 | ||
![]() |
7a15005377 | ||
![]() |
e88ed3e650 | ||
![]() |
de51428ba5 | ||
![]() |
8096e65e0a | ||
![]() |
9cd70b5460 | ||
![]() |
63bcd47c1b | ||
![]() |
306a7e4bb2 | ||
![]() |
c34d4a9731 | ||
![]() |
213bb63776 | ||
![]() |
4ca4968624 | ||
![]() |
fd1882690a | ||
![]() |
0b5047ec4d | ||
![]() |
a4a9a30e86 | ||
![]() |
865c16699a | ||
![]() |
52ebf2721a | ||
![]() |
aea6ddad5b | ||
![]() |
a7f880172e | ||
![]() |
e644288a42 | ||
![]() |
e234151ec9 | ||
![]() |
44e1837ae3 | ||
![]() |
b400dc555d | ||
![]() |
3f2d9cde44 | ||
![]() |
6001bc9edc | ||
![]() |
5203a0b09d | ||
![]() |
500607bc35 | ||
![]() |
754892d4ae | ||
![]() |
ea24a0ad75 | ||
![]() |
748dc30fdc | ||
![]() |
e4ed35bcaf | ||
![]() |
ece69c52b2 | ||
![]() |
14c898b500 | ||
![]() |
00cdd4dcf9 | ||
![]() |
b02f4f1968 | ||
![]() |
0a36ca9fb8 | ||
![]() |
fe92974cdf | ||
![]() |
6aa41b32df | ||
![]() |
4fa0803854 | ||
![]() |
9ab4abd18c | ||
![]() |
f375a232f2 | ||
![]() |
85daf96c6d | ||
![]() |
8b56c4af06 | ||
![]() |
4da299730b | ||
![]() |
dff0fe1b20 | ||
![]() |
ae74c01440 | ||
![]() |
cde0632795 | ||
![]() |
6cc033f2b3 | ||
![]() |
8aaf080d68 | ||
![]() |
4378b83ae3 | ||
![]() |
d3a78eb55f | ||
![]() |
f4d1e351c0 | ||
![]() |
7b79b2a752 | ||
![]() |
143774290e | ||
![]() |
a9a5bcf180 | ||
![]() |
f9c8fcf79f | ||
![]() |
86e82987ba | ||
![]() |
5fe4df6233 | ||
![]() |
d79b3ba8ae | ||
![]() |
8f3c97e3f1 | ||
![]() |
d95713bd5d | ||
![]() |
bdf9736c53 | ||
![]() |
7e85212f59 | ||
![]() |
0c692feedb | ||
![]() |
78da7b9646 | ||
![]() |
992ccebeea | ||
![]() |
c13dc6c789 | ||
![]() |
5e6af67a5e | ||
![]() |
e32d23f291 | ||
![]() |
a880eab216 | ||
![]() |
6c8fe00271 | ||
![]() |
c37c1fb693 | ||
![]() |
0c3292abfb | ||
![]() |
66050d88b2 | ||
![]() |
1771c6f669 | ||
![]() |
acc77da702 | ||
![]() |
bdb9f7fd28 | ||
![]() |
f9e15febb7 | ||
![]() |
1ba2a63e58 | ||
![]() |
c838a38ea1 | ||
![]() |
2e34e4f80f | ||
![]() |
2bb20697b4 | ||
![]() |
28b774ebdb | ||
![]() |
12be8b4772 | ||
![]() |
be62f7d934 | ||
![]() |
9b814496b5 | ||
![]() |
f2bb19b43a | ||
![]() |
e3ceb00204 | ||
![]() |
c48eef1c6e | ||
![]() |
544da49fda | ||
![]() |
26ea4afa08 | ||
![]() |
a0f1efaaad | ||
![]() |
7645e6e536 | ||
![]() |
c21b4ec861 | ||
![]() |
30a933bf94 | ||
![]() |
646074d659 | ||
![]() |
d63db6a05e | ||
![]() |
dc49976071 | ||
![]() |
52bee6e472 | ||
![]() |
57ec230092 | ||
![]() |
549804ea2d | ||
![]() |
fd7acd5c1e | ||
![]() |
fb99e07d58 | ||
![]() |
557c94c831 | ||
![]() |
64508494d5 | ||
![]() |
c0b2cb764a | ||
![]() |
71be92f02d | ||
![]() |
08fb6c874a | ||
![]() |
94d04eaa0d | ||
![]() |
116ac10f81 | ||
![]() |
9f1e4d5588 | ||
![]() |
f1c309a163 | ||
![]() |
202e4e0271 | ||
![]() |
c3afc518f5 | ||
![]() |
1072fff97e | ||
![]() |
04df35b994 | ||
![]() |
0fa1a8d680 | ||
![]() |
78039b1f7f | ||
![]() |
b147a594b1 | ||
![]() |
5298cab81e | ||
![]() |
f0a35701c4 | ||
![]() |
477313b699 | ||
![]() |
90fd69fffb | ||
![]() |
7bf980c8dd | ||
![]() |
27c4618d3e | ||
![]() |
9f79f97603 | ||
![]() |
fdce5083a7 | ||
![]() |
f62c9ea5ea | ||
![]() |
52fbfb7d9e | ||
![]() |
9230b19200 | ||
![]() |
503956ef9b | ||
![]() |
3ad927eab1 | ||
![]() |
1b2936fed4 | ||
![]() |
f313ba7cbe | ||
![]() |
191094ccb5 | ||
![]() |
a748ca2efa | ||
![]() |
501cd3b4dc | ||
![]() |
9b724c303e | ||
![]() |
3c3fdfcc0c | ||
![]() |
3317bc450c | ||
![]() |
0e24fa1975 | ||
![]() |
bd717aced6 | ||
![]() |
3b14e1426f | ||
![]() |
cde360986c | ||
![]() |
ff8a687227 | ||
![]() |
f78055c629 | ||
![]() |
72e45fe25b | ||
![]() |
cfe0b72a03 | ||
![]() |
a6bb0f87a3 | ||
![]() |
a1bb3349df | ||
![]() |
aabb2db775 | ||
![]() |
01def677bf | ||
![]() |
73602de30a | ||
![]() |
aeb23a4bdd | ||
![]() |
0a03a96401 | ||
![]() |
3793ab6467 | ||
![]() |
295371713e | ||
![]() |
c616a64390 | ||
![]() |
f9f94e6203 | ||
![]() |
512233d0e6 | ||
![]() |
685c78279d | ||
![]() |
41740501eb | ||
![]() |
6e17ebd67e | ||
![]() |
f2b17e4179 | ||
![]() |
fec4a42eb0 | ||
![]() |
50d833aa5b | ||
![]() |
df274d47a3 | ||
![]() |
0241d94e72 | ||
![]() |
e9f450e1ba | ||
![]() |
ba0737b352 | ||
![]() |
09f46b2da6 | ||
![]() |
d7b4f42aa6 | ||
![]() |
be330a1b19 | ||
![]() |
32663c1b4d | ||
![]() |
0d0b1b386e | ||
![]() |
c75c228a38 | ||
![]() |
cbc83428b4 | ||
![]() |
8a7ba1315b | ||
![]() |
0d13054264 | ||
![]() |
f1d0d15603 | ||
![]() |
857b1415c7 | ||
![]() |
9edc64b62f | ||
![]() |
8ee841e541 | ||
![]() |
fd236b26bd | ||
![]() |
b886042d0a | ||
![]() |
c6a5c06827 | ||
![]() |
92de6969aa | ||
![]() |
4b12eb719d | ||
![]() |
f64fe7765c | ||
![]() |
b64a252d1c | ||
![]() |
d700906a15 | ||
![]() |
e706aba73c | ||
![]() |
53af4d4f57 | ||
![]() |
b10e7caf66 | ||
![]() |
3f03131b48 | ||
![]() |
adcc4faa55 | ||
![]() |
db5c425004 | ||
![]() |
52e5a688fb | ||
![]() |
8827545ceb | ||
![]() |
971ff49395 | ||
![]() |
937999e9cc | ||
![]() |
a0998071eb | ||
![]() |
53e57a851c | ||
![]() |
800e52f373 | ||
![]() |
6dd3b19f8f | ||
![]() |
6f4fa19a5b | ||
![]() |
d97141a29c | ||
![]() |
bc3340afc5 | ||
![]() |
5f1def5815 | ||
![]() |
5a7191522f | ||
![]() |
893f0e10c7 | ||
![]() |
d5e58c8a04 | ||
![]() |
2920a48bbc | ||
![]() |
1904e7e80d | ||
![]() |
702bb97ecb | ||
![]() |
b9c806c75d | ||
![]() |
d2799e6f98 | ||
![]() |
2734714920 | ||
![]() |
f75a3e8436 | ||
![]() |
c349fa5b1f | ||
![]() |
08d5b40ca5 | ||
![]() |
0a5ede19a9 | ||
![]() |
a23ac1d61c | ||
![]() |
a8da4e5ca3 | ||
![]() |
4f616f683a | ||
![]() |
222b714890 | ||
![]() |
7dee0f45c2 | ||
![]() |
50ca2bca83 | ||
![]() |
3aa7bfe163 | ||
![]() |
755aebc7d1 | ||
![]() |
06d64212d3 | ||
![]() |
97a4d7a5fd | ||
![]() |
a7260b277e | ||
![]() |
f4e053dda1 | ||
![]() |
a7c463b44a | ||
![]() |
42faf281e6 | ||
![]() |
13d93c1ca1 | ||
![]() |
3edb3cb004 | ||
![]() |
3609b7787a | ||
![]() |
f804351b51 | ||
![]() |
39e51526fb | ||
![]() |
76ea8a76b2 | ||
![]() |
12fc52a49a | ||
![]() |
c157d0a332 | ||
![]() |
c61f5d87b4 | ||
![]() |
c208b4c1f7 | ||
![]() |
b4e6c2b28a | ||
![]() |
b84b650c31 | ||
![]() |
eda0038770 | ||
![]() |
ed5b4ae5dc | ||
![]() |
d50632cfd1 | ||
![]() |
40c0a12211 | ||
![]() |
e977669c8c | ||
![]() |
0e8b9655a0 | ||
![]() |
367ce74a5f | ||
![]() |
3814d56740 | ||
![]() |
e1f84aa44d | ||
![]() |
1041604f29 | ||
![]() |
253d6427fd | ||
![]() |
69aad1f173 | ||
![]() |
887e1a09ab | ||
![]() |
f344e25b84 | ||
![]() |
574cf0ddce | ||
![]() |
37f2880a8a | ||
![]() |
b88c4086b9 | ||
![]() |
aa9bf7774e | ||
![]() |
ed2ff1a448 | ||
![]() |
ddee3ca933 | ||
![]() |
03d1894080 | ||
![]() |
322805e800 | ||
![]() |
92a1f98d35 | ||
![]() |
fdfc5bf12f | ||
![]() |
a25c0ce6cb | ||
![]() |
76f85a724c | ||
![]() |
45ef022607 | ||
![]() |
a72af0b6a6 | ||
![]() |
b0c29bffb7 | ||
![]() |
996094e8e8 | ||
![]() |
4137be6a8b | ||
![]() |
4e899835b3 | ||
![]() |
3812292b26 | ||
![]() |
c12283ec57 | ||
![]() |
f2dc0d8256 | ||
![]() |
717db318c1 | ||
![]() |
2a57ddf74a | ||
![]() |
230fd6b47f | ||
![]() |
472ac8a356 | ||
![]() |
3ba05ede1f | ||
![]() |
d785346c8c | ||
![]() |
6ca4d4ade2 | ||
![]() |
75cec40e58 | ||
![]() |
c317ccac62 | ||
![]() |
a74bb0fad6 | ||
![]() |
6ff2065a12 | ||
![]() |
727b4612ba | ||
![]() |
613f4ec588 | ||
![]() |
db6202adcd | ||
![]() |
f0f68e07c3 | ||
![]() |
8ba5a0033b | ||
![]() |
9edc2a11bd | ||
![]() |
079e4844d6 | ||
![]() |
4ebd000afd | ||
![]() |
063fc6a872 | ||
![]() |
e3ada7e5c2 | ||
![]() |
d61e5be06a | ||
![]() |
db2b34260f | ||
![]() |
c031dc946b | ||
![]() |
0eb881f067 | ||
![]() |
27f2dc276c | ||
![]() |
cba1833dde | ||
![]() |
39db90e99b | ||
![]() |
947a893558 | ||
![]() |
b99e9f0bc3 | ||
![]() |
4cf255df10 | ||
![]() |
614d8770a4 | ||
![]() |
69453dbfc5 | ||
![]() |
1113cb87cb | ||
![]() |
9c95294209 | ||
![]() |
f901ec9c20 | ||
![]() |
a94b9252d5 | ||
![]() |
25672bf196 | ||
![]() |
cb6a0acca4 | ||
![]() |
aa2ed2e033 | ||
![]() |
263f84178a | ||
![]() |
0eb5996567 | ||
![]() |
fe55bf4667 | ||
![]() |
709ded51a5 | ||
![]() |
8b1f1a3817 | ||
![]() |
7abf13ee48 | ||
![]() |
da64595ccc | ||
![]() |
29b14c7fca | ||
![]() |
d1ab42cddf | ||
![]() |
422726cec5 | ||
![]() |
4bc52c85c3 | ||
![]() |
e7b5fd0b28 | ||
![]() |
53ccc3e0d7 | ||
![]() |
8ab7c9d8dd | ||
![]() |
0cf00ed767 | ||
![]() |
aedc5fc8f9 | ||
![]() |
78e25cd233 | ||
![]() |
29894757f3 | ||
![]() |
5328161026 | ||
![]() |
4968d2280b | ||
![]() |
c000a0b58f | ||
![]() |
6ff498182a | ||
![]() |
60b1ffac6b | ||
![]() |
9b7c81f8f6 | ||
![]() |
b650771559 | ||
![]() |
17f624cb5b | ||
![]() |
21dee71590 | ||
![]() |
83e2129213 | ||
![]() |
b16787d530 | ||
![]() |
204870af89 | ||
![]() |
0918f5f2a4 | ||
![]() |
1b1a3c48ad | ||
![]() |
a7174b82a2 | ||
![]() |
3de71f2c52 | ||
![]() |
5576baa56b | ||
![]() |
1026c62889 | ||
![]() |
1fb8644035 | ||
![]() |
5a5a5b4387 | ||
![]() |
cc5cdb7fe0 | ||
![]() |
e0d37eb073 | ||
![]() |
bdd89aa34f | ||
![]() |
18cdc8bf28 | ||
![]() |
656ad4b5f2 | ||
![]() |
bebb162342 | ||
![]() |
6084a4eb65 | ||
![]() |
dbb485d80d | ||
![]() |
9bfa003014 | ||
![]() |
fe64d05f86 | ||
![]() |
decca791c5 | ||
![]() |
bd08e7b7cd | ||
![]() |
cca55d0890 | ||
![]() |
a802a3c0ce | ||
![]() |
d06e19f862 | ||
![]() |
bbe1574290 | ||
![]() |
4264cda558 | ||
![]() |
3390540145 | ||
![]() |
1c72a31463 | ||
![]() |
7dfbe33bba | ||
![]() |
e63ddf9c00 | ||
![]() |
d5cd9d86a1 | ||
![]() |
cae99bf6d9 | ||
![]() |
5a90152b1f | ||
![]() |
4b92b8d013 | ||
![]() |
693293c29a | ||
![]() |
ac5d8920dd | ||
![]() |
e833360307 | ||
![]() |
b5a08466b4 | ||
![]() |
4032438d2b | ||
![]() |
9b3abaad52 | ||
![]() |
d20d631365 | ||
![]() |
378bd0b6f8 | ||
![]() |
6d1455a33e | ||
![]() |
c44ebadf6f | ||
![]() |
4d37378696 | ||
![]() |
777a6fc967 | ||
![]() |
d7ed6d7e8d | ||
![]() |
0ecbac99f3 | ||
![]() |
436390bd4e | ||
![]() |
a587e93714 | ||
![]() |
75e00ee3d1 | ||
![]() |
c01af7a6f6 | ||
![]() |
c79d4172e0 | ||
![]() |
b85ac67c9a | ||
![]() |
fa0c026e07 | ||
![]() |
986024f0b7 | ||
![]() |
6fca6b3929 | ||
![]() |
d9cc0aeccf | ||
![]() |
5340f6e816 | ||
![]() |
c211be411e | ||
![]() |
b3afdc78a7 | ||
![]() |
e0c2736e35 | ||
![]() |
a63892c289 | ||
![]() |
d432f2086c | ||
![]() |
eaad2cd2bb | ||
![]() |
a148b21183 | ||
![]() |
e7422f245c | ||
![]() |
c86093d76a | ||
![]() |
a693ccda4b | ||
![]() |
543cacb256 | ||
![]() |
3f3947669a | ||
![]() |
579711fd3c | ||
![]() |
7336529ec5 | ||
![]() |
88af98fab4 | ||
![]() |
01bfa29846 | ||
![]() |
0206df026c | ||
![]() |
41aebc770d | ||
![]() |
bc4d6bddd4 | ||
![]() |
1f57b4dd2d | ||
![]() |
02d4f46354 | ||
![]() |
b9684c0cf5 | ||
![]() |
5423935c9b | ||
![]() |
41ca2299a5 | ||
![]() |
33e91b639d | ||
![]() |
e4ec586f46 | ||
![]() |
15a8123fbc | ||
![]() |
f0c6ac01d3 | ||
![]() |
63fea55da4 | ||
![]() |
26b92e3f5c | ||
![]() |
643092d2fc | ||
![]() |
18c8a679dc | ||
![]() |
13d33a88ca | ||
![]() |
738bda9866 | ||
![]() |
47c9af9d7d | ||
![]() |
3fba6132b4 | ||
![]() |
127b9b6624 | ||
![]() |
8189d29e96 | ||
![]() |
eb7aa853fa | ||
![]() |
15bf8034d6 | ||
![]() |
6bf2690b23 | ||
![]() |
ced6c34563 | ||
![]() |
2efcc22ff5 | ||
![]() |
cb2742a00b | ||
![]() |
c8c53f54bb | ||
![]() |
863daedf86 | ||
![]() |
55871cbb47 | ||
![]() |
e3d60b3873 | ||
![]() |
2dd6cc1801 | ||
![]() |
f11e7d60d7 | ||
![]() |
7137b09ae2 | ||
![]() |
053f389907 | ||
![]() |
4f9b5202aa | ||
![]() |
466a737d16 | ||
![]() |
eb7eb78d95 | ||
![]() |
682d7347f7 | ||
![]() |
3c43b6525f | ||
![]() |
aefd8348d2 | ||
![]() |
f2de61db4e | ||
![]() |
4c7d97cca4 | ||
![]() |
806543fb3a | ||
![]() |
2afa86ca9f | ||
![]() |
ae50675399 | ||
![]() |
d7a54a26c7 | ||
![]() |
02a8a21e55 | ||
![]() |
3abad5567a | ||
![]() |
7c8cc1a9ef | ||
![]() |
355e9c1f86 | ||
![]() |
26dd4cb9bb | ||
![]() |
317ca35dca | ||
![]() |
053762c1c1 | ||
![]() |
95e20daa83 | ||
![]() |
fcc1683d01 | ||
![]() |
059f2e7791 | ||
![]() |
692fda9de7 | ||
![]() |
e8885a31b8 | ||
![]() |
12e24e843d | ||
![]() |
b35e929b1d | ||
![]() |
c839ac993c | ||
![]() |
83e6d042d7 | ||
![]() |
b995a7b937 | ||
![]() |
1c1db193aa | ||
![]() |
9675f09de6 | ||
![]() |
392bcac1c1 | ||
![]() |
a2ba1beedb | ||
![]() |
42e2fed267 | ||
![]() |
8e2fd532f1 | ||
![]() |
2bf5eec3b6 | ||
![]() |
43efc20423 | ||
![]() |
4a9a0a05a3 | ||
![]() |
1647b85e82 | ||
![]() |
6cee865aea | ||
![]() |
5c61ab77ec | ||
![]() |
a31de8476d | ||
![]() |
b2c379621c | ||
![]() |
04a5ee4df2 | ||
![]() |
a188e7cd61 | ||
![]() |
e0644c97f9 | ||
![]() |
9cc76cdea7 | ||
![]() |
b55d63f1f8 | ||
![]() |
8f6be44bf5 | ||
![]() |
469bf6123e | ||
![]() |
9cbb22e130 | ||
![]() |
4c65920ab9 | ||
![]() |
bad0f7d376 | ||
![]() |
ab09ae8fad | ||
![]() |
2f66fb5679 | ||
![]() |
1a6a8efda2 | ||
![]() |
e5b01ed062 | ||
![]() |
3d5e31b7a4 | ||
![]() |
4336c6b886 | ||
![]() |
f25026ba74 | ||
![]() |
9f5ce3593a | ||
![]() |
a5009d1aec | ||
![]() |
ae5079ecac | ||
![]() |
38fdc3f684 | ||
![]() |
0821518fd9 | ||
![]() |
c8b76ea3f7 | ||
![]() |
bf26498bc4 | ||
![]() |
15e064da79 | ||
![]() |
c5e1979a6b | ||
![]() |
dc882d2669 | ||
![]() |
f9f0422c72 | ||
![]() |
38eaee068d | ||
![]() |
0a56b592f2 | ||
![]() |
091093ee61 | ||
![]() |
7a4f128c22 | ||
![]() |
f943246fd9 | ||
![]() |
8337949d80 | ||
![]() |
76166f0035 | ||
![]() |
a9718db8ba |
80 changed files with 3907 additions and 5666 deletions
3
.github/dco.yml
vendored
Normal file
3
.github/dco.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Disable sign-off checking for members of the Gradle GitHub organization
|
||||||
|
require:
|
||||||
|
members: false
|
5
.github/workflow-samples/.gitignore
vendored
Normal file
5
.github/workflow-samples/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Ignore Gradle project-specific cache directory
|
||||||
|
.gradle
|
||||||
|
|
||||||
|
# Ignore Gradle build output directory
|
||||||
|
build
|
BIN
.github/workflow-samples/gradle-plugin/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
.github/workflow-samples/gradle-plugin/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
8
.github/workflow-samples/gradle-plugin/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
8
.github/workflow-samples/gradle-plugin/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
249
.github/workflow-samples/gradle-plugin/gradlew
vendored
Executable file
249
.github/workflow-samples/gradle-plugin/gradlew
vendored
Executable file
|
@ -0,0 +1,249 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
92
.github/workflow-samples/gradle-plugin/gradlew.bat
vendored
Normal file
92
.github/workflow-samples/gradle-plugin/gradlew.bat
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
60
.github/workflow-samples/gradle-plugin/plugin/build.gradle
vendored
Normal file
60
.github/workflow-samples/gradle-plugin/plugin/build.gradle
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
* This file was generated by the Gradle 'init' task.
|
||||||
|
*
|
||||||
|
* This generated file contains a sample Gradle plugin project to get you started.
|
||||||
|
* For more details take a look at the Writing Custom Plugins chapter in the Gradle
|
||||||
|
* User Manual available at https://docs.gradle.org/7.3/userguide/custom_plugins.html
|
||||||
|
* This project uses @Incubating APIs which are subject to change.
|
||||||
|
*/
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
// Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins
|
||||||
|
id 'java-gradle-plugin'
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
// Use Maven Central for resolving dependencies.
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
testing {
|
||||||
|
suites {
|
||||||
|
// Configure the built-in test suite
|
||||||
|
test {
|
||||||
|
// Use JUnit Jupiter test framework
|
||||||
|
useJUnitJupiter('5.7.2')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new test suite
|
||||||
|
functionalTest(JvmTestSuite) {
|
||||||
|
dependencies {
|
||||||
|
// functionalTest test suite depends on the production code in tests
|
||||||
|
implementation(project(':plugin'))
|
||||||
|
}
|
||||||
|
|
||||||
|
targets {
|
||||||
|
all {
|
||||||
|
// This test suite should run after the built-in test suite has run its tests
|
||||||
|
testTask.configure { shouldRunAfter(test) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gradlePlugin {
|
||||||
|
// Define the plugin
|
||||||
|
plugins {
|
||||||
|
greeting {
|
||||||
|
id = 'org.example.gradle.plugin.greeting'
|
||||||
|
implementationClass = 'org.example.gradle.plugin.GradlePluginPlugin'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gradlePlugin.testSourceSets(sourceSets.functionalTest)
|
||||||
|
|
||||||
|
tasks.named('check') {
|
||||||
|
// Include functionalTest as part of the check lifecycle
|
||||||
|
dependsOn(testing.suites.functionalTest)
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* This Java source file was generated by the Gradle 'init' task.
|
||||||
|
*/
|
||||||
|
package org.example.gradle.plugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import org.gradle.testkit.runner.GradleRunner;
|
||||||
|
import org.gradle.testkit.runner.BuildResult;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.io.TempDir;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple functional test for the 'org.example.gradle.plugin.greeting' plugin.
|
||||||
|
*/
|
||||||
|
class GradlePluginPluginFunctionalTest {
|
||||||
|
@TempDir
|
||||||
|
File projectDir;
|
||||||
|
|
||||||
|
private File getBuildFile() {
|
||||||
|
return new File(projectDir, "build.gradle");
|
||||||
|
}
|
||||||
|
|
||||||
|
private File getSettingsFile() {
|
||||||
|
return new File(projectDir, "settings.gradle");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test void canRunTaskWithGradle691() throws IOException {
|
||||||
|
writeString(getSettingsFile(), "");
|
||||||
|
writeString(getBuildFile(),
|
||||||
|
"plugins {" +
|
||||||
|
" id('org.example.gradle.plugin.greeting')" +
|
||||||
|
"}");
|
||||||
|
|
||||||
|
// Run the build
|
||||||
|
GradleRunner runner = GradleRunner.create();
|
||||||
|
runner.forwardOutput();
|
||||||
|
runner.withGradleVersion("6.9.1");
|
||||||
|
runner.withPluginClasspath();
|
||||||
|
runner.withArguments("greeting");
|
||||||
|
runner.withProjectDir(projectDir);
|
||||||
|
BuildResult result = runner.build();
|
||||||
|
|
||||||
|
// Verify the result
|
||||||
|
assertTrue(result.getOutput().contains("Hello from plugin 'org.example.gradle.plugin.greeting'"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeString(File file, String string) throws IOException {
|
||||||
|
try (Writer writer = new FileWriter(file)) {
|
||||||
|
writer.write(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* This Java source file was generated by the Gradle 'init' task.
|
||||||
|
*/
|
||||||
|
package org.example.gradle.plugin;
|
||||||
|
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.Plugin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple 'hello world' plugin.
|
||||||
|
*/
|
||||||
|
public class GradlePluginPlugin implements Plugin<Project> {
|
||||||
|
public void apply(Project project) {
|
||||||
|
// Register a task
|
||||||
|
project.getTasks().register("greeting", task -> {
|
||||||
|
task.doLast(s -> System.out.println("Hello from plugin 'org.example.gradle.plugin.greeting'"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* This Java source file was generated by the Gradle 'init' task.
|
||||||
|
*/
|
||||||
|
package org.example.gradle.plugin;
|
||||||
|
|
||||||
|
import org.gradle.testfixtures.ProjectBuilder;
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple unit test for the 'org.example.gradle.plugin.greeting' plugin.
|
||||||
|
*/
|
||||||
|
class GradlePluginPluginTest {
|
||||||
|
@Test void pluginRegistersATask() {
|
||||||
|
// Create a test project and apply the plugin
|
||||||
|
Project project = ProjectBuilder.builder().build();
|
||||||
|
project.getPlugins().apply("org.example.gradle.plugin.greeting");
|
||||||
|
|
||||||
|
// Verify the result
|
||||||
|
assertNotNull(project.getTasks().findByName("greeting"));
|
||||||
|
}
|
||||||
|
}
|
12
.github/workflow-samples/gradle-plugin/settings.gradle
vendored
Normal file
12
.github/workflow-samples/gradle-plugin/settings.gradle
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
/*
|
||||||
|
* This file was generated by the Gradle 'init' task.
|
||||||
|
*
|
||||||
|
* The settings file is used to specify which projects to include in your build.
|
||||||
|
*
|
||||||
|
* Detailed information about configuring a multi-project build in Gradle can be found
|
||||||
|
* in the user manual at https://docs.gradle.org/7.3/userguide/multi_project_builds.html
|
||||||
|
* This project uses @Incubating APIs which are subject to change.
|
||||||
|
*/
|
||||||
|
|
||||||
|
rootProject.name = 'gradle-plugin'
|
||||||
|
include('plugin')
|
22
.github/workflow-samples/groovy-dsl/build.gradle
vendored
Normal file
22
.github/workflow-samples/groovy-dsl/build.gradle
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
plugins {
|
||||||
|
id 'java'
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testImplementation('junit:junit:4.13.2')
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("test").configure {
|
||||||
|
// Write marker file so we can detect if task was configured
|
||||||
|
file("task-configured.txt").text = "true"
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
if (System.properties.verifyCachedBuild) {
|
||||||
|
throw new RuntimeException("Build was not cached: unexpected execution of test task")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1
.github/workflow-samples/groovy-dsl/gradle.properties
vendored
Normal file
1
.github/workflow-samples/groovy-dsl/gradle.properties
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
org.gradle.caching=true
|
BIN
.github/workflow-samples/groovy-dsl/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
.github/workflow-samples/groovy-dsl/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
8
.github/workflow-samples/groovy-dsl/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
8
.github/workflow-samples/groovy-dsl/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
249
.github/workflow-samples/groovy-dsl/gradlew
vendored
Executable file
249
.github/workflow-samples/groovy-dsl/gradlew
vendored
Executable file
|
@ -0,0 +1,249 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
92
.github/workflow-samples/groovy-dsl/gradlew.bat
vendored
Normal file
92
.github/workflow-samples/groovy-dsl/gradlew.bat
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
14
.github/workflow-samples/groovy-dsl/settings.gradle
vendored
Normal file
14
.github/workflow-samples/groovy-dsl/settings.gradle
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
plugins {
|
||||||
|
id "com.gradle.enterprise" version "3.16.2"
|
||||||
|
id "com.gradle.common-custom-user-data-gradle-plugin" version "1.13"
|
||||||
|
}
|
||||||
|
|
||||||
|
gradleEnterprise {
|
||||||
|
buildScan {
|
||||||
|
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||||
|
termsOfServiceAgree = "yes"
|
||||||
|
publishAlways()
|
||||||
|
uploadInBackground = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rootProject.name = 'groovy-dsl'
|
10
.github/workflow-samples/groovy-dsl/src/test/java/basic/BasicTest.java
vendored
Normal file
10
.github/workflow-samples/groovy-dsl/src/test/java/basic/BasicTest.java
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package basic;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class BasicTest {
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
assert true;
|
||||||
|
}
|
||||||
|
}
|
17
.github/workflow-samples/java-toolchain/build.gradle
vendored
Normal file
17
.github/workflow-samples/java-toolchain/build.gradle
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
plugins {
|
||||||
|
id 'java'
|
||||||
|
}
|
||||||
|
|
||||||
|
java {
|
||||||
|
toolchain {
|
||||||
|
languageVersion = JavaLanguageVersion.of(16)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testImplementation('junit:junit:4.13.2')
|
||||||
|
}
|
1
.github/workflow-samples/java-toolchain/gradle.properties
vendored
Normal file
1
.github/workflow-samples/java-toolchain/gradle.properties
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
org.gradle.caching=true
|
BIN
.github/workflow-samples/java-toolchain/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
.github/workflow-samples/java-toolchain/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
8
.github/workflow-samples/java-toolchain/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
8
.github/workflow-samples/java-toolchain/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
249
.github/workflow-samples/java-toolchain/gradlew
vendored
Executable file
249
.github/workflow-samples/java-toolchain/gradlew
vendored
Executable file
|
@ -0,0 +1,249 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
92
.github/workflow-samples/java-toolchain/gradlew.bat
vendored
Normal file
92
.github/workflow-samples/java-toolchain/gradlew.bat
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
5
.github/workflow-samples/java-toolchain/settings.gradle
vendored
Normal file
5
.github/workflow-samples/java-toolchain/settings.gradle
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
plugins {
|
||||||
|
id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0")
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = 'basic'
|
10
.github/workflow-samples/java-toolchain/src/test/java/basic/BasicTest.java
vendored
Normal file
10
.github/workflow-samples/java-toolchain/src/test/java/basic/BasicTest.java
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package basic;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class BasicTest {
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
assert true;
|
||||||
|
}
|
||||||
|
}
|
29
.github/workflow-samples/kotlin-dsl/build.gradle.kts
vendored
Normal file
29
.github/workflow-samples/kotlin-dsl/build.gradle.kts
vendored
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
plugins {
|
||||||
|
`java-library`
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
api("org.apache.commons:commons-math3:3.6.1")
|
||||||
|
implementation("com.google.guava:guava:33.1.0-jre")
|
||||||
|
|
||||||
|
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.test {
|
||||||
|
useJUnitPlatform()
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("test").configure {
|
||||||
|
// Write marker file so we can detect if task was configured
|
||||||
|
file("task-configured.txt").writeText("true")
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
if (System.getProperties().containsKey("verifyCachedBuild")) {
|
||||||
|
throw RuntimeException("Build was not cached: unexpected execution of test task")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1
.github/workflow-samples/kotlin-dsl/gradle.properties
vendored
Normal file
1
.github/workflow-samples/kotlin-dsl/gradle.properties
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
org.gradle.caching=true
|
BIN
.github/workflow-samples/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
.github/workflow-samples/kotlin-dsl/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
8
.github/workflow-samples/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
8
.github/workflow-samples/kotlin-dsl/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
249
.github/workflow-samples/kotlin-dsl/gradlew
vendored
Executable file
249
.github/workflow-samples/kotlin-dsl/gradlew
vendored
Executable file
|
@ -0,0 +1,249 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
92
.github/workflow-samples/kotlin-dsl/gradlew.bat
vendored
Normal file
92
.github/workflow-samples/kotlin-dsl/gradlew.bat
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
16
.github/workflow-samples/kotlin-dsl/settings.gradle.kts
vendored
Normal file
16
.github/workflow-samples/kotlin-dsl/settings.gradle.kts
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
plugins {
|
||||||
|
id("com.gradle.enterprise") version "3.16.2"
|
||||||
|
id("com.gradle.common-custom-user-data-gradle-plugin") version "1.13"
|
||||||
|
}
|
||||||
|
|
||||||
|
gradleEnterprise {
|
||||||
|
buildScan {
|
||||||
|
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||||
|
termsOfServiceAgree = "yes"
|
||||||
|
publishAlways()
|
||||||
|
isUploadInBackground = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = "kotlin-dsl"
|
||||||
|
|
10
.github/workflow-samples/kotlin-dsl/src/main/java/com/example/Library.java
vendored
Normal file
10
.github/workflow-samples/kotlin-dsl/src/main/java/com/example/Library.java
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/*
|
||||||
|
* This Java source file was generated by the Gradle 'init' task.
|
||||||
|
*/
|
||||||
|
package com.example;
|
||||||
|
|
||||||
|
public class Library {
|
||||||
|
public boolean someLibraryMethod() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
14
.github/workflow-samples/kotlin-dsl/src/test/java/com/example/LibraryTest.java
vendored
Normal file
14
.github/workflow-samples/kotlin-dsl/src/test/java/com/example/LibraryTest.java
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* This Java source file was generated by the Gradle 'init' task.
|
||||||
|
*/
|
||||||
|
package com.example;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class LibraryTest {
|
||||||
|
@Test void someLibraryMethodReturnsTrue() {
|
||||||
|
Library classUnderTest = new Library();
|
||||||
|
assertTrue(classUnderTest.someLibraryMethod(), "someLibraryMethod should return 'true'");
|
||||||
|
}
|
||||||
|
}
|
1
.github/workflow-samples/no-ge/build.gradle
vendored
Normal file
1
.github/workflow-samples/no-ge/build.gradle
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
// Required to keep dependabot happy
|
1
.github/workflow-samples/no-ge/settings.gradle
vendored
Normal file
1
.github/workflow-samples/no-ge/settings.gradle
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
rootProject.name = 'no-ge'
|
10
.github/workflow-samples/no-wrapper-gradle-4/build.gradle
vendored
Normal file
10
.github/workflow-samples/no-wrapper-gradle-4/build.gradle
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
plugins {
|
||||||
|
id "com.gradle.build-scan" version "1.16"
|
||||||
|
}
|
||||||
|
|
||||||
|
buildScan {
|
||||||
|
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||||
|
termsOfServiceAgree = "yes"
|
||||||
|
publishAlways()
|
||||||
|
}
|
||||||
|
|
8
.github/workflow-samples/no-wrapper-gradle-4/settings.gradle
vendored
Normal file
8
.github/workflow-samples/no-wrapper-gradle-4/settings.gradle
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
rootProject.name = 'no-wrapper'
|
||||||
|
|
||||||
|
println "Using Gradle version: ${gradle.gradleVersion}"
|
||||||
|
|
||||||
|
def gradleVersionCheck = System.properties.gradleVersionCheck
|
||||||
|
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
|
||||||
|
throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
|
||||||
|
}
|
12
.github/workflow-samples/no-wrapper-gradle-5/build.gradle
vendored
Normal file
12
.github/workflow-samples/no-wrapper-gradle-5/build.gradle
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
plugins {
|
||||||
|
id "com.gradle.build-scan" version "3.16.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
gradleEnterprise {
|
||||||
|
buildScan {
|
||||||
|
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||||
|
termsOfServiceAgree = "yes"
|
||||||
|
publishAlways()
|
||||||
|
uploadInBackground = false
|
||||||
|
}
|
||||||
|
}
|
8
.github/workflow-samples/no-wrapper-gradle-5/settings.gradle
vendored
Normal file
8
.github/workflow-samples/no-wrapper-gradle-5/settings.gradle
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
rootProject.name = 'no-wrapper'
|
||||||
|
|
||||||
|
println "Using Gradle version: ${gradle.gradleVersion}"
|
||||||
|
|
||||||
|
def gradleVersionCheck = System.properties.gradleVersionCheck
|
||||||
|
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
|
||||||
|
throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
|
||||||
|
}
|
1
.github/workflow-samples/no-wrapper/build.gradle
vendored
Normal file
1
.github/workflow-samples/no-wrapper/build.gradle
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
// Required to keep dependabot happy
|
21
.github/workflow-samples/no-wrapper/settings.gradle
vendored
Normal file
21
.github/workflow-samples/no-wrapper/settings.gradle
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
plugins {
|
||||||
|
id "com.gradle.enterprise" version "3.16.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
gradleEnterprise {
|
||||||
|
buildScan {
|
||||||
|
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||||
|
termsOfServiceAgree = "yes"
|
||||||
|
publishAlways()
|
||||||
|
uploadInBackground = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = 'no-wrapper'
|
||||||
|
|
||||||
|
println "Using Gradle version: ${gradle.gradleVersion}"
|
||||||
|
|
||||||
|
def gradleVersionCheck = System.properties.gradleVersionCheck
|
||||||
|
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
|
||||||
|
throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
|
||||||
|
}
|
25
.github/workflows/checkin.yml
vendored
25
.github/workflows/checkin.yml
vendored
|
@ -1,25 +0,0 @@
|
||||||
name: "PR Checks"
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check_pr:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: "npm ci"
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: "npm run build"
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
- name: "npm run test"
|
|
||||||
run: npm run test
|
|
||||||
|
|
||||||
- name: "check for uncommitted changes"
|
|
||||||
# Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
|
|
||||||
run: |
|
|
||||||
git diff --exit-code --stat -- . ':!node_modules' \
|
|
||||||
|| (echo "##[error] found changed files after build. please 'npm run build && npm run format'" \
|
|
||||||
"and check in all changes" \
|
|
||||||
&& exit 1)
|
|
91
.github/workflows/ci-full-check.yml
vendored
Normal file
91
.github/workflows/ci-full-check.yml
vendored
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
name: CI-full-check
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
action-inputs:
|
||||||
|
uses: ./.github/workflows/integ-test-action-inputs.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
caching-config:
|
||||||
|
uses: ./.github/workflows/integ-test-caching-config.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
dependency-graph:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
dependency-graph-failures:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph-failures.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
execution-with-caching:
|
||||||
|
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
execution:
|
||||||
|
uses: ./.github/workflows/integ-test-execution.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
develocity-injection:
|
||||||
|
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
secrets:
|
||||||
|
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }}
|
||||||
|
|
||||||
|
provision-gradle-versions:
|
||||||
|
uses: ./.github/workflows/integ-test-provision-gradle-versions.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
restore-configuration-cache:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-configuration-cache.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
secrets:
|
||||||
|
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
|
||||||
|
restore-custom-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
restore-containerized-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
restore-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-gradle-home.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
restore-java-toolchain:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
sample-kotlin-dsl:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
sample-gradle-plugin:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
toolchain-detection:
|
||||||
|
uses: ./.github/workflows/integ-test-detect-java-toolchains.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
88
.github/workflows/ci-quick-check.yml
vendored
Normal file
88
.github/workflows/ci-quick-check.yml
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
name: CI-quick-check
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
action-inputs:
|
||||||
|
uses: ./.github/workflows/integ-test-action-inputs.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
caching-config:
|
||||||
|
uses: ./.github/workflows/integ-test-caching-config.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
dependency-graph:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
dependency-graph-failures:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph-failures.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
execution-with-caching:
|
||||||
|
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
execution:
|
||||||
|
uses: ./.github/workflows/integ-test-execution.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
develocity-injection:
|
||||||
|
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
secrets:
|
||||||
|
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }}
|
||||||
|
|
||||||
|
provision-gradle-versions:
|
||||||
|
uses: ./.github/workflows/integ-test-provision-gradle-versions.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
restore-configuration-cache:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-configuration-cache.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
secrets:
|
||||||
|
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
|
||||||
|
restore-containerized-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml
|
||||||
|
|
||||||
|
restore-custom-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml
|
||||||
|
|
||||||
|
restore-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-gradle-home.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
restore-java-toolchain:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
sample-kotlin-dsl:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
sample-gradle-plugin:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
|
||||||
|
toolchain-detection:
|
||||||
|
uses: ./.github/workflows/integ-test-detect-java-toolchains.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
43
.github/workflows/demo-failure-cases.yml
vendored
Normal file
43
.github/workflows/demo-failure-cases.yml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
name: demo-failure-cases
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
failing-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Test build failure
|
||||||
|
uses: ./
|
||||||
|
continue-on-error: true
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
arguments: not-a-valid-task
|
||||||
|
|
||||||
|
wrapper-missing:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Test wrapper missing
|
||||||
|
uses: ./
|
||||||
|
continue-on-error: true
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/no-wrapper
|
||||||
|
arguments: help
|
||||||
|
|
||||||
|
bad-configuration:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Test bad config value
|
||||||
|
uses: ./
|
||||||
|
continue-on-error: true
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/no-wrapper
|
||||||
|
arguments: help
|
||||||
|
cache-disabled: yes
|
71
.github/workflows/demo-job-summary.yml
vendored
Normal file
71
.github/workflows/demo-job-summary.yml
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
name: Demo Job Summary, for Gradle builds
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
many-gradle-builds:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew assemble
|
||||||
|
- name: Build kotlin-dsl project without Build Scan®
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew assemble check --no-scan
|
||||||
|
- name: Build kotlin-dsl project with Build Scan® publish failure
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew check -Dgradle.enterprise.url=https://not.valid.server
|
||||||
|
- name: Build groovy-dsl project
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew assemble
|
||||||
|
- name: Build kotlin-dsl project with multiple gradle invocations
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: |
|
||||||
|
./gradlew tasks --no-daemon
|
||||||
|
./gradlew help check
|
||||||
|
- name: Fail groovy-dsl project
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
continue-on-error: true
|
||||||
|
run: ./gradlew not-a-real-task
|
||||||
|
|
||||||
|
successful-builds-with-no-summary:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
add-job-summary: on-failure
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew assemble
|
||||||
|
- name: Build kotlin-dsl project without Build Scan®
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew assemble check --no-scan
|
||||||
|
|
||||||
|
pre-existing-gradle-home:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Pre-create Gradle User Home
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir ~/.gradle
|
||||||
|
mkdir ~/.gradle/caches
|
||||||
|
touch ~/.gradle/caches/dummy.txt
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
- name: Run build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew assemble
|
51
.github/workflows/demo-pr-build-scan-comment.yml
vendored
Normal file
51
.github/workflows/demo-pr-build-scan-comment.yml
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
name: Demo adding Build Scan® comment to PR
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [assigned, review_requested]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
successful-build-with-always-comment:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout project sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
add-job-summary-as-pr-comment: always
|
||||||
|
- name: Run build with Gradle wrapper
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build --scan
|
||||||
|
|
||||||
|
successful-build-with-comment-on-failure:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout project sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
add-job-summary-as-pr-comment: on-failure
|
||||||
|
- name: Run build with Gradle wrapper
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build --scan
|
||||||
|
|
||||||
|
failing-build-with-comment-on-failure:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout project sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
add-job-summary-as-pr-comment: on-failure
|
||||||
|
- name: Run build with Gradle wrapper
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew no-a-real-task --scan
|
||||||
|
continue-on-error: true
|
35
.github/workflows/integ-test-action-inputs.yml
vendored
Normal file
35
.github/workflows/integ-test-action-inputs.yml
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
name: Test action inputs
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
action-inputs:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Invoke with multi-line arguments
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
arguments: |
|
||||||
|
--configuration-cache
|
||||||
|
--build-cache
|
||||||
|
-DsystemProperty=FOO
|
||||||
|
-PgradleProperty=BAR
|
||||||
|
test
|
||||||
|
jar
|
148
.github/workflows/integ-test-caching-config.yml
vendored
Normal file
148
.github/workflows/integ-test-caching-config.yml
vendored
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
name: Test caching configuration
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-caching-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
# Add "enterprise" to main cache entry but omit "notifications"
|
||||||
|
gradle-home-cache-includes: |
|
||||||
|
caches
|
||||||
|
enterprise
|
||||||
|
# Exclude build-cache from main cache entry
|
||||||
|
gradle-home-cache-excludes: |
|
||||||
|
caches/build-cache-*
|
||||||
|
caches/*/executionHistory
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
||||||
|
verify-build:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
# Use the same configuration as used in the seed build
|
||||||
|
gradle-home-cache-includes: |
|
||||||
|
caches
|
||||||
|
enterprise
|
||||||
|
gradle-home-cache-excludes: |
|
||||||
|
caches/build-cache-*
|
||||||
|
caches/*/executionHistory
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline
|
||||||
|
|
||||||
|
# Test that build scans are captured when caching is explicitly disabled
|
||||||
|
cache-disabled:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-disabled: true
|
||||||
|
- name: Run Gradle build
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
||||||
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
||||||
|
- name: Check Build Scan url is captured
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
||||||
|
# Test that build scans are captured when caching is disabled because Gradle User Home already exists
|
||||||
|
cache-disabled-pre-existing-gradle-home:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Create dummy Gradle User Home
|
||||||
|
run: mkdir -p ~/.gradle/caches
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
- name: Run Gradle build
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
||||||
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
||||||
|
- name: Check Build Scan url is captured
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
||||||
|
# Test seed the cache with cache-write-only and verify with cache-read-only
|
||||||
|
seed-build-write-only:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-write-only: true
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test
|
||||||
|
|
||||||
|
verify-write-only-build:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
|
||||||
|
needs: seed-build-write-only
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline
|
||||||
|
|
91
.github/workflows/integ-test-dependency-graph-failures.yml
vendored
Normal file
91
.github/workflows/integ-test-dependency-graph-failures.yml
vendored
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
name: Test dependency graph
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
unsupported-gradle-version-warning:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: 7.0.1
|
||||||
|
dependency-graph: generate
|
||||||
|
dependency-graph-continue-on-failure: true
|
||||||
|
- name: Run with unsupported Gradle version
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
if gradle help | grep -q 'warning::Dependency Graph is not supported for Gradle 7.0.1. No dependency snapshot will be generated.';
|
||||||
|
then
|
||||||
|
echo "Got the expected warning"
|
||||||
|
else
|
||||||
|
echo "Did not get the expected warning"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unsupported-gradle-version-failure:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: 7.0.1
|
||||||
|
dependency-graph: generate
|
||||||
|
dependency-graph-continue-on-failure: false
|
||||||
|
- name: Run with unsupported Gradle version
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
if gradle help; then
|
||||||
|
echo "Expected build to fail with Gradle 7.0.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
insufficient-permissions-warning:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
dependency-graph-continue-on-failure: true
|
||||||
|
- name: Run with insufficient permissions
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew help
|
||||||
|
# This test is primarily for demonstration: it's unclear how to check for warnings emitted in the post-action
|
||||||
|
|
||||||
|
SHOULD_FAIL-insufficient-permissions-failure:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
continue-on-error: true
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
dependency-graph-continue-on-failure: false
|
||||||
|
- name: Run with insufficient permissions
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew help
|
||||||
|
# This test is primarily for demonstration: it's unclear how to check for a failure in the post-action
|
134
.github/workflows/integ-test-dependency-graph.yml
vendored
Normal file
134
.github/workflows/integ-test-dependency-graph.yml
vendored
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
name: Test dependency graph
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
groovy-generate:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-upload
|
||||||
|
- name: Run gradle build
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
|
||||||
|
kotlin-generate:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
- name: Run gradle build
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
|
||||||
|
submit:
|
||||||
|
needs: [groovy-generate]
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Submit dependency graphs
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: download-and-submit
|
||||||
|
|
||||||
|
multiple-builds:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
- id: gradle-assemble
|
||||||
|
run: ./gradlew assemble
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- id: gradle-build
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- id: gradle-build-again
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- name: Check generated dependency graphs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "gradle-assemble report file: ${{ steps.gradle-assemble.outputs.dependency-graph-file }}"
|
||||||
|
echo "gradle-build report file: ${{ steps.gradle-build.outputs.dependency-graph-file }}"
|
||||||
|
echo "gradle-build-again report file: ${{ steps.gradle-build-again.outputs.dependency-graph-file }}"
|
||||||
|
ls -l dependency-graph-reports
|
||||||
|
if [ ! -e "${{ steps.gradle-assemble.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find gradle-assemble dependency graph file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e "${{ steps.gradle-build.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find gradle-build dependency graph files"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e "${{ steps.gradle-build-again.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find gradle-build-again dependency graph files"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
config-cache:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
- id: config-cache-store
|
||||||
|
run: ./gradlew assemble --configuration-cache
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- name: Check and delete generated dependency graph
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ ! -e "${{ steps.config-cache-store.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find config-cache-store dependency graph files"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm ${{ steps.config-cache-store.outputs.dependency-graph-file }}
|
||||||
|
- id: config-cache-reuse
|
||||||
|
run: ./gradlew assemble --configuration-cache
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- name: Check no dependency graph is generated
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
|
||||||
|
echo "Expected no dependency graph files to be generated"
|
||||||
|
ls -l dependency-graph-reports
|
||||||
|
exit 1
|
||||||
|
fi
|
85
.github/workflows/integ-test-detect-java-toolchains.yml
vendored
Normal file
85
.github/workflows/integ-test-detect-java-toolchains.yml
vendored
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
name: Test detect java toolchains
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: detect-java-toolchain-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Test that pre-installed runner JDKs are detected
|
||||||
|
pre-installed-toolchains:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
- name: List detected toolchains
|
||||||
|
shell: bash
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
gradle --info javaToolchains > output.txt
|
||||||
|
cat output.txt
|
||||||
|
- name: Verify detected toolchains
|
||||||
|
shell: bash
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
grep -q 'Eclipse Temurin JDK 1.8' output.txt || (echo "::error::Did not detect preinstalled JDK 1.8" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 11' output.txt || (echo "::error::Did not detect preinstalled JDK 11" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 17' output.txt || (echo "::error::Did not detect preinstalled JDK 17" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 21' output.txt || (echo "::error::Did not detect preinstalled JDK 21" && exit 1)
|
||||||
|
|
||||||
|
# Test that JDKs provisioned by setup-java are detected
|
||||||
|
setup-java-installed-toolchain:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java 20
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '20'
|
||||||
|
- name: Setup Java 16
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '16'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
- name: List detected toolchains
|
||||||
|
shell: bash
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
gradle --info javaToolchains > output.txt
|
||||||
|
cat output.txt
|
||||||
|
- name: Verify setup JDKs are detected
|
||||||
|
shell: bash
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
grep -q 'Eclipse Temurin JDK 16' output.txt || (echo "::error::Did not detect setup-java installed JDK 16" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 20' output.txt || (echo "::error::Did not detect setup-java installed JDK 20" && exit 1)
|
||||||
|
- name: Verify pre-installed toolchains are detected
|
||||||
|
shell: bash
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: |
|
||||||
|
grep -q 'Eclipse Temurin JDK 1.8' output.txt || (echo "::error::Did not detect preinstalled JDK 1.8" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 11' output.txt || (echo "::error::Did not detect preinstalled JDK 11" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 17' output.txt || (echo "::error::Did not detect preinstalled JDK 17" && exit 1)
|
||||||
|
grep -q 'Eclipse Temurin JDK 21' output.txt || (echo "::error::Did not detect preinstalled JDK 21" && exit 1)
|
48
.github/workflows/integ-test-execution-with-caching.yml
vendored
Normal file
48
.github/workflows/integ-test-execution-with-caching.yml
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
name: Test execution with caching
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: execution-with-caching-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Execute Gradle build
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
arguments: test
|
||||||
|
|
||||||
|
# Test that the gradle-user-home is restored
|
||||||
|
verify-build:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Execute Gradle build
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
arguments: test --offline -DverifyCachedBuild=true
|
||||||
|
|
80
.github/workflows/integ-test-execution.yml
vendored
Normal file
80
.github/workflows/integ-test-execution.yml
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
name: Test execution
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: execution-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Tests for executing with different Gradle versions.
|
||||||
|
# Each build verifies that it is executed with the expected Gradle version.
|
||||||
|
gradle-execution:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
include:
|
||||||
|
- os: windows-latest
|
||||||
|
script-suffix: '.bat'
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Test use defined Gradle version
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: 6.9
|
||||||
|
build-root-directory: .github/workflow-samples/no-wrapper
|
||||||
|
arguments: help -DgradleVersionCheck=6.9
|
||||||
|
- name: Test use Gradle version alias
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: release-candidate
|
||||||
|
build-root-directory: .github/workflow-samples/no-wrapper
|
||||||
|
arguments: help
|
||||||
|
|
||||||
|
gradle-versions:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
gradle: [7.5.1, 6.9.2, 5.6.4, 4.10.3, 3.5.1]
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
include:
|
||||||
|
- gradle: 5.6.4
|
||||||
|
build-root-suffix: -gradle-5
|
||||||
|
- gradle: 4.10.3
|
||||||
|
build-root-suffix: -gradle-4
|
||||||
|
- gradle: 3.5.1
|
||||||
|
build-root-suffix: -gradle-4
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: temurin
|
||||||
|
java-version: 8
|
||||||
|
- name: Run Gradle build
|
||||||
|
uses: ./
|
||||||
|
id: gradle
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: ${{matrix.gradle}}
|
||||||
|
build-root-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
||||||
|
arguments: help -DgradleVersionCheck=${{matrix.gradle}}
|
||||||
|
- name: Check Build Scan url
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
||||||
|
|
89
.github/workflows/integ-test-inject-develocity.yml
vendored
Normal file
89
.github/workflows/integ-test-inject-develocity.yml
vendored
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
name: Test develocity injection
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
secrets:
|
||||||
|
DEVELOCITY_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
inject-develocity:
|
||||||
|
env:
|
||||||
|
DEVELOCITY_INJECTION_ENABLED: true
|
||||||
|
DEVELOCITY_URL: https://ge.solutions-team.gradle.com
|
||||||
|
DEVELOCITY_PLUGIN_VERSION: 3.16.2
|
||||||
|
DEVELOCITY_CCUD_PLUGIN_VERSION: 1.13
|
||||||
|
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} # This env var has not (yet) been renamed/aliased in GE plugin 3.16.2
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
gradle: [current, 7.6.2, 6.9.4, 5.6.4]
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: temurin
|
||||||
|
java-version: 8
|
||||||
|
- name: Setup Gradle
|
||||||
|
id: setup-gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: ${{ matrix.gradle }}
|
||||||
|
- name: Run Gradle build
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/no-ge
|
||||||
|
run: gradle help
|
||||||
|
- name: Check Build Scan url
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
||||||
|
build-scan-publish:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
gradle: [current, 7.6.2, 6.9.4, 5.6.4]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: temurin
|
||||||
|
java-version: 8
|
||||||
|
- name: Setup Gradle
|
||||||
|
id: setup-gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: ${{ matrix.gradle }}
|
||||||
|
build-scan-publish: true
|
||||||
|
build-scan-terms-of-service-url: "https://gradle.com/terms-of-service"
|
||||||
|
build-scan-terms-of-service-agree: "yes"
|
||||||
|
- name: Run Gradle build
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/no-ge
|
||||||
|
run: gradle help
|
||||||
|
- name: Check Build Scan url
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
108
.github/workflows/integ-test-provision-gradle-versions.yml
vendored
Normal file
108
.github/workflows/integ-test-provision-gradle-versions.yml
vendored
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
name: Test provision Gradle versions
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Tests for executing with different Gradle versions.
|
||||||
|
# Each build verifies that it is executed with the expected Gradle version.
|
||||||
|
provision-gradle:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
include:
|
||||||
|
- os: windows-latest
|
||||||
|
script-suffix: '.bat'
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle with v6.9
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: 6.9
|
||||||
|
- name: Test uses Gradle v6.9
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper
|
||||||
|
run: gradle help "-DgradleVersionCheck=6.9"
|
||||||
|
- name: Setup Gradle with v7.1.1
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: 7.1.1
|
||||||
|
- name: Test uses Gradle v7.1.1
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper
|
||||||
|
run: gradle help "-DgradleVersionCheck=7.1.1"
|
||||||
|
- name: Setup Gradle with release-candidate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: release-candidate
|
||||||
|
- name: Test use release-candidate
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper
|
||||||
|
run: gradle help
|
||||||
|
- name: Setup Gradle with current
|
||||||
|
id: gradle-current
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
gradle-version: current
|
||||||
|
- name: Check current version output parameter
|
||||||
|
if: ${{ !startsWith(steps.gradle-current.outputs.gradle-version , '8.') }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.gradle-current.outputs.gradle-version }}"')
|
||||||
|
|
||||||
|
gradle-versions:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
gradle: [7.3, 6.9, 5.6.4, 4.10.3, 3.5.1]
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
include:
|
||||||
|
- gradle: 5.6.4
|
||||||
|
build-root-suffix: -gradle-5
|
||||||
|
- gradle: 4.10.3
|
||||||
|
build-root-suffix: -gradle-4
|
||||||
|
- gradle: 3.5.1
|
||||||
|
build-root-suffix: -gradle-4
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: temurin
|
||||||
|
java-version: 8
|
||||||
|
- name: Setup Gradle
|
||||||
|
id: setup-gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
gradle-version: ${{ matrix.gradle }}
|
||||||
|
- name: Check output parameter
|
||||||
|
if: ${{ steps.setup-gradle.outputs.gradle-version != matrix.gradle }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.setup-gradle.outputs.gradle-version }}"')
|
||||||
|
- name: Run Gradle build
|
||||||
|
id: gradle
|
||||||
|
working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
||||||
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
||||||
|
- name: Check Build Scan url
|
||||||
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('No Build Scan detected')
|
||||||
|
|
||||||
|
|
195
.github/workflows/integ-test-restore-configuration-cache.yml
vendored
Normal file
195
.github/workflows/integ-test-restore-configuration-cache.yml
vendored
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
name: Test restore configuration-cache
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
secrets:
|
||||||
|
GRADLE_ENCRYPTION_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-configuration-cache-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build-groovy:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Groovy build with configuration-cache enabled
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: gradle test --configuration-cache
|
||||||
|
|
||||||
|
verify-build-groovy:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
|
||||||
|
needs: seed-build-groovy
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Groovy build with configuration-cache enabled
|
||||||
|
id: execute
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: gradle test --configuration-cache
|
||||||
|
- name: Check that configuration-cache was used
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs')
|
||||||
|
if (fs.existsSync('.github/workflow-samples/groovy-dsl/task-configured.txt')) {
|
||||||
|
core.setFailed('Configuration cache was not used - task was configured unexpectedly')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check that the build can run when no extracted cache entries are restored
|
||||||
|
gradle-user-home-not-fully-restored:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
|
||||||
|
needs: seed-build-groovy
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle with no extracted cache entries restored
|
||||||
|
uses: ./
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl"
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Check execute Gradle build with configuration cache enabled (but not restored)
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: gradle test --configuration-cache
|
||||||
|
|
||||||
|
seed-build-kotlin:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Execute 'help' with configuration-cache enabled
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: gradle help --configuration-cache
|
||||||
|
|
||||||
|
modify-build-kotlin:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified
|
||||||
|
needs: seed-build-kotlin
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Execute 'test' with configuration-cache enabled
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: gradle test --configuration-cache
|
||||||
|
|
||||||
|
# Test restore configuration-cache from the third build invocation
|
||||||
|
verify-build-kotlin:
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified
|
||||||
|
needs: modify-build-kotlin
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java to ensure consistency
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '21'
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
gradle-version: 8.6-rc-1
|
||||||
|
- name: Execute 'test' again with configuration-cache enabled
|
||||||
|
id: execute
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: gradle test --configuration-cache
|
||||||
|
- name: Check that configuration-cache was used
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs')
|
||||||
|
if (fs.existsSync('.github/workflow-samples/kotlin-dsl/task-configured.txt')) {
|
||||||
|
core.setFailed('Configuration cache was not used - task was configured unexpectedly')
|
||||||
|
}
|
||||||
|
|
52
.github/workflows/integ-test-restore-containerized-gradle-home.yml
vendored
Normal file
52
.github/workflows/integ-test-restore-containerized-gradle-home.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: Test restore custom Gradle Home
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: fedora:latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
distribution: temurin
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
||||||
|
dependencies-cache:
|
||||||
|
needs: seed-build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: fedora:latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
distribution: temurin
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline
|
67
.github/workflows/integ-test-restore-custom-gradle-home.yml
vendored
Normal file
67
.github/workflows/integ-test-restore-custom-gradle-home.yml
vendored
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
name: Test restore custom Gradle Home
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set Gradle User Home
|
||||||
|
run: |
|
||||||
|
mkdir -p $GITHUB_WORKSPACE/gradle-user-home
|
||||||
|
echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --info
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
||||||
|
dependencies-cache:
|
||||||
|
needs: seed-build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set Gradle User Home
|
||||||
|
run: |
|
||||||
|
mkdir -p $GITHUB_WORKSPACE/gradle-user-home
|
||||||
|
echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline --info
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache and restore local build-cache
|
||||||
|
build-cache:
|
||||||
|
needs: seed-build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set Gradle User Home
|
||||||
|
run: |
|
||||||
|
mkdir -p $GITHUB_WORKSPACE/gradle-user-home
|
||||||
|
echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build and verify tasks from cache
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test -DverifyCachedBuild=true --info
|
124
.github/workflows/integ-test-restore-gradle-home.yml
vendored
Normal file
124
.github/workflows/integ-test-restore-gradle-home.yml
vendored
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
name: Test restore Gradle Home
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-gradle-home-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-gradle-home
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
||||||
|
dependencies-cache:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache and restore local build-cache
|
||||||
|
build-cache:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build and verify tasks from cache
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test -DverifyCachedBuild=true
|
||||||
|
|
||||||
|
# Check that the build can run when Gradle User Home is not fully restored
|
||||||
|
no-extracted-cache-entries-restored:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle with no extracted cache entries restored
|
||||||
|
uses: ./
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl"
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Check executee Gradle build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test
|
||||||
|
|
||||||
|
# Test that a pre-existing gradle-user-home can be overwritten by the restored cache
|
||||||
|
pre-existing-gradle-home:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Pre-create Gradle User Home
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.gradle/caches
|
||||||
|
touch ~/.gradle/gradle.properties
|
||||||
|
touch ~/.gradle/caches/dummy.txt
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
cache-overwrite-existing: true
|
||||||
|
- name: Check that pre-existing content still exists
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ ! -e ~/.gradle/caches/dummy.txt ]; then
|
||||||
|
echo "::error ::Should find dummy.txt after cache restore"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e ~/.gradle/gradle.properties ]; then
|
||||||
|
echo "::error ::Should find gradle.properties after cache restore"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
run: ./gradlew test --offline
|
49
.github/workflows/integ-test-restore-java-toolchain.yml
vendored
Normal file
49
.github/workflows/integ-test-restore-java-toolchain.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
name: Test restore java toolchains
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-java-toolchain-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build using Gradle wrapper
|
||||||
|
working-directory: .github/workflow-samples/java-toolchain
|
||||||
|
run: ./gradlew test --info
|
||||||
|
|
||||||
|
# Test that the gradle-user-home cache will cache the toolchain, by running build with --offline
|
||||||
|
toolchain-cache:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Execute Gradle build with --offline
|
||||||
|
working-directory: .github/workflow-samples/java-toolchain
|
||||||
|
run: ./gradlew test --info --offline
|
48
.github/workflows/integ-test-sample-gradle-plugin.yml
vendored
Normal file
48
.github/workflows/integ-test-sample-gradle-plugin.yml
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
name: Test sample Gradle Plugin project
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-gradle-plugin-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build gradle-plugin project
|
||||||
|
working-directory: .github/workflow-samples/gradle-plugin
|
||||||
|
run: ./gradlew build
|
||||||
|
|
||||||
|
verify-build:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Build gradle-plugin project
|
||||||
|
working-directory: .github/workflow-samples/gradle-plugin
|
||||||
|
run: ./gradlew build --offline
|
48
.github/workflows/integ-test-sample-kotlin-dsl.yml
vendored
Normal file
48
.github/workflows/integ-test-sample-kotlin-dsl.yml
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
name: Test sample Kotlin DSL project
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-kotlin-dsl-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
seed-build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build
|
||||||
|
|
||||||
|
verify-build:
|
||||||
|
needs: seed-build
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build --offline
|
18
.gitignore
vendored
18
.gitignore
vendored
|
@ -1,5 +1,5 @@
|
||||||
__tests__/runner/*
|
# Dependency directory
|
||||||
lib/
|
node_modules
|
||||||
|
|
||||||
# Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
# Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
||||||
# Logs
|
# Logs
|
||||||
|
@ -42,7 +42,6 @@ bower_components
|
||||||
build/Release
|
build/Release
|
||||||
|
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
jspm_packages/
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
# TypeScript v1 declaration files
|
||||||
|
@ -90,3 +89,16 @@ typings/
|
||||||
|
|
||||||
# DynamoDB Local files
|
# DynamoDB Local files
|
||||||
.dynamodb/
|
.dynamodb/
|
||||||
|
|
||||||
|
# OS metadata
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Ignore built ts files
|
||||||
|
__tests__/runner/*
|
||||||
|
# lib/**/*
|
||||||
|
|
||||||
|
# IntelliJ IDEA config files
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
|
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||||
|
level of experience, education, socio-economic status, nationality, personal
|
||||||
|
appearance, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||||
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
|
permanently any contributor for other behaviors that they deem inappropriate,
|
||||||
|
threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community. Examples of
|
||||||
|
representing a project or community include using an official project e-mail
|
||||||
|
address, posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event. Representation of a project may be
|
||||||
|
further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at paul@nosphere.org. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see
|
||||||
|
https://www.contributor-covenant.org/faq
|
2
LICENSE
2
LICENSE
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2018 GitHub, Inc. and contributors
|
Copyright (c) 2023 Gradle Inc.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
143
README.md
143
README.md
|
@ -1,123 +1,40 @@
|
||||||
# Execute Gradle commands in Github Actions workflows
|
> [!IMPORTANT]
|
||||||
|
> As of `v3` this action has been superceded by `gradle/actions/setup-gradle`.
|
||||||
|
> Any workflow that uses `gradle/gradle-build-action@v3` will transparently delegate to `gradle/actions/setup-gradle@v3`.
|
||||||
|
>
|
||||||
|
> Users are encouraged to update their workflows, replacing:
|
||||||
|
> ```
|
||||||
|
> uses: gradle/gradle-build-action@v3
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> with
|
||||||
|
> ```
|
||||||
|
> uses: gradle/actions/setup-gradle@v3
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> See the [setup-gradle documentation](https://github.com/gradle/actions/tree/main/setup-gradle) for up-to-date documentation for `gradle/actions/setup-gradle`.
|
||||||
|
|
||||||
This Github Action can be used to run arbitrary Gradle commands on any platform supported by Github Actions.
|
# Setup Gradle for use in GitHub Actions workflows
|
||||||
|
|
||||||
|
This GitHub Action can be used to configure Gradle on any platform supported by GitHub Actions.
|
||||||
|
|
||||||
## Usage
|
## Example usage
|
||||||
|
|
||||||
The following workflow will run `gradle build` using the wrapper from the repository on ubuntu, macos and windows:
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
// .github/workflows/gradle-build-pr.yml
|
name: Build
|
||||||
name: Run Gradle on PRs
|
|
||||||
on: pull-request
|
on: [ push ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
gradle:
|
build:
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 11
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
arguments: build
|
|
||||||
```
|
|
||||||
|
|
||||||
## Gradle arguments
|
|
||||||
|
|
||||||
The `arguments` input can used to pass arbitrary arguments to the `gradle` command line.
|
|
||||||
|
|
||||||
Here are some valid examples:
|
|
||||||
```yaml
|
|
||||||
arguments: build
|
|
||||||
arguments: check --scan
|
|
||||||
arguments: some arbitrary tasks
|
|
||||||
arguments: build -PgradleProperty=foo
|
|
||||||
arguments: build -DsystemProperty=bar
|
|
||||||
....
|
|
||||||
```
|
|
||||||
|
|
||||||
See `gradle --help` for more information.
|
|
||||||
|
|
||||||
If you need to pass environment variables, simply use the Github Actions workflow syntax:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
env:
|
|
||||||
CI: true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Run a build from a different directory
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
build-root-directory: some/subdirectory
|
|
||||||
```
|
|
||||||
|
|
||||||
## Use a Gradle wrapper from a different directory
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
wrapper-directory: path/to/wrapper-directory
|
|
||||||
```
|
|
||||||
|
|
||||||
## Use a specific `gradle` executable
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
gradle-executable: path/to/gradle
|
|
||||||
```
|
|
||||||
|
|
||||||
## Setup and use a declared Gradle version
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: eskatos/gradle-command-action@v1
|
|
||||||
with:
|
|
||||||
gradle-version: 5.6.2
|
|
||||||
```
|
|
||||||
|
|
||||||
`gradle-version` can be set to any valid Gradle version.
|
|
||||||
|
|
||||||
Moreover, you can use the following aliases:
|
|
||||||
|
|
||||||
| Alias | Selects |
|
|
||||||
| --- |---|
|
|
||||||
| `current` | The current [stable release](https://gradle.org/install/) |
|
|
||||||
| `rc` | The current [release candidate](https://gradle.org/release-candidate/) if any, otherwise fallback to `current` |
|
|
||||||
| `nightly` | The latest [nightly](https://gradle.org/nightly/), fails if none. |
|
|
||||||
| `release-nightly` | The latest [release nightly](https://gradle.org/release-nightly/), fails if none. |
|
|
||||||
|
|
||||||
This can be handy to automatically test your build with the next Gradle version once a release candidate is out:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
// .github/workflows/test-gradle-rc.yml
|
|
||||||
name: Test latest Gradle RC
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: 0 0 * * * # daily
|
|
||||||
jobs:
|
|
||||||
gradle-rc:
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- name: Checkout sources
|
||||||
- uses: actions/setup-java@v1
|
uses: actions/checkout@v4
|
||||||
with:
|
- name: Setup Gradle
|
||||||
java-version: 11
|
uses: gradle/actions/setup-gradle@v3
|
||||||
- uses: eskatos/gradle-command-action@v1
|
- name: Build with Gradle
|
||||||
with:
|
run: ./gradlew build
|
||||||
gradle-version: rc
|
|
||||||
arguments: build --dry-run # just test build configuration
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Build scans
|
See the [full setup-gradle documentation](https://github.com/gradle/actions/tree/main/setup-gradle) for more advanced usage scenarios.
|
||||||
|
|
||||||
If your build publishes a [build scan](https://gradle.com/build-scans/) the `gradle-command-action` action will emit the link to the published build scan as an output named `build-scan-url`.
|
|
||||||
|
|
||||||
You can then use that link in subsequent actions of your workflow.
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
describe('TODO - Add a test suite', () => {
|
|
||||||
it('TODO - Add a test', async () => {});
|
|
||||||
});
|
|
271
action.yml
271
action.yml
|
@ -1,33 +1,268 @@
|
||||||
name: "Gradle Command"
|
name: setup-gradle
|
||||||
description: 'Execute Gradle Command Line'
|
description: 'Configures Gradle for GitHub actions, caching state and generating a dependency graph via Dependency Submission.'
|
||||||
author: 'Paul Merlin <paul@nospere.org>'
|
|
||||||
|
|
||||||
# https://help.github.com/en/articles/metadata-syntax-for-github-actions
|
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
wrapper-directory:
|
|
||||||
description: Path to the Gradle Wrapper directory
|
|
||||||
required: false
|
|
||||||
gradle-executable:
|
|
||||||
description: Path to the Gradle executable
|
|
||||||
required: false
|
|
||||||
gradle-version:
|
gradle-version:
|
||||||
description: Gradle version to use
|
description: |
|
||||||
|
Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle.
|
||||||
|
If not provided, it is assumed that the project uses the Gradle Wrapper.
|
||||||
required: false
|
required: false
|
||||||
build-root-directory:
|
|
||||||
description: Path to the root directory of the build
|
# Cache configuration
|
||||||
|
cache-disabled:
|
||||||
|
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
||||||
required: false
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
cache-read-only:
|
||||||
|
description: |
|
||||||
|
When 'true', existing entries will be read from the cache but no entries will be written.
|
||||||
|
By default this value is 'false' for workflows on the GitHub default branch and 'true' for workflows on other branches.
|
||||||
|
required: false
|
||||||
|
default: ${{ github.event.repository != null && github.ref_name != github.event.repository.default_branch }}
|
||||||
|
|
||||||
|
cache-write-only:
|
||||||
|
description: |
|
||||||
|
When 'true', entries will not be restored from the cache but will be saved at the end of the Job.
|
||||||
|
Setting this to 'true' implies cache-read-only will be 'false'.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
cache-overwrite-existing:
|
||||||
|
description: When 'true', a pre-existing Gradle User Home will not prevent the cache from being restored.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
cache-encryption-key:
|
||||||
|
description: |
|
||||||
|
A base64 encoded AES key used to encrypt the configuration-cache data. The key is exported as 'GRADLE_ENCRYPTION_KEY' for later steps.
|
||||||
|
A suitable key can be generated with `openssl rand -base64 16`.
|
||||||
|
Configuration-cache data will not be saved/restored without an encryption key being provided.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-home-cache-includes:
|
||||||
|
description: Paths within Gradle User Home to cache.
|
||||||
|
required: false
|
||||||
|
default: |
|
||||||
|
caches
|
||||||
|
notifications
|
||||||
|
|
||||||
|
gradle-home-cache-excludes:
|
||||||
|
description: Paths within Gradle User Home to exclude from cache.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-home-cache-cleanup:
|
||||||
|
description: When 'true', the action will attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
# Job summary configuration
|
||||||
|
add-job-summary:
|
||||||
|
description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'.
|
||||||
|
required: false
|
||||||
|
default: 'always'
|
||||||
|
|
||||||
|
add-job-summary-as-pr-comment:
|
||||||
|
description: Specifies when each Job Summary should be added as a PR comment. Valid values are 'never' (default), 'always', and 'on-failure'. No action will be taken if the workflow was not triggered from a pull request.
|
||||||
|
required: false
|
||||||
|
default: 'never'
|
||||||
|
|
||||||
|
# Dependency Graph configuration
|
||||||
|
dependency-graph:
|
||||||
|
description: |
|
||||||
|
Specifies if a GitHub dependency snapshot should be generated for each Gradle build, and if so, how.
|
||||||
|
Valid values are 'disabled' (default), 'generate', 'generate-and-submit', 'generate-and-upload', 'download-and-submit' and 'clear'.
|
||||||
|
required: false
|
||||||
|
default: 'disabled'
|
||||||
|
|
||||||
|
dependency-graph-continue-on-failure:
|
||||||
|
description: When 'false' a failure to generate or submit a dependency graph will fail the Step or Job. When 'true' a warning will be emitted but no failure will result.
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
|
||||||
|
artifact-retention-days:
|
||||||
|
description: Specifies the number of days to retain any artifacts generated by the action. If not set, the default retention settings for the repository will apply.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
# Build Scan configuration
|
||||||
|
build-scan-publish:
|
||||||
|
description: |
|
||||||
|
Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com.
|
||||||
|
For publication to succeed without user input, you must also provide values for `build-scan-terms-of-use-url` and 'build-scan-terms-of-use-agree'.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
build-scan-terms-of-use-url:
|
||||||
|
description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/terms-of-service' or 'https://gradle.com/help/legal-terms-of-use'.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
build-scan-terms-of-use-agree:
|
||||||
|
description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes".
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-access-key:
|
||||||
|
description: Develocity access key. Should be set to a secret containing the Develocity Access key.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-token-expiry:
|
||||||
|
description: The Develocity short-lived access tokens expiry in hours. Default is 2 hours.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-injection-enabled:
|
||||||
|
description: Enables Develocity injection.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-url:
|
||||||
|
description: The URL for the Develocity server.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-allow-untrusted-server:
|
||||||
|
description: Allow communication with an untrusted server; set to _true_ if your Develocity instance is using a self-signed.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-capture-file-fingerprints:
|
||||||
|
description: Enables capturing the paths and content hashes of each individual input file.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-enforce-url:
|
||||||
|
description: Enforce the configured Develocity URL over a URL configured in the project's build; set to _true_ to enforce publication of build scans to the configured Develocity URL.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-plugin-version:
|
||||||
|
description: The version of the Develocity Gradle plugin to apply.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
develocity-ccud-plugin-version:
|
||||||
|
description: The version of the Common Custom User Data Gradle plugin to apply, if any.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-plugin-repository-url:
|
||||||
|
description: The URL of the repository to use when resolving the Develocity and CCUD plugins; the Gradle Plugin Portal is used by default.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-plugin-repository-username:
|
||||||
|
description: The username for the repository URL to use when resolving the Develocity and CCUD.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-plugin-repository-password:
|
||||||
|
description: The password for the repository URL to use when resolving the Develocity and CCUD plugins; Consider using secrets to pass the value to this variable.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
# Wrapper validation configuration
|
||||||
|
validate-wrappers:
|
||||||
|
description: |
|
||||||
|
When 'true', the action will perform the 'wrapper-validation' action automatically.
|
||||||
|
If the wrapper checksums are not valid, the action will fail.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
# DEPRECATED ACTION INPUTS
|
||||||
|
build-scan-terms-of-service-url:
|
||||||
|
description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/terms-of-service'.
|
||||||
|
required: false
|
||||||
|
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-url' instead.
|
||||||
|
|
||||||
|
build-scan-terms-of-service-agree:
|
||||||
|
description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes".
|
||||||
|
required: false
|
||||||
|
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
|
||||||
|
|
||||||
|
generate-job-summary:
|
||||||
|
description: When 'false', no Job Summary will be generated for the Job.
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
deprecation-message: Superceded by the new 'add-job-summary' and 'add-job-summary-as-pr-comment' parameters.
|
||||||
|
|
||||||
arguments:
|
arguments:
|
||||||
description: Gradle command line arguments, see gradle --help
|
description: Gradle command line arguments (supports multi-line input)
|
||||||
|
required: false
|
||||||
|
deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
|
||||||
|
|
||||||
|
build-root-directory:
|
||||||
|
description: Path to the root directory of the build. Default is the root of the GitHub workspace.
|
||||||
|
required: false
|
||||||
|
deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
|
||||||
|
|
||||||
|
# EXPERIMENTAL ACTION INPUTS
|
||||||
|
# The following action properties allow fine-grained tweaking of the action caching behaviour.
|
||||||
|
# These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`.
|
||||||
|
# Use at your own risk!
|
||||||
|
gradle-home-cache-strict-match:
|
||||||
|
description: When 'true', the action will not attempt to restore the Gradle User Home entries from other Jobs.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
# INTERNAL ACTION INPUTS
|
||||||
|
# These inputs should not be configured directly, and are only used to pass environmental information to the action
|
||||||
|
workflow-job-context:
|
||||||
|
description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL).
|
||||||
|
required: false
|
||||||
|
default: ${{ toJSON(matrix) }}
|
||||||
|
|
||||||
|
github-token:
|
||||||
|
description: The GitHub token used to authenticate when submitting via the Dependency Submission API.
|
||||||
|
default: ${{ github.token }}
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
build-scan-url:
|
build-scan-url:
|
||||||
description: Link to the build scan if any
|
description: Link to the Build Scan® generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself.
|
||||||
|
value: ${{ steps.setup-gradle.outputs.build-scan-url }}
|
||||||
|
dependency-graph-file:
|
||||||
|
description: Path to the GitHub Dependency Graph snapshot file generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself.
|
||||||
|
value: ${{ steps.setup-gradle.outputs.dependency-graph-file }}
|
||||||
|
gradle-version:
|
||||||
|
description: Version of Gradle that was setup by the action
|
||||||
|
value: ${{ steps.setup-gradle.outputs.gradle-version }}
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node12'
|
using: "composite"
|
||||||
main: 'lib/main.js'
|
steps:
|
||||||
|
- name: Setup Gradle
|
||||||
|
id: setup-gradle
|
||||||
|
uses: gradle/actions/setup-gradle@v3.5.0
|
||||||
|
with:
|
||||||
|
gradle-version: ${{ inputs.gradle-version }}
|
||||||
|
cache-disabled: ${{ inputs.cache-disabled }}
|
||||||
|
cache-read-only: ${{ inputs.cache-read-only }}
|
||||||
|
cache-write-only: ${{ inputs.cache-write-only }}
|
||||||
|
cache-overwrite-existing: ${{ inputs.cache-overwrite-existing }}
|
||||||
|
cache-encryption-key: ${{ inputs.cache-encryption-key }}
|
||||||
|
gradle-home-cache-includes: ${{ inputs.gradle-home-cache-includes }}
|
||||||
|
gradle-home-cache-excludes: ${{ inputs.gradle-home-cache-excludes }}
|
||||||
|
gradle-home-cache-cleanup: ${{ inputs.gradle-home-cache-cleanup }}
|
||||||
|
add-job-summary: ${{ inputs.add-job-summary }}
|
||||||
|
add-job-summary-as-pr-comment: ${{ inputs.add-job-summary-as-pr-comment }}
|
||||||
|
dependency-graph: ${{ inputs.dependency-graph }}
|
||||||
|
dependency-graph-continue-on-failure: ${{ inputs.dependency-graph-continue-on-failure }}
|
||||||
|
artifact-retention-days: ${{ inputs.artifact-retention-days }}
|
||||||
|
build-scan-publish: ${{ inputs.build-scan-publish }}
|
||||||
|
build-scan-terms-of-use-url: ${{ inputs.build-scan-terms-of-use-url }}
|
||||||
|
build-scan-terms-of-use-agree: ${{ inputs.build-scan-terms-of-use-agree }}
|
||||||
|
validate-wrappers: ${{ inputs.validate-wrappers }}
|
||||||
|
build-scan-terms-of-service-url: ${{ inputs.build-scan-terms-of-service-url }}
|
||||||
|
build-scan-terms-of-service-agree: ${{ inputs.build-scan-terms-of-service-agree }}
|
||||||
|
generate-job-summary: ${{ inputs.generate-job-summary }}
|
||||||
|
arguments: ${{ inputs.arguments }}
|
||||||
|
build-root-directory: ${{ inputs.build-root-directory }}
|
||||||
|
gradle-home-cache-strict-match: ${{ inputs.gradle-home-cache-strict-match }}
|
||||||
|
workflow-job-context: ${{ inputs.workflow-job-context }}
|
||||||
|
github-token: ${{ inputs.github-token }}
|
||||||
|
develocity-access-key: ${{ inputs.develocity-access-key }}
|
||||||
|
develocity-token-expiry: ${{ inputs.develocity-token-expiry }}
|
||||||
|
develocity-injection-enabled: ${{ inputs.develocity-injection-enabled }}
|
||||||
|
develocity-url: ${{ inputs.develocity-url }}
|
||||||
|
develocity-allow-untrusted-server: ${{ inputs.develocity-allow-untrusted-server }}
|
||||||
|
develocity-capture-file-fingerprints: ${{ inputs.develocity-capture-file-fingerprints }}
|
||||||
|
develocity-enforce-url: ${{ inputs.develocity-enforce-url }}
|
||||||
|
develocity-plugin-version: ${{ inputs.develocity-plugin-version }}
|
||||||
|
develocity-ccud-plugin-version: ${{ inputs.develocity-ccud-plugin-version }}
|
||||||
|
gradle-plugin-repository-url: ${{ inputs.gradle-plugin-repository-url }}
|
||||||
|
gradle-plugin-repository-username: ${{ inputs.gradle-plugin-repository-username }}
|
||||||
|
gradle-plugin-repository-password: ${{ inputs.gradle-plugin-repository-password }}
|
||||||
|
|
||||||
|
env:
|
||||||
|
GRADLE_ACTION_ID: gradle/gradle-build-action
|
||||||
|
|
||||||
branding:
|
branding:
|
||||||
icon: 'box'
|
icon: 'box'
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
clearMocks: true,
|
|
||||||
moduleFileExtensions: ['js', 'ts'],
|
|
||||||
testEnvironment: 'node',
|
|
||||||
testMatch: ['**/*.test.ts'],
|
|
||||||
testRunner: 'jest-circus/runner',
|
|
||||||
transform: {
|
|
||||||
'^.+\\.ts$': 'ts-jest'
|
|
||||||
},
|
|
||||||
verbose: true
|
|
||||||
}
|
|
5103
package-lock.json
generated
5103
package-lock.json
generated
File diff suppressed because it is too large
Load diff
40
package.json
40
package.json
|
@ -1,40 +0,0 @@
|
||||||
{
|
|
||||||
"name": "gradle-command-action",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Execute Gradle Command Line",
|
|
||||||
"main": "lib/main.js",
|
|
||||||
"scripts": {
|
|
||||||
"build": "tsc",
|
|
||||||
"test": "jest"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/eskatos/gradle-command-action.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"github",
|
|
||||||
"actions",
|
|
||||||
"github-actions",
|
|
||||||
"gradle"
|
|
||||||
],
|
|
||||||
"author": "Paul Merlin <paul@nosphere.org>",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@actions/core": "1.1.1",
|
|
||||||
"@actions/exec": "1.0.1",
|
|
||||||
"@actions/io": "1.0.1",
|
|
||||||
"@actions/tool-cache": "1.1.1",
|
|
||||||
"string-argv": "0.3.1",
|
|
||||||
"typed-rest-client": "1.5.0",
|
|
||||||
"unzipper": "0.10.5"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/jest": "24.0.18",
|
|
||||||
"@types/node": "12.7.5",
|
|
||||||
"@types/unzipper": "0.10.0",
|
|
||||||
"jest": "24.9.0",
|
|
||||||
"jest-circus": "24.9.0",
|
|
||||||
"ts-jest": "24.1.0",
|
|
||||||
"typescript": "3.6.3"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
import * as exec from "@actions/exec";
|
|
||||||
|
|
||||||
|
|
||||||
export async function execute(executable: string, root: string, argv: string[]): Promise<BuildResult> {
|
|
||||||
|
|
||||||
let publishing = false;
|
|
||||||
let buildScanLink: any = null;
|
|
||||||
|
|
||||||
await exec.exec(executable, argv, {
|
|
||||||
cwd: root,
|
|
||||||
listeners: {
|
|
||||||
stdline: (line: string) => {
|
|
||||||
if (line.startsWith("Publishing build scan...")) {
|
|
||||||
publishing = true;
|
|
||||||
}
|
|
||||||
if (publishing && line.length == 0) {
|
|
||||||
publishing = false
|
|
||||||
}
|
|
||||||
if (publishing && line.startsWith("http")) {
|
|
||||||
buildScanLink = line.trim();
|
|
||||||
publishing = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (buildScanLink != null) {
|
|
||||||
return new BuildResultImpl(buildScanLink.toString());
|
|
||||||
}
|
|
||||||
return new BuildResultImpl(null as unknown as string);
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BuildResult {
|
|
||||||
buildScanUrl: string
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuildResultImpl implements BuildResult {
|
|
||||||
constructor(readonly buildScanUrl: string) {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
export function wrapperFilename() {
|
|
||||||
const isWindows = process.platform === "win32";
|
|
||||||
return isWindows ? "gradlew.bat" : "gradlew";
|
|
||||||
}
|
|
||||||
|
|
||||||
export function installScriptFilename() {
|
|
||||||
const isWindows = process.platform === "win32";
|
|
||||||
return isWindows ? "gradle.bat" : "gradle";
|
|
||||||
}
|
|
74
src/main.ts
74
src/main.ts
|
@ -1,74 +0,0 @@
|
||||||
import * as core from "@actions/core";
|
|
||||||
import * as path from "path";
|
|
||||||
import {parseArgsStringToArgv} from "string-argv";
|
|
||||||
|
|
||||||
import * as execution from "./execution";
|
|
||||||
import * as gradlew from "./gradlew";
|
|
||||||
import * as provision from "./provision";
|
|
||||||
|
|
||||||
|
|
||||||
// Invoked by Github Actions
|
|
||||||
async function run() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
const baseDirectory = process.env[`GITHUB_WORKSPACE`] || "";
|
|
||||||
|
|
||||||
let result = await execution.execute(
|
|
||||||
await resolveGradleExecutable(baseDirectory),
|
|
||||||
resolveBuildRootDirectory(baseDirectory),
|
|
||||||
parseCommandLineArguments()
|
|
||||||
);
|
|
||||||
|
|
||||||
if (result.buildScanUrl != null) {
|
|
||||||
core.setOutput("build-scan-url", result.buildScanUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
core.setFailed(error.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
run();
|
|
||||||
|
|
||||||
|
|
||||||
async function resolveGradleExecutable(baseDirectory: string): Promise<string> {
|
|
||||||
|
|
||||||
const gradleVersion = inputOrNull("gradle-version");
|
|
||||||
if (gradleVersion != null) {
|
|
||||||
return provision.gradleVersion(gradleVersion)
|
|
||||||
}
|
|
||||||
|
|
||||||
const gradleExecutable = inputOrNull("gradle-executable");
|
|
||||||
if (gradleExecutable != null) {
|
|
||||||
return path.join(baseDirectory, gradleExecutable)
|
|
||||||
}
|
|
||||||
|
|
||||||
const wrapperDirectory = inputOrNull("wrapper-directory");
|
|
||||||
const executableDirectory = wrapperDirectory != null
|
|
||||||
? path.join(baseDirectory, wrapperDirectory)
|
|
||||||
: baseDirectory;
|
|
||||||
|
|
||||||
return path.join(executableDirectory, gradlew.wrapperFilename());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function resolveBuildRootDirectory(baseDirectory: string): string {
|
|
||||||
let buildRootDirectory = inputOrNull("build-root-directory");
|
|
||||||
return buildRootDirectory == null ? baseDirectory : path.join(baseDirectory, buildRootDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function parseCommandLineArguments(): string[] {
|
|
||||||
const input = inputOrNull("arguments");
|
|
||||||
return input == null ? [] : parseArgsStringToArgv(input)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function inputOrNull(name: string): string | null {
|
|
||||||
const inputString = core.getInput(name);
|
|
||||||
if (inputString.length == 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return inputString
|
|
||||||
}
|
|
163
src/provision.ts
163
src/provision.ts
|
@ -1,163 +0,0 @@
|
||||||
import * as fs from "fs";
|
|
||||||
import * as path from "path";
|
|
||||||
import * as httpm from 'typed-rest-client/HttpClient';
|
|
||||||
import * as unzip from "unzipper"
|
|
||||||
import * as core from "@actions/core";
|
|
||||||
import * as io from '@actions/io';
|
|
||||||
import * as toolCache from "@actions/tool-cache";
|
|
||||||
|
|
||||||
import * as gradlew from "./gradlew";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Gradle executable
|
|
||||||
*/
|
|
||||||
export async function gradleVersion(gradleVersion: string): Promise<string> {
|
|
||||||
switch (gradleVersion) {
|
|
||||||
case "current":
|
|
||||||
return gradleCurrent();
|
|
||||||
case "rc":
|
|
||||||
return gradleReleaseCandidate();
|
|
||||||
case "nightly":
|
|
||||||
return gradleNightly();
|
|
||||||
case "release-nightly":
|
|
||||||
return gradleReleaseNightly();
|
|
||||||
default:
|
|
||||||
return gradle(gradleVersion);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const gradleVersionsBaseUrl = "https://services.gradle.org/versions";
|
|
||||||
|
|
||||||
|
|
||||||
async function gradleCurrent(): Promise<string> {
|
|
||||||
const json = await gradleVersionDeclaration(`${gradleVersionsBaseUrl}/current`);
|
|
||||||
return provisionGradle(json.version, json.downloadUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function gradleReleaseCandidate(): Promise<string> {
|
|
||||||
const json = await gradleVersionDeclaration(`${gradleVersionsBaseUrl}/release-candidate`);
|
|
||||||
if (json != null) {
|
|
||||||
return provisionGradle(json.version, json.downloadUrl);
|
|
||||||
}
|
|
||||||
return gradleCurrent();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function gradleNightly(): Promise<string> {
|
|
||||||
const json = await gradleVersionDeclaration(`${gradleVersionsBaseUrl}/nightly`);
|
|
||||||
return provisionGradle(json.version, json.downloadUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function gradleReleaseNightly(): Promise<string> {
|
|
||||||
const json = await gradleVersionDeclaration(`${gradleVersionsBaseUrl}/release-nightly`);
|
|
||||||
return provisionGradle(json.version, json.downloadUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function gradle(version: string): Promise<string> {
|
|
||||||
const declaration = await findGradleVersionDeclaration(version);
|
|
||||||
if (declaration == null) {
|
|
||||||
throw new Error(`Gradle version ${version} does not exists`);
|
|
||||||
}
|
|
||||||
return provisionGradle(declaration.version, declaration.downloadUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function gradleVersionDeclaration(url: string): Promise<any | null> {
|
|
||||||
const httpc = new httpm.HttpClient("gradle-github-action");
|
|
||||||
const response = await httpc.get(url);
|
|
||||||
const body = await response.readBody();
|
|
||||||
const json = JSON.parse(body);
|
|
||||||
return (json == null || json.version == null || json.version.length <= 0)
|
|
||||||
? null
|
|
||||||
: json
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function findGradleVersionDeclaration(version: string): Promise<any | null> {
|
|
||||||
const httpc = new httpm.HttpClient("gradle-github-action");
|
|
||||||
const response = await httpc.get(`${gradleVersionsBaseUrl}/all`);
|
|
||||||
const body = await response.readBody();
|
|
||||||
const json = JSON.parse(body);
|
|
||||||
const found = json.find(entry => {
|
|
||||||
return entry.version == version;
|
|
||||||
});
|
|
||||||
return found != undefined ? found : null
|
|
||||||
}
|
|
||||||
|
|
||||||
async function provisionGradle(version: string, url: string): Promise<string> {
|
|
||||||
|
|
||||||
const cachedInstall: string = toolCache.find("gradle", version);
|
|
||||||
if (cachedInstall != null && cachedInstall.length > 0) {
|
|
||||||
const cachedExecutable = executableFrom(cachedInstall);
|
|
||||||
core.info(`Provisioned Gradle executable ${cachedExecutable}`);
|
|
||||||
return cachedExecutable;
|
|
||||||
}
|
|
||||||
|
|
||||||
const home = process.env["HOME"] || "";
|
|
||||||
const tmpdir = path.join(home, "gradle-provision-tmpdir");
|
|
||||||
const downloadsDir = path.join(tmpdir, "downloads");
|
|
||||||
const installsDir = path.join(tmpdir, "installs");
|
|
||||||
await io.mkdirP(downloadsDir);
|
|
||||||
await io.mkdirP(installsDir);
|
|
||||||
|
|
||||||
core.info(`Downloading ${url}`);
|
|
||||||
|
|
||||||
const downloadPath = path.join(downloadsDir, `gradle-${version}-bin.zip`);
|
|
||||||
await httpDownload(url, downloadPath);
|
|
||||||
core.info(`Downloaded at ${downloadPath}, size ${fs.statSync(downloadPath).size}`);
|
|
||||||
|
|
||||||
await extractZip(downloadPath, installsDir);
|
|
||||||
const installDir = path.join(installsDir, `gradle-${version}`);
|
|
||||||
core.info(`Extracted in ${installDir}`);
|
|
||||||
|
|
||||||
const executable = executableFrom(installDir);
|
|
||||||
fs.chmodSync(executable, "755");
|
|
||||||
core.info(`Provisioned Gradle executable ${executable}`);
|
|
||||||
|
|
||||||
toolCache.cacheDir(installDir, "gradle", version);
|
|
||||||
|
|
||||||
return executable;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function executableFrom(installDir: string): string {
|
|
||||||
return path.join(installDir, "bin", `${gradlew.installScriptFilename()}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function httpDownload(url: string, path: string): Promise<void> {
|
|
||||||
return new Promise<void>(function (resolve, reject) {
|
|
||||||
const httpc = new httpm.HttpClient("gradle-github-action");
|
|
||||||
const writeStream = fs.createWriteStream(path);
|
|
||||||
httpc.get(url).then(response => {
|
|
||||||
response.message.pipe(writeStream)
|
|
||||||
.on("close", () => {
|
|
||||||
resolve();
|
|
||||||
})
|
|
||||||
.on("error", err => {
|
|
||||||
reject(err)
|
|
||||||
});
|
|
||||||
}).catch(reason => {
|
|
||||||
reject(reason);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async function extractZip(zip: string, destination: string): Promise<void> {
|
|
||||||
return new Promise<void>(function (resolve, reject) {
|
|
||||||
fs.createReadStream(zip)
|
|
||||||
.pipe(unzip.Extract({"path": destination}))
|
|
||||||
.on("close", () => {
|
|
||||||
resolve();
|
|
||||||
})
|
|
||||||
.on("error", err => {
|
|
||||||
reject(err)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
/* Basic Options */
|
|
||||||
// "incremental": true, /* Enable incremental compilation */
|
|
||||||
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
|
||||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
|
||||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
|
||||||
// "checkJs": true, /* Report errors in .js files. */
|
|
||||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
|
||||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
|
||||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
|
||||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
|
||||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
|
||||||
"outDir": "./lib", /* Redirect output structure to the directory. */
|
|
||||||
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
|
||||||
// "composite": true, /* Enable project compilation */
|
|
||||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
|
||||||
// "removeComments": true, /* Do not emit comments to output. */
|
|
||||||
// "noEmit": true, /* Do not emit outputs. */
|
|
||||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
|
||||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
|
||||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
|
||||||
|
|
||||||
/* Strict Type-Checking Options */
|
|
||||||
"strict": true, /* Enable all strict type-checking options. */
|
|
||||||
"noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */
|
|
||||||
"strictNullChecks": true, /* Enable strict null checks. */
|
|
||||||
"strictFunctionTypes": true, /* Enable strict checking of function types. */
|
|
||||||
"strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
|
||||||
"strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
|
||||||
"noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
|
||||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
|
||||||
|
|
||||||
/* Additional Checks */
|
|
||||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
|
||||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
|
||||||
"noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
|
||||||
"noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
|
||||||
|
|
||||||
/* Module Resolution Options */
|
|
||||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
|
||||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
|
||||||
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
|
|
||||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
|
||||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
|
||||||
// "types": [], /* Type declaration files to be included in compilation. */
|
|
||||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
|
||||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
|
||||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
|
||||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
||||||
|
|
||||||
/* Source Map Options */
|
|
||||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
|
||||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
|
||||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
|
||||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
|
||||||
|
|
||||||
/* Experimental Options */
|
|
||||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
|
||||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
|
||||||
},
|
|
||||||
"exclude": ["node_modules", "**/*.test.ts"]
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue