mirror of
https://github.com/standardnotes/server
synced 2026-04-19 08:02:23 -04:00
Compare commits
1563 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cbdd2584d0 | |||
| f3161c2712 | |||
| 148542dd5a | |||
| d2b2c339f2 | |||
| d2578c48f0 | |||
| fecfd54728 | |||
| 17e4162d3e | |||
| 742209d773 | |||
| 1fa4b7cf27 | |||
| 5dc5507039 | |||
| 3035a20b9f | |||
| 04b3bb034f | |||
| bf84be0136 | |||
| 890cf48749 | |||
| 2b3436c6ce | |||
| 4df8c3b2e5 | |||
| 25a2696c32 | |||
| 52f879f842 | |||
| 4f70fa156d | |||
| 38e77f04be | |||
| 060206ddd4 | |||
| 0bc0909386 | |||
| 667d528a8c | |||
| fa7fbe26e7 | |||
| ba422a29d0 | |||
| d220ec5bf7 | |||
| 7baf5492bc | |||
| d5a8409bb5 | |||
| f58f90667c | |||
| a388e1a802 | |||
| 8811d10a73 | |||
| c7a394cd1a | |||
| b7615a7f2e | |||
| 1ca70c1e50 | |||
| 253cbb1d0c | |||
| e38a16404c | |||
| f17a1f875c | |||
| 2237e0f5df | |||
| 0df471585f | |||
| 95aac1a7bf | |||
| c078bc958d | |||
| 49c27924ea | |||
| c9dd8e7338 | |||
| 5ef90cc75b | |||
| 063c61d96c | |||
| 0cb5e36b20 | |||
| 319bab5b34 | |||
| 90a4f2111f | |||
| 3aba202970 | |||
| c8974b7fa2 | |||
| 3654a19586 | |||
| 5f0929c1aa | |||
| c0fa83bce6 | |||
| c201ee42a0 | |||
| e6a4cc3098 | |||
| 39f2fe2ba1 | |||
| 72ce190996 | |||
| 527dd1b61b | |||
| af8feaadfe | |||
| 3164f76662 | |||
| d6e531d4b6 | |||
| af76878dad | |||
| 28cce39fe7 | |||
| a8b806af08 | |||
| fa0b0294b4 | |||
| 58ab410b0a | |||
| 51c8b20506 | |||
| 1e62a3760e | |||
| 2f569d4104 | |||
| f23e444ed0 | |||
| e6e9a32f03 | |||
| 8237df33a7 | |||
| 624b574013 | |||
| d762bc89d1 | |||
| f0cbec07b8 | |||
| 8c1f583968 | |||
| b28636fa73 | |||
| 092054fd44 | |||
| 9391917d08 | |||
| 5cf008f53d | |||
| 231194bd53 | |||
| 2707e87554 | |||
| 4b40c59e7e | |||
| f2e8579f95 | |||
| 57118c85e3 | |||
| 8ddc7b0a58 | |||
| bc63d0aeea | |||
| 9def26e809 | |||
| 74ac709bb5 | |||
| 1f749fad49 | |||
| 13c85d4331 | |||
| 77d2099cdb | |||
| 56a312f217 | |||
| aa2b3dac49 | |||
| 1a8daef79d | |||
| a83d133f93 | |||
| b0d01dffd9 | |||
| b74e7ce86d | |||
| 671f7a7074 | |||
| 55fd873b37 | |||
| 32c667b22d | |||
| a6b062f638 | |||
| f9183b4c62 | |||
| c7d575a0ff | |||
| a575e62519 | |||
| 3761d60f41 | |||
| fd629d43ba | |||
| 76b1cb0f5a | |||
| 2f94abc9f7 | |||
| c70040fe5d | |||
| 4b8a9e448a | |||
| 1e4c7d0f31 | |||
| ec75795a02 | |||
| ad26b64b28 | |||
| 9e4715ebbd | |||
| cc612296d0 | |||
| 1148b3948c | |||
| c7e605fd60 | |||
| 4ab32c670e | |||
| 2d810568a8 | |||
| b8353aa817 | |||
| 7924f63e28 | |||
| b3b617ea0b | |||
| 18a5071618 | |||
| fea58029b9 | |||
| e748723209 | |||
| 8a47d81936 | |||
| 7ae9f5694d | |||
| 9031379469 | |||
| dc71e6777f | |||
| 89eb798fa8 | |||
| 4304e068b9 | |||
| 126bc6de6a | |||
| c2b9107f13 | |||
| 1471f4a839 | |||
| b0b3c6671d | |||
| 6ddb8fb6c2 | |||
| 66da49b0df | |||
| 750cd26c36 | |||
| 4c15589663 | |||
| 62a0e89748 | |||
| b9603240d0 | |||
| 85d87bb45e | |||
| 3193308d8d | |||
| 7fe90c2a1a | |||
| e917b19f22 | |||
| 7d47d6a752 | |||
| 8fbb94d15a | |||
| 9fcadf8fbb | |||
| f5ac8ac5e9 | |||
| 0a0b8aafaf | |||
| 097a7eae7e | |||
| c0e43a0cf0 | |||
| d7926dd9d1 | |||
| da474741e6 | |||
| a1e16031e0 | |||
| a229093b60 | |||
| 1a64a1c34d | |||
| b8f49d2d45 | |||
| 990140c392 | |||
| 542b296018 | |||
| c6122d33b9 | |||
| 8c71066660 | |||
| a748164bf2 | |||
| c427fa8790 | |||
| 093cc07c39 | |||
| 30f14820c6 | |||
| c8ea2ab199 | |||
| d56bbacc0b | |||
| bb468a8b7e | |||
| 7e99f4b078 | |||
| 14ce6dd818 | |||
| 063a3e425d | |||
| 0900dc75ac | |||
| aa8bd1f8dc | |||
| c71f7ff8ad | |||
| fe18420913 | |||
| 97124928df | |||
| c108bfb12f | |||
| 5fe6ed1462 | |||
| df5fcce769 | |||
| 8f57ece7b8 | |||
| 8a10d201c5 | |||
| 9d7e63a7a7 | |||
| 87c1ae2ac0 | |||
| 56c922e715 | |||
| a29ac8e68f | |||
| 03f9c6039c | |||
| 73d81df8cb | |||
| 484f554339 | |||
| 2ad864e68e | |||
| 723ff44151 | |||
| 04e11cbbf7 | |||
| 3aef5998df | |||
| 34018ae7eb | |||
| 2f9d8e776f | |||
| 9503f0d963 | |||
| 32aff3e3f4 | |||
| 9b9f10d4ca | |||
| e4f0cc6b37 | |||
| d211249086 | |||
| 0fc5db8aee | |||
| 0a2abef979 | |||
| 8242f13aff | |||
| 7516ba7028 | |||
| 3417407cbe | |||
| 720d046c00 | |||
| b88f560b07 | |||
| 51b264ca13 | |||
| 0309aeab34 | |||
| aca8d2948d | |||
| 09596d2181 | |||
| e87f7e1674 | |||
| 4ad1cccc33 | |||
| 5d12648669 | |||
| 7e989720bf | |||
| f8a2892811 | |||
| eaab23ec19 | |||
| 36dcdf256f | |||
| 10a596db65 | |||
| c76302cf98 | |||
| 176cf608ef | |||
| f69073ba02 | |||
| 09ecf9262a | |||
| a3fc0d9120 | |||
| 0d5c3283d3 | |||
| 7b486348ef | |||
| 25f752d6b5 | |||
| 74e35a2d65 | |||
| 3532289575 | |||
| 7db9ba03f3 | |||
| b0baaf9ea6 | |||
| b7c6dab3ad | |||
| 2daa145867 | |||
| 4bd5fb22b4 | |||
| 78533a6045 | |||
| e1c533a15e | |||
| b6c2bb8023 | |||
| c45653a50a | |||
| d827513b73 | |||
| ad183ca621 | |||
| 1d11c5a186 | |||
| e84e78ec55 | |||
| f91e4316ff | |||
| d54b812881 | |||
| 28dc5ba2a4 | |||
| 979a320ca6 | |||
| c46186b237 | |||
| 27cf093f85 | |||
| ec0fb7e0b9 | |||
| 90029456fe | |||
| b167b00075 | |||
| b13fab76f3 | |||
| 782a9d310d | |||
| 537b1f2a29 | |||
| 2fad6b62cb | |||
| bf173b4ede | |||
| c52f038c76 | |||
| b12ba98a5c | |||
| dbccdf342b | |||
| 49b6d029c4 | |||
| d6469954ce | |||
| 5f40550ad4 | |||
| 79ccbdf100 | |||
| 1983cfcab2 | |||
| 753f86707f | |||
| 16d0ed505b | |||
| 9de09c55f8 | |||
| c3d7a33aa2 | |||
| a9cc00a478 | |||
| ec035ba648 | |||
| 5446f3cae4 | |||
| 6a550092c2 | |||
| 1b691f6bcd | |||
| 98f45cc4c2 | |||
| edc4a20859 | |||
| 74e1380df8 | |||
| dfa5187ff7 | |||
| c99c4425cd | |||
| 2d8919a079 | |||
| f638287213 | |||
| 991d885b63 | |||
| bb17efa817 | |||
| deec29c1b4 | |||
| 9d872008a7 | |||
| 145b4401af | |||
| 17bd50c263 | |||
| 4cb79de685 | |||
| 28ab0b8e46 | |||
| 6911802b87 | |||
| 5b98924561 | |||
| f13944badc | |||
| af41e6497d | |||
| b1122a3da5 | |||
| b17fddda63 | |||
| 20dc020596 | |||
| b53291650f | |||
| b83d84e519 | |||
| 14794d1a5f | |||
| 6b130ef045 | |||
| 25a6126ef4 | |||
| a2df09fb5b | |||
| 465b2741fb | |||
| 724dc5c86c | |||
| f4208c19a7 | |||
| 6fed293716 | |||
| 29ffaf04c4 | |||
| bc9182f214 | |||
| 91c70a51a0 | |||
| dfe30d7f5e | |||
| 815d5460e7 | |||
| 8a63c6768b | |||
| f7c29848f1 | |||
| 78b9426c1c | |||
| 87b22ac684 | |||
| 46c30d197a | |||
| 36b8354350 | |||
| b6702c7182 | |||
| 09d7f608cd | |||
| d023a27377 | |||
| 190595febf | |||
| b25edec26c | |||
| 85d0c12dad | |||
| 25c98ef078 | |||
| af51baea9a | |||
| e97b16606c | |||
| 5ff9e43899 | |||
| d3a49e109c | |||
| e3dbff6996 | |||
| d9f5410afd | |||
| 0568c8f563 | |||
| 16043a7d68 | |||
| f24ee61d11 | |||
| 881a6967ac | |||
| a93f66c6ac | |||
| fdf4b29ae2 | |||
| d5f6ca0d2e | |||
| 12d9ccf28c | |||
| ffc270cc6f | |||
| 61e2e58297 | |||
| b68ede1f63 | |||
| d333c1393c | |||
| 35d6f2f961 | |||
| 3d619a0c61 | |||
| bda812f170 | |||
| 826719bb67 | |||
| 631101eae5 | |||
| fa0b9bf935 | |||
| 708af5e83c | |||
| 993d31167b | |||
| ac5fc7d28a | |||
| 73f3fad13d | |||
| 85e0e2165f | |||
| 89ee103303 | |||
| 6b313947c3 | |||
| fba8e6ce35 | |||
| 622c024547 | |||
| 2c51d92bab | |||
| 11ef2ef708 | |||
| df793e07fd | |||
| bae6eea3aa | |||
| be17b67cc1 | |||
| 645a24d29b | |||
| 64962ce632 | |||
| 5120883691 | |||
| 0b4570ebee | |||
| 5bbdc7e426 | |||
| a1d60630a0 | |||
| e96fd6d69e | |||
| 1423b3fc35 | |||
| fd10b4d585 | |||
| 8a79437668 | |||
| 85a87dc40a | |||
| 95aa0a0024 | |||
| d0c44d1376 | |||
| b0e31ff305 | |||
| f11569ac53 | |||
| fbf7a61bc9 | |||
| 2265165fa3 | |||
| b216b17ef5 | |||
| b2c7b924ac | |||
| 1349f950c9 | |||
| f1c398a3a4 | |||
| 369231ff11 | |||
| 271dee5be6 | |||
| a0c8f40e7b | |||
| 4db0aef0ff | |||
| 5ed9bd243f | |||
| 2c53306f5a | |||
| a3624357dc | |||
| afe0be31f2 | |||
| 71854b704d | |||
| 0907773d6f | |||
| 787eedc8af | |||
| 040a2b5e5f | |||
| 347ee275fa | |||
| 1c0a9e6726 | |||
| c4f038ab9a | |||
| 3746ac5fc1 | |||
| 5c4353dd0c | |||
| f64caed220 | |||
| 863d590292 | |||
| 0dcf64c82b | |||
| 48fd5c5ff6 | |||
| 84fa374072 | |||
| 2313b0b450 | |||
| 4fa6f579af | |||
| 08c1328932 | |||
| 4586308210 | |||
| 5aa561dcb2 | |||
| e07612fe24 | |||
| c9289204c4 | |||
| 51bb1081a6 | |||
| 25066bb33c | |||
| bfdb176445 | |||
| 42233fa756 | |||
| 55de4319ed | |||
| 306f6edd4e | |||
| bf55bbccd9 | |||
| 6e26c0a0be | |||
| 11bcd318ab | |||
| 2f6d19dc91 | |||
| 989e1ce175 | |||
| 1c2fd46401 | |||
| b7967b34d1 | |||
| 44dfa37852 | |||
| a06e3c7e74 | |||
| b54c331bef | |||
| 8216fe5e36 | |||
| b5c9c4b188 | |||
| 86bd617933 | |||
| eb771e7932 | |||
| 5ea91aeafc | |||
| 3c67290aeb | |||
| f9f6c2f9be | |||
| a92e8f61bc | |||
| e739683bb6 | |||
| f4a743593d | |||
| f93e49ecf3 | |||
| d6325a42ea | |||
| ef997be219 | |||
| b6eadfcebc | |||
| e4c65ca631 | |||
| 2d2342f9ee | |||
| 60838a1b7e | |||
| 63401b7640 | |||
| 6a5b669ec4 | |||
| ca201447d2 | |||
| f1d3117518 | |||
| 8559948a5a | |||
| a3b4aa3b4a | |||
| 0347fa381f | |||
| 3d475cc779 | |||
| ceec74fb70 | |||
| f5296a947e | |||
| 5b5fcd9372 | |||
| c38817c62e | |||
| ba08c6a707 | |||
| 1797bc8181 | |||
| 657aaf75ec | |||
| dac3c733b3 | |||
| d02b6b67b5 | |||
| 52ce5f3a2f | |||
| 1d316e17cb | |||
| 6193f4b87a | |||
| de5a30e46c | |||
| 973acd22ca | |||
| e235293070 | |||
| 07ab67faa8 | |||
| e6fce8cbc7 | |||
| 589f8e62f4 | |||
| 27f45f7cf6 | |||
| 48af4ac79c | |||
| 9b6baab1e0 | |||
| 3ba4e712dc | |||
| 5bf3ecdf42 | |||
| bd6fd472a6 | |||
| 7f4776b52b | |||
| d20f03127a | |||
| 4b6c7774e0 | |||
| d02bca8879 | |||
| 5e654ccf94 | |||
| 7d3e5c22fb | |||
| 23eb61ee5f | |||
| 2cded4b2d1 | |||
| ba7662fc1e | |||
| 832a48ac76 | |||
| 2db0c125fe | |||
| 20d9624bc6 | |||
| f20ee68f50 | |||
| cbf45ce3eb | |||
| 2e7fdd93dd | |||
| 8ce38f82b5 | |||
| ec5429eeec | |||
| 4b17c4045d | |||
| aaf42e4693 | |||
| 0e3cbfc40b | |||
| a95ca05c10 | |||
| 56b600dbdc | |||
| 80a013d0a3 | |||
| 7ef59bb74c | |||
| 9cf1a9e25c | |||
| 0fce6c0cd4 | |||
| 2d444e9aa0 | |||
| 7c393b1125 | |||
| 78ab4dc94d | |||
| 6a5904cfaa | |||
| a6061ec2a9 | |||
| 51c777304b | |||
| fbd535f2c5 | |||
| 7d456671c2 | |||
| dd4924c925 | |||
| f73129cd7e | |||
| 4983c8741e | |||
| c5798640ff | |||
| 5803a8018a | |||
| e2aae8ac8a | |||
| 2917aeeb32 | |||
| 9377c03c3f | |||
| 9b926fbad6 | |||
| 8db19c3e2b | |||
| ca970781c7 | |||
| e7beee2788 | |||
| d266eada88 | |||
| 11b8b078b4 | |||
| 37912fa29a | |||
| b97dafe6f3 | |||
| 2a29151395 | |||
| 8b988d89c0 | |||
| c0908f1b58 | |||
| bb46044f7c | |||
| 60b3dd6138 | |||
| 22c1f936c3 | |||
| e899874b04 | |||
| 04c6888cf6 | |||
| 29c56c6919 | |||
| c98ed9cc85 | |||
| 88f7530c13 | |||
| bb820437af | |||
| d1a4bd38e0 | |||
| d18f6ccd32 | |||
| aa317c964e | |||
| 7ae8845ae9 | |||
| 123a6dbe0c | |||
| dda8d79526 | |||
| de5293955a | |||
| 96669bff5b | |||
| a99762f004 | |||
| 1fc3c9b83e | |||
| af86b6f664 | |||
| a0208dd5b3 | |||
| 1c5c8b81d5 | |||
| 79c3e33434 | |||
| 5ab8729a31 | |||
| db0baf92f1 | |||
| a8974094db | |||
| 13c5c97ba7 | |||
| 894ebb3edd | |||
| cac899a7e5 | |||
| 901e0dd93b | |||
| a360231fd0 | |||
| 6ccc6ee42f | |||
| 9c72ad85a0 | |||
| fa6d80a753 | |||
| f6ab2ca9ba | |||
| ba1e1ad5ad | |||
| 02705ea3ad | |||
| df6e3f06a6 | |||
| 1cb5ee9fd6 | |||
| 893d6176c3 | |||
| 2c1b512e40 | |||
| de50d76800 | |||
| 401b78e477 | |||
| 01837eaea9 | |||
| 7df699353c | |||
| 5455972be2 | |||
| 57488bcd16 | |||
| b6fda901ef | |||
| 14669df890 | |||
| 64525a65f2 | |||
| 61fc7efecb | |||
| 8c7c1e4745 | |||
| f64d30ec88 | |||
| 384dfc8da4 | |||
| 841784ae8c | |||
| f5683cfd94 | |||
| 0a420ce30e | |||
| a5e7132d3c | |||
| 6dfb2be4a2 | |||
| d81cbad550 | |||
| 51ad06b303 | |||
| 27048ad95c | |||
| fa9bf0b448 | |||
| 305190b64e | |||
| 98e3d18335 | |||
| 72e398956b | |||
| 1e69a13a97 | |||
| 7f9e6e2f44 | |||
| d3c6c0d48e | |||
| 6c83476fd2 | |||
| 9cdf7e2c51 | |||
| 599119e14e | |||
| a2c484e0f3 | |||
| 97ff4d5ac2 | |||
| 5255cfbb25 | |||
| 780358368b | |||
| cf0b918913 | |||
| 4ea690204e | |||
| 14eb775749 | |||
| bf4a3be6d9 | |||
| b9e1e47871 | |||
| ff532ecb22 | |||
| eb21872db1 | |||
| 8e3df184dc | |||
| b34bbcac8b | |||
| 226965a1d7 | |||
| 17b2ea126c | |||
| 59fc4a089c | |||
| ef26dc8cbb | |||
| 8a0fbb28b0 | |||
| 618d8d5b1a | |||
| 3a936dc9c1 | |||
| 031fcd75ee | |||
| c8cd23cb32 | |||
| a3049938a3 | |||
| b23488e862 | |||
| c8203cf04c | |||
| 4f2616ef0a | |||
| 04ffc69e00 | |||
| 5b4bb6e7a7 | |||
| 2e953ba998 | |||
| ed5a4eb960 | |||
| 31b2c05084 | |||
| 6e1662038c | |||
| df78d88f79 | |||
| addedb3091 | |||
| 2ea17b2dea | |||
| 85d2f42f47 | |||
| cdb655c1bd | |||
| 3064d03aa9 | |||
| 6af6417ca2 | |||
| a35271fbb3 | |||
| 63aef71f60 | |||
| 0f8457534c | |||
| 2984582e62 | |||
| 147d8fd9af | |||
| c12d354900 | |||
| 8bcb552783 | |||
| f504a8288c | |||
| 79f5b54228 | |||
| 669a9855e6 | |||
| e3b96c3a1f | |||
| 7e0d4bef20 | |||
| 0bd0f48df3 | |||
| ae56126585 | |||
| 6dcf0ac124 | |||
| 63e2ce43c2 | |||
| f27aa21eb5 | |||
| 42926c663b | |||
| d38116183c | |||
| 9ca373e208 | |||
| 4084f2f5ec | |||
| 684ffbadbc | |||
| 1c4d4c57de | |||
| d83111a199 | |||
| f10fa839fb | |||
| 1f20395ff3 | |||
| bfe6f4255a | |||
| b9032f3012 | |||
| ce53c459e6 | |||
| 6df42fb0d5 | |||
| 1e2b496f4f | |||
| 528c1b0d57 | |||
| 22fba8ba80 | |||
| 6f26261ebe | |||
| 4b1fe3ba91 | |||
| 9f95262bd4 | |||
| 2ec28e541e | |||
| 4764d4b19a | |||
| 9b27547dae | |||
| a96f2c9153 | |||
| 225e0aaf88 | |||
| f0c85910bc | |||
| 124c443528 | |||
| 37c7f8d39f | |||
| c419f1ce22 | |||
| 4949cdfe2f | |||
| cd101b96ea | |||
| 40d0e4631f | |||
| a55a995660 | |||
| 1d576d48ad | |||
| 4ff8030f87 | |||
| c15e2e2c8f | |||
| 41d31a8d75 | |||
| 10e2a26352 | |||
| 6e547f77d0 | |||
| 530a426601 | |||
| 642d6bab77 | |||
| 7980af3d82 | |||
| 2980c42e88 | |||
| b03994f9db | |||
| 41906ec2f9 | |||
| 4d1e7ff2a5 | |||
| 7f18fcfc13 | |||
| ff02ce0747 | |||
| a6056600eb | |||
| 24c94326d5 | |||
| 48c0cb5e62 | |||
| 9968efe1b2 | |||
| 6368342149 | |||
| b5f73db210 | |||
| 22d6a02d04 | |||
| 4e0bcfcccf | |||
| 104313c15d | |||
| 814289af46 | |||
| 3096cd98d5 | |||
| 45dfefbc7a | |||
| 20d92149a8 | |||
| 9c01fffca5 | |||
| 61c1cfff4b | |||
| 7e74261f62 | |||
| 32601f34f1 | |||
| aef69a1a96 | |||
| 130f90bdb6 | |||
| 851c7de87f | |||
| 118156c62d | |||
| cdad3143c9 | |||
| 00fe32136e | |||
| 52f56eeb68 | |||
| b595264e31 | |||
| bf04262170 | |||
| fd589922bb | |||
| fb7029f5c1 | |||
| cc4b4f9bf8 | |||
| b048d6d7e3 | |||
| cffc1f442f | |||
| 91fe710741 | |||
| 5a1eb9fdac | |||
| a64ef6e750 | |||
| 47d2012b3d | |||
| 2c99cd2e21 | |||
| 435cd2f66a | |||
| 372b12dfc2 | |||
| 3a12f5c1c4 | |||
| 781de224b6 | |||
| eff09454c3 | |||
| 473feba6a8 | |||
| e9f0704fb0 | |||
| 8c99469d88 | |||
| 8ec1311dfc | |||
| e48cca6b45 | |||
| d660721f95 | |||
| c52bb93d79 | |||
| ffb6bfd0c9 | |||
| 6e0855f9b3 | |||
| ec9e9ec387 | |||
| fa75aa40f0 | |||
| b865953c22 | |||
| 2542cf6f9a | |||
| cb9499b87f | |||
| c351f01f67 | |||
| c87561fca7 | |||
| a363c143fa | |||
| fb81d2b926 | |||
| 05b1b8f079 | |||
| 7848dc06d4 | |||
| 3a005719b7 | |||
| 6928988f78 | |||
| a521894d7c | |||
| b7fb1d9c08 | |||
| 5f67e45911 | |||
| fddf9fccbd | |||
| 2bedbd7bd2 | |||
| 02f3c85796 | |||
| 3b5bd6a47f | |||
| 06fd404d44 | |||
| d931c52508 | |||
| 800fe9e4c8 | |||
| 8b3d78678f | |||
| 2351cd3ad6 | |||
| dd86c5bcdf | |||
| d0c00e306e | |||
| 6cd68ddd6a | |||
| 02639cddb2 | |||
| 0f67aa4058 | |||
| 78c3403d5f | |||
| fc8f8c574d | |||
| 3972ee580d | |||
| b0a994d5be | |||
| 80df28a0c4 | |||
| 1c6c6a9296 | |||
| 7bb698e442 | |||
| 784728cd54 | |||
| 4b883b68de | |||
| dec2cc2aaf | |||
| b4e8971ad2 | |||
| 84e436265e | |||
| ac8a69f8d4 | |||
| b912e050ea | |||
| 284561d093 | |||
| efc355982c | |||
| 8907879a19 | |||
| 86f6057207 | |||
| 4c92698c73 | |||
| 8407c3b649 | |||
| ed8f82617d | |||
| 31d040d1b6 | |||
| 25a6796e63 | |||
| ff091918aa | |||
| 91b76edce1 | |||
| 5ae5c83bf5 | |||
| 9d90f276de | |||
| 245f091e22 | |||
| ae2f8f086b | |||
| 5e5eb7f937 | |||
| 748630e1f1 | |||
| 43064c8c55 | |||
| 4559a3047c | |||
| de8064ee5c | |||
| 48c8dba342 | |||
| 31a515b2f1 | |||
| 294f56e189 | |||
| 70596a0aac | |||
| 74bc79116b | |||
| e6bd50ae77 | |||
| 308662550f | |||
| d94a7e7157 | |||
| 630b264754 | |||
| 5f2be44b85 | |||
| f68ece68af | |||
| 70c829a2c9 | |||
| e3b6ac4874 | |||
| a762d5a22c | |||
| 3686a26019 | |||
| 80daec748d | |||
| 94359f1299 | |||
| 59dda1bb99 | |||
| 806a732cbc | |||
| 7816be7ba7 | |||
| 5f3bd5137f | |||
| 6c9fc5fb86 | |||
| f7e0b68643 | |||
| b283bbaca9 | |||
| 92ba759b1c | |||
| 0acc9d8d68 | |||
| daa7a9ff61 | |||
| 455f35e0c1 | |||
| 1fa655b56e | |||
| e553222b4b | |||
| f1b6f48926 | |||
| 14ab1cae69 | |||
| 5f9cf90b16 | |||
| 97b367d4ee | |||
| 47119fb346 | |||
| d77eb7f5f1 | |||
| 1b0a2bb34c | |||
| a363039fa1 | |||
| 32c740b58e | |||
| 822ee890af | |||
| b0406dd8aa | |||
| 8d152ddfcb | |||
| 1a16d2e4f4 | |||
| 1ca8531305 | |||
| 6190e7d092 | |||
| a6542dd638 | |||
| 840777a851 | |||
| 5c9dff38c9 | |||
| abfbacb8c2 | |||
| 03afdbf431 | |||
| 507d43b328 | |||
| be214c0599 | |||
| 91f36c3a3f | |||
| f60c15ed2e | |||
| 1ec072373d | |||
| a7d039082e | |||
| d5c06bfa58 | |||
| c8f3a0ce7b | |||
| edbedc181b | |||
| 94afa34780 | |||
| 74dd0ab6cd | |||
| 6c43a331d0 | |||
| 67835ba0c0 | |||
| fe1b2a0e07 | |||
| 2e82be47ed | |||
| 15dfd6dcba | |||
| dfd38943b0 | |||
| 500756d582 | |||
| f855f541d8 | |||
| 590ec6643d | |||
| b9efd35b50 | |||
| 3be1bfe58a | |||
| bfbd2de778 | |||
| 50f7ae338a | |||
| 280fdc89c1 | |||
| 0f94e2ad0c | |||
| d0036600e9 | |||
| f766fefbf0 | |||
| 2178ed2a31 | |||
| 79511aea5f | |||
| 19bb77273b | |||
| 7ca377f1b8 | |||
| 6f5e9b7b5a | |||
| f03a58079d | |||
| 8715fe1822 | |||
| e10cb9adaf | |||
| 3030832711 | |||
| 7c638ef28a | |||
| 447a4b5e04 | |||
| dd1ba6e302 | |||
| 08556b751f | |||
| 11d2190310 | |||
| 46519bb710 | |||
| 7b9290382d | |||
| 85e55cf0e4 | |||
| 7016854b7f | |||
| 01a4151763 | |||
| 311f758cd8 | |||
| 3bba36742a | |||
| ea52ba51ca | |||
| 7e404ae71a | |||
| 3ad95afa84 | |||
| 1a13861647 | |||
| 6d84c819c0 | |||
| 36ec39d2fb | |||
| eaafc12c8a | |||
| a03c5bceea | |||
| 53c51fd204 | |||
| 9b593f2a6b | |||
| 363609cb1b | |||
| 68e6d30093 | |||
| c53a40ef8d | |||
| 3c2ac05c60 | |||
| bffab433f6 | |||
| 200b6ce01f | |||
| 0d29dc1012 | |||
| b92c4ae650 | |||
| e15d1e52bd | |||
| ce3e259bde | |||
| 87361f90b1 | |||
| 81be06598c | |||
| 9492da6789 | |||
| fce47a0a37 | |||
| 92ba682198 | |||
| 8df0482eb4 | |||
| 37a5cb347d | |||
| 77e50655f6 | |||
| eacd2abc00 | |||
| 7393954ff6 | |||
| 68744379a6 | |||
| 90aef905af | |||
| c7cbc8966e | |||
| 89502bed63 | |||
| 4952b48db6 | |||
| 52a257abb1 | |||
| 7480fb089b | |||
| 0f65c051ab | |||
| 7b62c7a967 | |||
| 5c3db2cb29 | |||
| 7008cbd363 | |||
| cdb7fcf831 | |||
| 628aafdd42 | |||
| 9d3ef24ba9 | |||
| 4189f11fd7 | |||
| 5ea9941519 | |||
| 7a64494d07 | |||
| 4928685198 | |||
| 0103233d4a | |||
| ee7075fe60 | |||
| 49feadd32a | |||
| 45758bf554 | |||
| 535d566a94 | |||
| ff1d5db12c | |||
| 77a06b2fe7 | |||
| 6359030030 | |||
| 006f1fccec | |||
| c0f5817d47 | |||
| 3da952fa52 | |||
| f1834d58d2 | |||
| b0cde4ab75 | |||
| 197c9914ca | |||
| d7ef6898be | |||
| 2aa57f1f0d | |||
| dcc0e38707 | |||
| 037fb2398a | |||
| 182512d07c | |||
| a3be4b063d | |||
| a97be4c342 | |||
| 5902cbb621 | |||
| afc26d42ca | |||
| 51b12d05d4 | |||
| 3fe7b4ae24 | |||
| 2720a7c827 | |||
| 8d89b8ef12 | |||
| 5383e0cf52 | |||
| 7b05bf8991 | |||
| b4c5b5a84e | |||
| e115523acd | |||
| 35611fbc07 | |||
| 034aa38153 | |||
| 795728ab31 | |||
| 262d295121 | |||
| 4e5ac0a47b | |||
| 51b8cbdab2 | |||
| f315b1ac5c | |||
| 2feaa8d956 | |||
| 5329f2a2fb | |||
| 5d9d2d0c8d | |||
| 34e11fd5b0 | |||
| dc1f19ed04 | |||
| ff7c52a05e | |||
| d5684326b1 | |||
| 017c55d190 | |||
| 2504887e8d | |||
| 805e63379c | |||
| dcb20e6ea6 | |||
| 786b94380b | |||
| 460d6a8d0f | |||
| 0dbc929c8e | |||
| 0c5305acf6 | |||
| 34139efafb | |||
| eb53c3896f | |||
| 2af4c6fb55 | |||
| d66f784538 | |||
| f127241857 | |||
| 5b0d9dd394 | |||
| ee29d18484 | |||
| 2255f856f9 | |||
| f2415527f0 | |||
| 59eb70ce62 | |||
| 1d18725bc5 | |||
| d4af1d743e | |||
| 9d1a357b5b | |||
| 5160cc36dd | |||
| f05e1dbdf0 | |||
| 7b797f0cba | |||
| f823826044 | |||
| 9589403c9d | |||
| 2757b18e17 | |||
| 6e8481bb2f | |||
| 72760d942e | |||
| 88d4d211b8 | |||
| abfa373083 | |||
| 23b05caea2 | |||
| d3f4027c3c | |||
| f8433c106f | |||
| 39d7a09cdf | |||
| 771a555b4f | |||
| 4ea7309001 | |||
| 126e6a3c2f | |||
| 53be3a2f83 | |||
| 655409d078 | |||
| 43f68900ff | |||
| 01597a2518 | |||
| fd7a38ead1 | |||
| f777e1f168 | |||
| 23ced9427f | |||
| c9fd718af4 | |||
| 072c2770b1 | |||
| 54e4775ca3 | |||
| d4849cb4c2 | |||
| 38cd19281f | |||
| 1eaaa31c4e | |||
| 256f070700 | |||
| 400f3593b2 | |||
| 475a9559cf | |||
| cbf7d8c7a4 | |||
| 2d7cee9d14 | |||
| ef05946832 | |||
| 24a9078b22 | |||
| c5d19ad0b2 | |||
| f004653286 | |||
| 4850807ac1 | |||
| 526a21dde3 | |||
| 9a3ab6d1c1 | |||
| 6bde0ec7ab | |||
| 5b1d755670 | |||
| e58d2ec233 | |||
| 6742655a04 | |||
| 02b36a1c11 | |||
| 363c236d3e | |||
| c49634ae18 | |||
| 8fd06c4c8c | |||
| 935661ed35 | |||
| 6764250f6d | |||
| 403189c9e9 | |||
| b66d8f9d0d | |||
| 1c8a9f1dc9 | |||
| f1e63de661 | |||
| fd92866ba1 | |||
| 745c0b5f73 | |||
| b6f3954e24 | |||
| 4ef97ee058 | |||
| 6af8ff700e | |||
| 7c323a915c | |||
| 365d316878 | |||
| c40f1312ca | |||
| 528cd829fd | |||
| fd170f3bad | |||
| 17388d252b | |||
| d232e71683 | |||
| d11928dee7 | |||
| 0cacc8efa0 | |||
| 63b2436d81 | |||
| faacf92ba3 | |||
| f0f3dad082 | |||
| d2fcc761ad | |||
| 79c00b0e7a | |||
| 219b1baa41 | |||
| c0cb7f7a92 | |||
| 86379eb96d | |||
| f7762a97e3 | |||
| 86ae4a59a3 | |||
| 863e8555ae | |||
| 4e21edce6b | |||
| 5663841145 | |||
| 2f7ef497ab | |||
| ace63cfcc1 | |||
| d28c268e86 | |||
| 6f43726a3b | |||
| 4f6a2a83d3 | |||
| 937ce5a157 | |||
| 0c1a779ef0 | |||
| e01d1f44d0 | |||
| cea9021c16 | |||
| 3039f58b5a | |||
| e2326190d4 | |||
| 095d13f8bb | |||
| 1292d1d898 | |||
| 8bc92616d2 | |||
| ae45fafaee | |||
| f74227067b | |||
| 5f76d25ec3 | |||
| ba9d3bfe46 | |||
| 3dc6babfca | |||
| ace2b6936a | |||
| 712e874bfe | |||
| 266adda45b | |||
| f5ebe4a69e | |||
| 15d960d47b | |||
| f700b04b8f | |||
| 6f9683c41a | |||
| 0ad605c906 | |||
| db4c49c57b | |||
| b5c72dda8f | |||
| e06cc3ba80 | |||
| 8a72a1a559 | |||
| 3f61d3163e | |||
| 34b3c7ce16 | |||
| 0ce4185379 | |||
| 1f7989dbed | |||
| 0ea88ad202 | |||
| 2d41742c34 | |||
| 447d600dbe | |||
| 3f6db48f83 | |||
| 156ab65272 | |||
| a986ee1ccb | |||
| 868b7d149a | |||
| b1763b539e | |||
| d21517abe6 | |||
| 7ef6765d5b | |||
| 11492977c9 | |||
| 4c45f1d2e5 | |||
| 55702bfcfa | |||
| 1236a594b5 | |||
| 9cf746f6af | |||
| 44a9ade3fc | |||
| 7064bd4c4c | |||
| a02a26ebdc | |||
| b92af6cec6 | |||
| 3091177700 | |||
| be8838d338 | |||
| 84e8a5cc6e | |||
| d5db578bfd | |||
| 7429f5c8e9 | |||
| 8c6cf9651d | |||
| 8668fec33d | |||
| 76e34131fb | |||
| 3c40ee4b4a | |||
| 5abd7ae32c | |||
| 09b3f9a0d7 | |||
| 19455ba6a7 | |||
| 7d042689f0 | |||
| f43fbf1584 | |||
| 24c0cb8366 | |||
| 2236cc3828 | |||
| 039d44718a | |||
| f075cd8c4d | |||
| ea0f3e8999 | |||
| e7736bba25 | |||
| fdf8809e13 | |||
| 6a9d479f71 | |||
| 82c9637f37 | |||
| dfab849f48 | |||
| ad60b95537 | |||
| 8a98f746eb | |||
| 27cfd0ccf6 | |||
| 82bb85174d | |||
| 8ceef4acbf | |||
| b6118c17e1 | |||
| a7fb622e69 | |||
| 39337c1c4f | |||
| 1f970aaf69 | |||
| 0a5b7e13cd | |||
| 1ce2b9eb44 | |||
| 477f146725 | |||
| d7b02c4da9 | |||
| 40e673379b | |||
| 6ce9a4e834 | |||
| c5a07a888a | |||
| 55587f6207 | |||
| 0d6b45c795 | |||
| 95f64d9952 | |||
| 54da5def4b | |||
| d2fc1e057d | |||
| 0a90d98c71 | |||
| cc269e3b35 | |||
| b19093179b | |||
| e2cc0bc003 | |||
| 644c52ae36 | |||
| 2554273a3f | |||
| a8ee149d7a | |||
| dcf92d58f9 | |||
| 053092031c | |||
| c12e3eb3ec | |||
| 07def20f6b | |||
| 6c2cca66bd | |||
| 6efd336f34 | |||
| 81eb4be200 | |||
| 76cee6dbad | |||
| dcc35a5738 | |||
| 5628de6445 | |||
| 53bea47727 | |||
| d6cf8d400a | |||
| b58cc335f2 | |||
| 03d1bc611c | |||
| a48b09cefe | |||
| d3f36c05df | |||
| 488ade25ab | |||
| 413a276d20 | |||
| 65675a21d6 | |||
| d35de38289 | |||
| 83e1baa978 | |||
| 875edce5b1 | |||
| 1baa504728 | |||
| 965ae79414 | |||
| 7a8448c116 | |||
| d935157ee8 | |||
| 9313e6b568 | |||
| 8033177f48 | |||
| 11011fa15d | |||
| c2e9f3e72b | |||
| f0fb7fd1cd | |||
| 15e342fd51 | |||
| dfa7e06f87 | |||
| a9aef5521b | |||
| a628bdc44e | |||
| db6f966045 | |||
| 9b602ed405 | |||
| db15457ce4 | |||
| 719d8558a3 | |||
| c207c3fc84 | |||
| 4bde4758c3 | |||
| 5eb957c82a | |||
| 0b38617acf | |||
| 377d32c449 | |||
| cdfb0c2603 | |||
| d85152429c | |||
| 422e596fc7 | |||
| 89334c9022 | |||
| f5a0e88ab9 | |||
| a59ba08339 | |||
| 2641056c51 | |||
| 5d812befc4 | |||
| 1c592d6f96 | |||
| 531f13fe1f | |||
| 4757cc8dae | |||
| ecdfe9ecc0 | |||
| d19cb08e9c | |||
| f45320e5ed | |||
| 93ded34de9 | |||
| dd13e2eaf7 | |||
| 1405c6f260 | |||
| 0dab31f993 | |||
| d133c5aacd | |||
| 8070c70152 | |||
| c3ebb321cf | |||
| e54deb594a | |||
| 432d071ec8 | |||
| b9c06f1f5d | |||
| 52cc6462a6 | |||
| 35c2afef67 | |||
| 339c86fca0 | |||
| 0afd3de977 | |||
| e699569d46 | |||
| ced852d9db | |||
| a63612613e | |||
| c9ec7b492a | |||
| bf8ffc07ee | |||
| 73e1ea7f93 | |||
| 5979b99398 | |||
| 50ddb918cc | |||
| 6b19eb8876 | |||
| 47be0841fc | |||
| 99c7bb70fc | |||
| f139bb0036 | |||
| 23f592ca24 | |||
| fe4821d4f7 | |||
| c338d4fec5 | |||
| d7e6758089 | |||
| 0ad62636b9 | |||
| f872c7dfe9 | |||
| c5fdd59eb1 | |||
| 7132dc3ac0 | |||
| 956d5be959 | |||
| 936591d40b | |||
| 686e4f8ddf | |||
| b61825235e | |||
| 8157f324a0 | |||
| 132b617aaa | |||
| 25b1f3e9ea | |||
| f94c8fc26e | |||
| d149f46cf6 | |||
| 6a24ba5d56 | |||
| db8333a858 | |||
| 3af254d7c7 | |||
| 8151bb108a | |||
| 3b18769c2d | |||
| 2883cac6d4 | |||
| d7ae2f0625 | |||
| 318f6d0986 | |||
| 2ca430f40c | |||
| fd65060a8e | |||
| cb81f819ba | |||
| 61c7040e4b | |||
| fa10827443 | |||
| bcee779e74 | |||
| 34315c91d7 | |||
| 8d3bf6c4a5 | |||
| 0c176b70f8 | |||
| 87a5854357 | |||
| 9c2d51d718 | |||
| e618f046ea | |||
| a36cb925ff | |||
| 9e2aea2793 | |||
| ef1e2bb5ed | |||
| 6a457281ea | |||
| 41c512798d | |||
| ffa0f51305 | |||
| e0cec9e24a | |||
| f6b359a772 | |||
| 648eb89c7c | |||
| ba22e085b8 | |||
| 35373db1d3 | |||
| 932cfa7200 | |||
| 932ef933fc | |||
| 4f1293525c | |||
| dd6bec8a0c | |||
| 1abca64765 | |||
| dbe55d89ec | |||
| dcb3ad661c | |||
| 1e1f6cb4a3 | |||
| 83d96fd71d | |||
| 7dc4670028 | |||
| dc88e2413b | |||
| b7f7c3f164 | |||
| f7def38e20 | |||
| cf49e1ff74 | |||
| 38de2d6b30 | |||
| 4b3de264ef | |||
| 4bb785c7f0 | |||
| 2fb904d2cb | |||
| ee79347e27 | |||
| 3477c81d37 | |||
| 930789316c | |||
| 01a08eae58 | |||
| d73c9833ab | |||
| 1841597405 | |||
| 8003e5ce43 | |||
| d0023a6c92 | |||
| a9293f6ce1 | |||
| 58c5b586a9 | |||
| 21d224da22 | |||
| 43d957c8d3 | |||
| 917fad510a | |||
| 269eef7ef3 | |||
| b811f4527b | |||
| 67378e4535 | |||
| dad9033482 | |||
| 32c8333564 | |||
| 4d074e7f9a | |||
| c61b615da6 | |||
| fba6cfd62c | |||
| 1ba5ba5ff6 | |||
| 31b6988f17 | |||
| 16076382ba | |||
| 666c919b70 | |||
| dea5fd717d | |||
| 02a4b6f721 | |||
| 815a6c4e3b | |||
| ac26024990 | |||
| f67be9d3ba | |||
| bb85e3ef11 | |||
| edd254531d | |||
| 0f1ff97a60 | |||
| 24e439f017 | |||
| 0a01fd58eb | |||
| f25195b2c1 | |||
| 29674b02e6 | |||
| 572ea3febe | |||
| f8334cf9d2 | |||
| 0ffec66bea | |||
| becb386d10 | |||
| 0b9524eb26 | |||
| ff5cd0128a | |||
| b9225cd9b6 | |||
| 8f0ed3c5b3 | |||
| 12e3a768dd | |||
| a04ab5b0e8 | |||
| 845f08b060 | |||
| 31c849cc2d | |||
| 977757d346 | |||
| f2c549158d | |||
| a36764f1b0 | |||
| 033bc25d8f | |||
| 31bd253a73 | |||
| 2f4977be63 | |||
| 35f931a708 | |||
| 3e23d8d5d5 | |||
| 004de0a655 | |||
| 47a1af4be1 | |||
| 7b17c4caa8 | |||
| fa29885b3f | |||
| beece69f9e | |||
| 600ff1d62b | |||
| 094dc192a9 | |||
| 939bf30138 | |||
| d203ce188a | |||
| 268fed19f9 | |||
| 04bf414de4 | |||
| 28e1c65631 | |||
| e936ac4ce1 | |||
| 13201e7a9e | |||
| 9740b28764 | |||
| 1fa94efa02 | |||
| 44172e1a8e | |||
| 4ab0d24d24 | |||
| 049e66770a | |||
| bf12687f63 | |||
| 10389d9029 | |||
| 40996f9d48 | |||
| 3d284461f3 | |||
| 6642641c11 | |||
| 3e637a482e | |||
| 6374248132 | |||
| b9661d74ee | |||
| 0a5b956cb9 | |||
| be88fd941d | |||
| 48af9e7c1c | |||
| 71684350e9 | |||
| 9a1924b7c6 | |||
| fc20697d81 | |||
| e7dda207fa | |||
| 7fd97fa194 | |||
| ccbadfbd69 | |||
| e2f2d6c5d8 | |||
| 8b64e95845 | |||
| a7e528cdbb | |||
| e23291359f | |||
| 2cd557c000 | |||
| a42ff6523f | |||
| 62eaf3280d | |||
| f25fa4ba1c | |||
| 7d498d4b75 | |||
| ec0fb98b72 | |||
| 9689be445c | |||
| adba3ce0b5 | |||
| ee43cecaaf | |||
| 56fb33999e | |||
| a421630a2d | |||
| 7e95eea337 | |||
| eec76a7ec3 | |||
| 4184843e1d | |||
| 84bb0d6bec | |||
| 54f769c6db | |||
| b7eed64074 | |||
| 0134553cbb | |||
| f0b42c77c2 | |||
| 40b0f937bd | |||
| 48c2c5af65 | |||
| 4384ba2f47 | |||
| 11c2e08353 | |||
| dc55bd1fb9 | |||
| f7c04bc35f | |||
| ca801e321e | |||
| a3359e8c77 | |||
| ab0ad2b26a | |||
| 4900b21047 | |||
| 0ee852aa84 | |||
| 2de4362f8e | |||
| 400913aaac | |||
| f0d736cd1d | |||
| 54d1758eee | |||
| 36bb98e2af | |||
| c3015493fc | |||
| 24c036836e | |||
| 46be435e1a | |||
| c2847eff5e | |||
| d17b696fc5 | |||
| 11a047c3a6 | |||
| e3ed797983 | |||
| c5e41e65aa | |||
| 7e343d25e6 | |||
| a6a9ddbe46 | |||
| 8d501660a4 | |||
| bb877069d5 | |||
| 48d65cebf9 | |||
| 9e7e8df387 | |||
| 8a44970965 | |||
| e551541d57 | |||
| a091e8d2bf | |||
| 4d1e8b48e6 | |||
| 13307cf7bd | |||
| 03548d17ff | |||
| c3de4fcbab | |||
| 82495fa724 | |||
| 741262d031 | |||
| 5a60961470 | |||
| 3462b60e47 | |||
| 239d4ce4ec | |||
| fc5cea11b5 | |||
| c54d721694 | |||
| 88d16d5392 | |||
| f1b22415c3 | |||
| b4fae4b800 | |||
| b172177142 | |||
| 3fc11c5381 | |||
| 13cf896fe2 | |||
| 84ff915a56 | |||
| 74aedbccfe | |||
| 6e49298aea | |||
| c1ba290e41 | |||
| 60e8974580 | |||
| 033eeda50a | |||
| e7e34f3e16 | |||
| 7e1fcebdd8 | |||
| fd4ee2123d | |||
| 62caa840ef | |||
| 565e890973 | |||
| 84c4642ced | |||
| 699164eba5 | |||
| d86928f1b4 | |||
| 06fc077f1b | |||
| 97ba31f345 | |||
| a8795defc1 | |||
| 1b35cf7a39 | |||
| ed62ed516f | |||
| b4f1c6f7f8 | |||
| 14e4ca70b4 | |||
| 12fa94539b | |||
| e40a2459c0 | |||
| cffa6dc494 | |||
| d818799418 | |||
| 808d18e7cd |
@@ -0,0 +1,13 @@
|
|||||||
|
dist
|
||||||
|
coverage
|
||||||
|
|
||||||
|
.yarn/*
|
||||||
|
!.yarn/cache
|
||||||
|
!.yarn/patches
|
||||||
|
!.yarn/plugins
|
||||||
|
!.yarn/releases
|
||||||
|
!.yarn/unplugged
|
||||||
|
!.yarn/sdks
|
||||||
|
!.yarn/versions
|
||||||
|
|
||||||
|
data/*
|
||||||
+20
@@ -1,6 +1,26 @@
|
|||||||
|
######
|
||||||
|
# DB #
|
||||||
|
######
|
||||||
|
|
||||||
|
DB_HOST=db
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_USERNAME=std_notes_user
|
DB_USERNAME=std_notes_user
|
||||||
DB_PASSWORD=changeme123
|
DB_PASSWORD=changeme123
|
||||||
DB_DATABASE=standard_notes_db
|
DB_DATABASE=standard_notes_db
|
||||||
|
DB_TYPE=mysql
|
||||||
|
|
||||||
|
#########
|
||||||
|
# CACHE #
|
||||||
|
#########
|
||||||
|
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
|
REDIS_HOST=cache
|
||||||
|
CACHE_TYPE=redis
|
||||||
|
|
||||||
|
########
|
||||||
|
# KEYS #
|
||||||
|
########
|
||||||
|
|
||||||
|
AUTH_JWT_SECRET=
|
||||||
|
AUTH_SERVER_ENCRYPTION_SERVER_KEY=
|
||||||
|
VALET_TOKEN_SECRET=
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"root": true,
|
"root": true,
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"project": "./tsconfig.json"
|
"project": "./tsconfig.json"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
PUBLIC_FILES_SERVER_URL=http://localhost:3125
|
||||||
|
DB_HOST=db
|
||||||
|
DB_USERNAME=std_notes_user
|
||||||
|
DB_PASSWORD=changeme123
|
||||||
|
DB_DATABASE=standard_notes_db
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_SQLITE_DATABASE_PATH=standard_notes_db
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_HOST=cache
|
||||||
|
AUTH_SERVER_ACCESS_TOKEN_AGE=4
|
||||||
|
AUTH_SERVER_REFRESH_TOKEN_AGE=10
|
||||||
|
AUTH_SERVER_EPHEMERAL_SESSION_AGE=300
|
||||||
|
SYNCING_SERVER_REVISIONS_FREQUENCY=5
|
||||||
|
AUTH_SERVER_LOG_LEVEL=debug
|
||||||
|
SYNCING_SERVER_LOG_LEVEL=debug
|
||||||
|
FILES_SERVER_LOG_LEVEL=debug
|
||||||
|
REVISIONS_SERVER_LOG_LEVEL=debug
|
||||||
|
API_GATEWAY_LOG_LEVEL=debug
|
||||||
|
|
||||||
|
MYSQL_DATABASE=standard_notes_db
|
||||||
|
MYSQL_USER=std_notes_user
|
||||||
|
MYSQL_PASSWORD=changeme123
|
||||||
|
MYSQL_ROOT_PASSWORD=changeme123
|
||||||
|
|
||||||
|
AUTH_JWT_SECRET=f95259c5e441f5a4646d76422cfb3df4c4488842901aa50b6c51b8be2e0040e9
|
||||||
|
AUTH_SERVER_ENCRYPTION_SERVER_KEY=1087415dfde3093797f9a7ca93a49e7d7aa1861735eb0d32aae9c303b8c3d060
|
||||||
|
VALET_TOKEN_SECRET=4b886819ebe1e908077c6cae96311b48a8416bd60cc91c03060e15bdf6b30d1f
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/analytics"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/api-gateway"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/auth"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/common"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/domain-events"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/domain-events-infra"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/event-store"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/files"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/predicates"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/revisions"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/scheduler"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/security"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/settings"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/sncrypto-node"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/syncing-server"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/time"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/websockets"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
name: Analytics Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: analytics
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/analytics*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: analytics
|
||||||
|
workspace_name: "@standardnotes/analytics"
|
||||||
|
deploy_web: false
|
||||||
|
package_path: packages/analytics
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_ANALYTICS_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
name: Api Gateway
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: api_gateway
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/api-gateway*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn lint:api-gateway
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:api-gateway
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: Login to Amazon ECR
|
|
||||||
id: login-ecr
|
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
|
||||||
- name: Build, tag, and push image to Amazon ECR
|
|
||||||
id: build-image
|
|
||||||
env:
|
|
||||||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
|
|
||||||
ECR_REPOSITORY: api-gateway
|
|
||||||
IMAGE_TAG: ${{ github.sha }}
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/api-gateway -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:api-gateway
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Build, tag, and push image to Docker Hub
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/api-gateway -t standardnotes/api-gateway:${{ github.sha }}
|
|
||||||
docker push standardnotes/api-gateway:${{ github.sha }}
|
|
||||||
docker tag standardnotes/api-gateway:${{ github.sha }} standardnotes/api-gateway:latest
|
|
||||||
docker push standardnotes/api-gateway:latest
|
|
||||||
|
|
||||||
deploy-web:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition api-gateway-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="api-gateway-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: api-gateway-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/api-gateway:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: api-gateway-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition api-gateway-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="api-gateway-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: api-gateway-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/api-gateway:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: api-gateway-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: deploy-web
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_API_GATEWAY_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
name: Api Gateway
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: api_gateway
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/api-gateway*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: api-gateway
|
||||||
|
workspace_name: "@standardnotes/api-gateway"
|
||||||
|
deploy_worker: false
|
||||||
|
package_path: packages/api-gateway
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_API_GATEWAY_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
name: Auth Server
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: auth
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/auth-server*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn lint:auth
|
|
||||||
- run: yarn test:auth
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:auth
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: Login to Amazon ECR
|
|
||||||
id: login-ecr
|
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
|
||||||
- name: Build, tag, and push image to Amazon ECR
|
|
||||||
id: build-image
|
|
||||||
env:
|
|
||||||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
|
|
||||||
ECR_REPOSITORY: auth
|
|
||||||
IMAGE_TAG: ${{ github.sha }}
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/auth-server -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:auth
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Build, tag, and push image to Docker Hub
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/auth-server -t standardnotes/auth:${{ github.sha }}
|
|
||||||
docker push standardnotes/auth:${{ github.sha }}
|
|
||||||
docker tag standardnotes/auth:${{ github.sha }} standardnotes/auth:latest
|
|
||||||
docker push standardnotes/auth:latest
|
|
||||||
|
|
||||||
deploy-web:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition auth-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="auth-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: auth-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/auth:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: auth-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition auth-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="auth-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: auth-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/auth:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: auth-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition auth-worker-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="auth-worker-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: auth-worker-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/auth:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: auth-worker-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition auth-worker-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="auth-worker-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: auth-worker-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/auth:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: auth-worker-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: [ deploy-web, deploy-worker ]
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Auth Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: auth
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/auth-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: auth
|
||||||
|
workspace_name: "@standardnotes/auth-server"
|
||||||
|
package_path: packages/auth
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
name: Reusable Server Application Deployment Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
service_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
docker_image:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
AWS_ECR_REGISTRY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Configure AWS credentials
|
||||||
|
uses: aws-actions/configure-aws-credentials@v1
|
||||||
|
with:
|
||||||
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws-region: us-east-1
|
||||||
|
|
||||||
|
- name: Download task definition
|
||||||
|
run: |
|
||||||
|
aws ecs describe-task-definition --task-definition ${{ inputs.service_name }}-prod --query taskDefinition > task-definition.json
|
||||||
|
|
||||||
|
- name: Fill in the new version in the Amazon ECS task definition
|
||||||
|
run: |
|
||||||
|
jq '(.containerDefinitions[] | select(.name=="${{ inputs.service_name }}-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
||||||
|
|
||||||
|
- name: Fill in the new image ID in the Amazon ECS task definition
|
||||||
|
id: task-def-prod
|
||||||
|
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
||||||
|
with:
|
||||||
|
task-definition: task-definition.json
|
||||||
|
container-name: ${{ inputs.service_name }}-prod
|
||||||
|
image: ${{ secrets.AWS_ECR_REGISTRY }}/${{ inputs.docker_image }}
|
||||||
|
|
||||||
|
- name: Deploy Amazon ECS task definition
|
||||||
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
||||||
|
with:
|
||||||
|
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
||||||
|
service: ${{ inputs.service_name }}
|
||||||
|
cluster: prod
|
||||||
|
wait-for-service-stability: true
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
name: Reusable Publish Docker Image Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
service_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
package_path:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workspace_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
required: true
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
required: true
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
|
||||||
|
- name: Create Bundle Dir
|
||||||
|
id: bundle-dir
|
||||||
|
run: echo "temp_dir=$(mktemp -d -t ${{ inputs.service_name }}-${{ github.sha }}-XXXXXXX)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
${{ steps.bundle-dir.outputs.temp_dir }}
|
||||||
|
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build ${{ inputs.package_path }}
|
||||||
|
|
||||||
|
- name: Bundle
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ steps.bundle-dir.outputs.temp_dir }}
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Configure AWS credentials
|
||||||
|
uses: aws-actions/configure-aws-credentials@v1
|
||||||
|
with:
|
||||||
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws-region: us-east-1
|
||||||
|
|
||||||
|
- name: Login to Amazon ECR
|
||||||
|
id: login-ecr
|
||||||
|
uses: aws-actions/amazon-ecr-login@v1
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@master
|
||||||
|
with:
|
||||||
|
platforms: all
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@master
|
||||||
|
|
||||||
|
- name: Publish Docker image
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
|
context: ${{ steps.bundle-dir.outputs.temp_dir }}
|
||||||
|
file: ${{ steps.bundle-dir.outputs.temp_dir }}/${{ inputs.package_path }}/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
standardnotes/${{ inputs.service_name }}:latest
|
||||||
|
standardnotes/${{ inputs.service_name }}:${{ github.sha }}
|
||||||
|
${{ steps.login-ecr.outputs.registry }}/${{ inputs.service_name }}:${{ github.sha }}
|
||||||
|
${{ steps.login-ecr.outputs.registry }}/${{ inputs.service_name }}:latest
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
name: Reusable Run E2E Test Suite Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
secrets:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
required: true
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
required: true
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
name: (Docker) E2E Test Suite
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
snjs:
|
||||||
|
image: standardnotes/snjs:${{ inputs.snjs_image_tag }}
|
||||||
|
ports:
|
||||||
|
- 9001:9001
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Run Server
|
||||||
|
run: docker compose -f docker-compose.ci.yml up -d
|
||||||
|
env:
|
||||||
|
DB_TYPE: mysql
|
||||||
|
CACHE_TYPE: redis
|
||||||
|
|
||||||
|
- name: Wait for server to start
|
||||||
|
run: docker/is-available.sh http://localhost:3123 $(pwd)/logs
|
||||||
|
|
||||||
|
- name: Run E2E Test Suite
|
||||||
|
run: yarn dlx mocha-headless-chrome --timeout 1200000 -f http://localhost:9001/mocha/test.html
|
||||||
|
|
||||||
|
e2e-home-server:
|
||||||
|
name: (Home Server) E2E Test Suite
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
db_type: [mysql, sqlite]
|
||||||
|
cache_type: [redis, memory]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
snjs:
|
||||||
|
image: standardnotes/snjs:${{ inputs.snjs_image_tag }}
|
||||||
|
ports:
|
||||||
|
- 9001:9001
|
||||||
|
cache:
|
||||||
|
image: redis
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
db:
|
||||||
|
image: mysql
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
env:
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
MYSQL_DATABASE: standardnotes
|
||||||
|
MYSQL_USER: standardnotes
|
||||||
|
MYSQL_PASSWORD: standardnotes
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Copy dotenv file
|
||||||
|
run: cp packages/home-server/.env.sample packages/home-server/.env
|
||||||
|
|
||||||
|
- name: Fill in env variables
|
||||||
|
run: |
|
||||||
|
sed -i "s/JWT_SECRET=/JWT_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/AUTH_JWT_SECRET=/AUTH_JWT_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/ENCRYPTION_SERVER_KEY=/ENCRYPTION_SERVER_KEY=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/PSEUDO_KEY_PARAMS_KEY=/PSEUDO_KEY_PARAMS_KEY=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/VALET_TOKEN_SECRET=/VALET_TOKEN_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
echo "ACCESS_TOKEN_AGE=4" >> packages/home-server/.env
|
||||||
|
echo "REFRESH_TOKEN_AGE=7" >> packages/home-server/.env
|
||||||
|
echo "REVISIONS_FREQUENCY=5" >> packages/home-server/.env
|
||||||
|
echo "DB_HOST=db" >> packages/home-server/.env
|
||||||
|
echo "DB_PORT=3306" >> packages/home-server/.env
|
||||||
|
echo "DB_USERNAME=standardnotes" >> packages/home-server/.env
|
||||||
|
echo "DB_PASSWORD=standardnotes" >> packages/home-server/.env
|
||||||
|
echo "DB_TYPE=${{ matrix.db_type }}" >> packages/home-server/.env
|
||||||
|
echo "REDIS_URL=redis://cache" >> packages/home-server/.env
|
||||||
|
echo "CACHE_TYPE=${{ matrix.cache_type }}" >> packages/home-server/.env
|
||||||
|
|
||||||
|
- name: Run Server
|
||||||
|
run: nohup yarn workspace @standardnotes/home-server start &
|
||||||
|
env:
|
||||||
|
PORT: 3123
|
||||||
|
|
||||||
|
- name: Wait for server to start
|
||||||
|
run: for i in {1..30}; do curl -s http://localhost:3123/healthcheck && break || sleep 1; done
|
||||||
|
|
||||||
|
- name: Run E2E Test Suite
|
||||||
|
run: yarn dlx mocha-headless-chrome --timeout 1200000 -f http://localhost:9001/mocha/test.html?skip_paid_features=true
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
name: Reusable Publish Docker Self Hosting Image Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
required: true
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
required: true
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@master
|
||||||
|
with:
|
||||||
|
platforms: all
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@master
|
||||||
|
|
||||||
|
- name: Publish Docker image
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
standardnotes/server:latest
|
||||||
|
standardnotes/server:${{ github.sha }}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
name: Reusable Server Application Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
service_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workspace_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
deploy_web:
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
deploy_worker:
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
package_path:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
required: true
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
required: true
|
||||||
|
CI_PAT_TOKEN:
|
||||||
|
required: true
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
name: Publish Docker Image
|
||||||
|
uses: standardnotes/server/.github/workflows/common-docker-image.yml@main
|
||||||
|
with:
|
||||||
|
service_name: ${{ inputs.service_name }}
|
||||||
|
package_path: ${{ inputs.package_path }}
|
||||||
|
workspace_name: ${{ inputs.workspace_name }}
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
deploy-web:
|
||||||
|
if: ${{ inputs.deploy_web }}
|
||||||
|
|
||||||
|
needs: publish
|
||||||
|
|
||||||
|
name: Deploy Web
|
||||||
|
uses: standardnotes/server/.github/workflows/common-deploy.yml@main
|
||||||
|
with:
|
||||||
|
service_name: ${{ inputs.service_name }}
|
||||||
|
docker_image: ${{ inputs.service_name }}:${{ github.sha }}
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
deploy-worker:
|
||||||
|
if: ${{ inputs.deploy_worker }}
|
||||||
|
|
||||||
|
needs: publish
|
||||||
|
|
||||||
|
name: Deploy Worker
|
||||||
|
uses: standardnotes/server/.github/workflows/common-deploy.yml@main
|
||||||
|
with:
|
||||||
|
service_name: ${{ inputs.service_name }}-worker
|
||||||
|
docker_image: ${{ inputs.service_name }}:${{ github.sha }}
|
||||||
|
secrets: inherit
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
name: E2E Test Suite On Self Hosted Server
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 */12 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
name: E2E
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: ${{ inputs.snjs_image_tag || 'latest' }}
|
||||||
|
secrets: inherit
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
name: Files Server
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: files
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/files-server*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn lint:files
|
|
||||||
- run: yarn test:files
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:files
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: Login to Amazon ECR
|
|
||||||
id: login-ecr
|
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
|
||||||
- name: Build, tag, and push image to Amazon ECR
|
|
||||||
id: build-image
|
|
||||||
env:
|
|
||||||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
|
|
||||||
ECR_REPOSITORY: files
|
|
||||||
IMAGE_TAG: ${{ github.sha }}
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/files-server -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:files
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Build, tag, and push image to Docker Hub
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/files-server -t standardnotes/files:${{ github.sha }}
|
|
||||||
docker push standardnotes/files:${{ github.sha }}
|
|
||||||
docker tag standardnotes/files:${{ github.sha }} standardnotes/files:latest
|
|
||||||
docker push standardnotes/files:latest
|
|
||||||
|
|
||||||
deploy-web:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition files-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="files-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: files-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/files:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: files-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition files-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="files-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: files-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/files:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: files-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition files-worker-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="files-worker-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: files-worker-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/files:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: files-worker-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition files-worker-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="files-worker-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: files-worker-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/files:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: files-worker-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: [ deploy-web, deploy-worker ]
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Files Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: files
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/files-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: files
|
||||||
|
workspace_name: "@standardnotes/files-server"
|
||||||
|
package_path: packages/files
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
+93
-11
@@ -6,16 +6,98 @@ on:
|
|||||||
- main
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- uses: actions/checkout@v3
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Install dependencies
|
- name: Cache build
|
||||||
run: yarn install --immutable
|
id: cache-build
|
||||||
- name: ESLint
|
uses: actions/cache@v3
|
||||||
run: yarn lint
|
with:
|
||||||
- name: Build
|
path: |
|
||||||
run: yarn build
|
packages/**/dist
|
||||||
- name: Test
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
run: yarn test
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: yarn lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
name: E2E
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
secrets: inherit
|
||||||
|
|||||||
@@ -5,9 +5,113 @@ on:
|
|||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bump:
|
build:
|
||||||
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: yarn lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
needs: build
|
||||||
|
name: E2E
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish-self-hosting:
|
||||||
|
needs: [ test, lint, e2e ]
|
||||||
|
name: Publish Self Hosting Docker Image
|
||||||
|
uses: standardnotes/server/.github/workflows/common-self-hosting.yml@main
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish-services:
|
||||||
|
needs: [ test, lint, e2e ]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@@ -15,6 +119,14 @@ jobs:
|
|||||||
token: ${{ secrets.CI_PAT_TOKEN }}
|
token: ${{ secrets.CI_PAT_TOKEN }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
- name: Setup git config
|
- name: Setup git config
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "standardci"
|
git config --global user.name "standardci"
|
||||||
@@ -34,10 +146,11 @@ jobs:
|
|||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
- name: Install locally
|
- name: Install
|
||||||
run: yarn install --immutable
|
run: yarn install --immutable
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
run: yarn build
|
run: yarn build
|
||||||
|
|
||||||
- name: Bump version
|
- name: Bump version
|
||||||
@@ -47,4 +160,3 @@ jobs:
|
|||||||
run: yarn publish
|
run: yarn publish
|
||||||
env:
|
env:
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.CI_NPM_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.CI_NPM_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Revisions Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: revisions_server
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/revisions-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: revisions
|
||||||
|
workspace_name: "@standardnotes/revisions-server"
|
||||||
|
package_path: packages/revisions
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_REVISIONS_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_REVISIONS_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
name: Scheduler Server
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: scheduler
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/scheduler-server*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn lint:scheduler
|
|
||||||
- run: yarn test:scheduler
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:scheduler
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: Login to Amazon ECR
|
|
||||||
id: login-ecr
|
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
|
||||||
- name: Build, tag, and push image to Amazon ECR
|
|
||||||
id: build-image
|
|
||||||
env:
|
|
||||||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
|
|
||||||
ECR_REPOSITORY: scheduler-worker
|
|
||||||
IMAGE_TAG: ${{ github.sha }}
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/scheduler-server -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:scheduler
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Build, tag, and push image to Docker Hub
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/scheduler-server -t standardnotes/scheduler:${{ github.sha }}
|
|
||||||
docker push standardnotes/scheduler:${{ github.sha }}
|
|
||||||
docker tag standardnotes/scheduler:${{ github.sha }} standardnotes/scheduler:latest
|
|
||||||
docker push standardnotes/scheduler:latest
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition scheduler-worker-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="scheduler-worker-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: scheduler-worker-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/scheduler-worker:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: scheduler-worker-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition scheduler-worker-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="scheduler-worker-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: scheduler-worker-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/scheduler-worker:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: scheduler-worker-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: [ deploy-worker ]
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SCHEDULER_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
name: Scheduler Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: scheduler
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/scheduler-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: scheduler
|
||||||
|
workspace_name: "@standardnotes/scheduler-server"
|
||||||
|
deploy_web: false
|
||||||
|
package_path: packages/scheduler
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SCHEDULER_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
name: Update SNJS Packages
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
repository_dispatch:
|
|
||||||
types: [snjs-updated-event]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
SNJSUpdateEvent:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
ref: main
|
|
||||||
token: ${{ secrets.CI_PAT_TOKEN }}
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
- name: Setup git config
|
|
||||||
run: |
|
|
||||||
git config --global user.name "standardci"
|
|
||||||
git config --global user.email "ci@standardnotes.com"
|
|
||||||
- name: Import GPG key
|
|
||||||
uses: crazy-max/ghaction-import-gpg@v4
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
|
||||||
passphrase: ${{ secrets.PASSPHRASE }}
|
|
||||||
git_user_signingkey: true
|
|
||||||
git_commit_gpgsign: true
|
|
||||||
|
|
||||||
- run: yarn install
|
|
||||||
- run: |
|
|
||||||
yarn upgrade:snjs
|
|
||||||
yarn install --no-immutable
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@v4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CI_PAT_TOKEN }}
|
|
||||||
title: "${{ 'chore(deps): upgrade snjs' }}"
|
|
||||||
body: Updates all packages prefixed with "@standardnotes/"
|
|
||||||
commit-message: "${{ 'chore(deps): upgrade snjs' }}"
|
|
||||||
delete-branch: true
|
|
||||||
committer: standardci <ci@standardnotes.com>
|
|
||||||
author: standardci <ci@standardnotes.com>
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
name: Syncing Server
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: syncing_server
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/syncing-server*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn install --immutable
|
|
||||||
- run: yarn lint:syncing-server
|
|
||||||
- run: yarn test:syncing-server
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:syncing-server
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: Login to Amazon ECR
|
|
||||||
id: login-ecr
|
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
|
||||||
- name: Build, tag, and push image to Amazon ECR
|
|
||||||
id: build-image
|
|
||||||
env:
|
|
||||||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
|
|
||||||
ECR_REPOSITORY: syncing-server-js
|
|
||||||
IMAGE_TAG: ${{ github.sha }}
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/syncing-server -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
|
|
||||||
docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Build locally
|
|
||||||
run: yarn build:syncing-server
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Build, tag, and push image to Docker Hub
|
|
||||||
run: |
|
|
||||||
yarn docker build @standardnotes/syncing-server -t standardnotes/syncing-server-js:${{ github.sha }}
|
|
||||||
docker push standardnotes/syncing-server-js:${{ github.sha }}
|
|
||||||
docker tag standardnotes/syncing-server-js:${{ github.sha }} standardnotes/syncing-server-js:latest
|
|
||||||
docker push standardnotes/syncing-server-js:latest
|
|
||||||
|
|
||||||
deploy-web:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition syncing-server-js-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="syncing-server-js-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: syncing-server-js-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/syncing-server-js:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: syncing-server-js-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition syncing-server-js-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="syncing-server-js-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: syncing-server-js-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/syncing-server-js:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: syncing-server-js-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Configure AWS credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
- name: DEV - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition syncing-server-js-worker-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: DEV - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="syncing-server-js-worker-dev") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: DEV - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-dev
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: syncing-server-js-worker-dev
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/syncing-server-js:${{ github.sha }}
|
|
||||||
- name: DEV - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-dev.outputs.task-definition }}
|
|
||||||
service: syncing-server-js-worker-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
- name: PROD - Download task definition
|
|
||||||
run: |
|
|
||||||
aws ecs describe-task-definition --task-definition syncing-server-js-worker-prod --query taskDefinition > task-definition.json
|
|
||||||
- name: PROD - Fill in the new version in the Amazon ECS task definition
|
|
||||||
run: |
|
|
||||||
jq '(.containerDefinitions[] | select(.name=="syncing-server-js-worker-prod") | .environment[] | select(.name=="VERSION")).value = "${{ github.sha }}"' task-definition.json > tmp.json && mv tmp.json task-definition.json
|
|
||||||
- name: PROD - Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def-prod
|
|
||||||
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: task-definition.json
|
|
||||||
container-name: syncing-server-js-worker-prod
|
|
||||||
image: ${{ secrets.AWS_ECR_REGISTRY }}/syncing-server-js:${{ github.sha }}
|
|
||||||
- name: PROD - Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
|
||||||
service: syncing-server-js-worker-prod
|
|
||||||
cluster: prod
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: [ deploy-web, deploy-worker ]
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Syncing Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: syncing_server
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/syncing-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: syncing-server-js
|
||||||
|
workspace_name: "@standardnotes/syncing-server"
|
||||||
|
package_path: packages/syncing-server
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: Websockets Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: websockets
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/websockets-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: websockets
|
||||||
|
workspace_name: "@standardnotes/websockets-server"
|
||||||
|
package_path: packages/websockets
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
newrelic:
|
||||||
|
needs: call_server_application_workflow
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create New Relic deployment marker for Web
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WEBSOCKETS_WEB_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
|
- name: Create New Relic deployment marker for Worker
|
||||||
|
uses: newrelic/deployment-marker-action@v1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
||||||
|
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
||||||
|
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WEBSOCKETS_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
+7
-2
@@ -1,7 +1,6 @@
|
|||||||
.eslintcache
|
.eslintcache
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.idea
|
.idea
|
||||||
node_modules
|
|
||||||
dist
|
dist
|
||||||
coverage
|
coverage
|
||||||
.env
|
.env
|
||||||
@@ -12,7 +11,6 @@ newrelic_agent.log
|
|||||||
!.yarn/patches
|
!.yarn/patches
|
||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
!.yarn/unplugged
|
|
||||||
!.yarn/sdks
|
!.yarn/sdks
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
@@ -21,3 +19,10 @@ packages/files/uploads/*
|
|||||||
|
|
||||||
data/*
|
data/*
|
||||||
!data/.gitkeep
|
!data/.gitkeep
|
||||||
|
|
||||||
|
packages/**/data/*
|
||||||
|
|
||||||
|
logs/*
|
||||||
|
!logs/.gitkeep
|
||||||
|
|
||||||
|
docker-compose.yml
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Generated
+1866
-62
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"printWidth": 120,
|
||||||
|
"semi": false
|
||||||
|
}
|
||||||
Vendored
+2
-1
@@ -6,5 +6,6 @@
|
|||||||
"eslint.nodePath": ".yarn/sdks",
|
"eslint.nodePath": ".yarn/sdks",
|
||||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
||||||
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
||||||
"typescript.enablePromptUseWorkspaceTsdk": true
|
"typescript.enablePromptUseWorkspaceTsdk": true,
|
||||||
|
"terraform.languageServer.enable": false
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user