mirror of
https://github.com/standardnotes/server
synced 2026-04-24 15:01:42 -04:00
Compare commits
943 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| d40c4ac0ed | |||
| caaad9205c | |||
| 8a47c4bb41 | |||
| f7b3b9c4eb | |||
| 099430c764 | |||
| deca3ebd64 | |||
| 79dd3d02e3 | |||
| f49299fa91 | |||
| 250f408228 | |||
| 26f8b75bed | |||
| f541c2f7c1 | |||
| 997ffc02a3 | |||
| fa6335d6ac | |||
| 57694bdc14 | |||
| eed243d43b | |||
| 37e21f6505 | |||
| d25e14147c | |||
| 1d4bce7309 | |||
| 8c0c56930e | |||
| 2e9255344e | |||
| 346a7cabe1 | |||
| 4a430b2701 | |||
| bb53e88a4e | |||
| cfd04a5b39 | |||
| e0f2d5e202 | |||
| 3035cbc5de | |||
| 7c271be310 | |||
| ba373ebc6b | |||
| 2450d88a29 | |||
| 376a59c182 | |||
| d584ca57f1 | |||
| c50662849b | |||
| 82da690139 | |||
| b11a9b0eac | |||
| d7653474c3 | |||
| ce2fd86ca3 | |||
| c9c496c63f | |||
| b1c9f8ca6e | |||
| e84bd73a39 | |||
| c69d1b02fb | |||
| b590d33b88 | |||
| c1e7a3eb7e | |||
| fd743a9d5e | |||
| 4c40fd5186 | |||
| 2cb470b99e | |||
| b6539f8795 | |||
| 6d7de4a8da | |||
| 41999f36f0 | |||
| fa2a8da17b | |||
| 214684eae7 | |||
| b3a92af04d | |||
| 210a314c81 | |||
| 46cba52bcb | |||
| bf14ec05f9 | |||
| 6f88a96c3e | |||
| e12c9c47a7 | |||
| 83085052f8 | |||
| eda618d845 | |||
| 8d4280f4ca | |||
| b57816bba4 | |||
| b6db194a22 | |||
| 8f708164cd | |||
| ff09ae0a47 | |||
| d21d752029 | |||
| 2ea077a7cd | |||
| 0d67c55e12 | |||
| 8837dca039 | |||
| c9ec846a3c | |||
| 786829f317 | |||
| 10891af33b | |||
| 3f091175e2 | |||
| 0e5d7c918b | |||
| fd2358a4b8 | |||
| dd36b1859c | |||
| 8c9a8a484f | |||
| 451ed1ae3a | |||
| 4ec30df2dc | |||
| 163b7ff2d8 | |||
| 6e136e98b3 | |||
| 100eef2cb8 | |||
| 1d8cf4b675 | |||
| 5a01517097 | |||
| ca54d4e0a0 | |||
| 2bcc4a2254 | |||
| afe5ff3e70 | |||
| 4d8b021284 | |||
| 281dd3d378 | |||
| 7efb48dd2a | |||
| d7b68bcafb | |||
| 04d1dffe53 | |||
| db492c3787 | |||
| d04b04507a | |||
| 6c87d3614d | |||
| dd6d409ebb | |||
| 9f75c2b601 | |||
| 9df87a0e3d | |||
| 628dcf1539 | |||
| 38b42dad62 | |||
| 90359d61d9 | |||
| 57c3b9c29e | |||
| b25f2e8c54 | |||
| 5be40fa99c | |||
| bc909dd3aa | |||
| 3110c20596 | |||
| 69a9c5555b | |||
| cca6c7f65e | |||
| 7a8a5fcfdf | |||
| 845d310af9 | |||
| d61e6f338e | |||
| f2ddbc82d0 | |||
| 8708b10dfc | |||
| 165ee50dc8 | |||
| 6cc4ef90db | |||
| ad8a07b003 | |||
| 923fe2a19b | |||
| f3c6fff20f | |||
| 3b0e51b4cd | |||
| bff7852e53 | |||
| 8e5012009b | |||
| eb30692f6a | |||
| 143b215ddc | |||
| 2a1b9a6679 | |||
| 3ca49fee1a | |||
| 8c5c52770b | |||
| 48f6753090 | |||
| e8d13627f8 | |||
| e90caeac32 | |||
| 94e84a2539 | |||
| 263dc8a98d | |||
| 2106375695 | |||
| 5d41ac769b | |||
| 023f90456b | |||
| 16f6b902d9 | |||
| c62ff8f5c9 | |||
| 1a8670cdaa | |||
| c205ebb710 | |||
| 5e54617325 | |||
| 6e1e6fa291 | |||
| 79926bb77d | |||
| a40bbf4872 | |||
| 8647a484f4 | |||
| dcd32e7601 | |||
| 0eaf1a593d | |||
| 1c4c609865 | |||
| 17a0c9fd24 | |||
| dd3ea0bfb5 | |||
| a982c78541 | |||
| 49093923ca |
@@ -0,0 +1,6 @@
|
|||||||
|
DB_PORT=3306
|
||||||
|
DB_USERNAME=std_notes_user
|
||||||
|
DB_PASSWORD=changeme123
|
||||||
|
DB_DATABASE=standard_notes_db
|
||||||
|
|
||||||
|
REDIS_PORT=6379
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"project": "./tsconfig.json"
|
||||||
|
},
|
||||||
|
"plugins": ["@typescript-eslint", "prettier"],
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"prettier"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"@typescript-eslint/no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"vars": "all",
|
||||||
|
"args": "after-used",
|
||||||
|
"ignoreRestSiblings": false,
|
||||||
|
"argsIgnorePattern": "^_",
|
||||||
|
"varsIgnorePattern": "^_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/no-explicit-any": ["error", { "ignoreRestArgs": true }],
|
||||||
|
"@typescript-eslint/no-floating-promises": ["error"],
|
||||||
|
"block-scoped-var": "error",
|
||||||
|
"comma-dangle": ["error", "always-multiline"],
|
||||||
|
"curly": ["error", "all"],
|
||||||
|
"no-confusing-arrow": "error",
|
||||||
|
"no-inline-comments": "warn",
|
||||||
|
"no-invalid-this": "error",
|
||||||
|
"no-return-assign": "warn",
|
||||||
|
"no-constructor-return": "error",
|
||||||
|
"no-duplicate-imports": "error",
|
||||||
|
"no-self-compare": "error",
|
||||||
|
"no-console": ["error", { "allow": ["warn", "error"] }],
|
||||||
|
"no-unmodified-loop-condition": "error",
|
||||||
|
"no-unused-private-class-members": "error",
|
||||||
|
"object-curly-spacing": ["error", "always"],
|
||||||
|
"quotes": ["error", "single", { "avoidEscape": true }],
|
||||||
|
"semi": ["error", "never"],
|
||||||
|
"prettier/prettier": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"printWidth": 120,
|
||||||
|
"semi": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"usePrettierrc": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
# 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/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/workspace"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: analytics_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: api_gateway_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: auth_image_tag
|
||||||
|
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 }}-prod
|
||||||
|
cluster: prod
|
||||||
|
wait-for-service-stability: true
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
name: Reusable Publish Docker Image Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
service_name:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bundle_dir:
|
||||||
|
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
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
${{ inputs.bundle_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: 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 ${{ inputs.bundle_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: ${{ inputs.bundle_dir }}
|
||||||
|
file: ${{ inputs.bundle_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,236 @@
|
|||||||
|
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
|
||||||
|
e2e_tag_parameter_name:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
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:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
temp_dir: ${{ steps.bundle-dir.outputs.temp_dir }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- 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: Build
|
||||||
|
run: yarn build ${{ inputs.package_path }}
|
||||||
|
|
||||||
|
- name: Bundle
|
||||||
|
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ steps.bundle-dir.outputs.temp_dir }}
|
||||||
|
|
||||||
|
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
|
||||||
|
${{ needs.build.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: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build ${{ inputs.package_path }}
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: yarn lint:${{ inputs.service_name }}
|
||||||
|
|
||||||
|
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
|
||||||
|
${{ needs.build.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: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build ${{ inputs.package_path }}
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: yarn test ${{ inputs.package_path }}
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
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
|
||||||
|
${{ needs.build.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: 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 ${{ needs.build.outputs.temp_dir }}
|
||||||
|
|
||||||
|
- 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 for E2E testing
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
|
context: ${{ needs.build.outputs.temp_dir }}
|
||||||
|
file: ${{ needs.build.outputs.temp_dir }}/${{ inputs.package_path }}/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: standardnotes/${{ inputs.service_name }}:${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Run E2E test suite
|
||||||
|
uses: convictional/trigger-workflow-and-wait@v1.6.3
|
||||||
|
with:
|
||||||
|
owner: standardnotes
|
||||||
|
repo: e2e
|
||||||
|
github_token: ${{ secrets.CI_PAT_TOKEN }}
|
||||||
|
workflow_file_name: testing-with-stable-client.yml
|
||||||
|
wait_interval: 30
|
||||||
|
client_payload: '{"${{ inputs.e2e_tag_parameter_name }}": "${{ github.sha }}"}'
|
||||||
|
propagate_failure: true
|
||||||
|
trigger_workflow: true
|
||||||
|
wait_workflow: true
|
||||||
|
|
||||||
|
publish:
|
||||||
|
needs: [ build, test, lint, e2e ]
|
||||||
|
|
||||||
|
name: Publish Docker Image
|
||||||
|
uses: standardnotes/server/.github/workflows/common-docker-image.yml@main
|
||||||
|
with:
|
||||||
|
service_name: ${{ inputs.service_name }}
|
||||||
|
bundle_dir: ${{ needs.build.outputs.temp_dir }}
|
||||||
|
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,39 @@
|
|||||||
|
name: Event Store
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: event-store
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/event-store*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: event-store
|
||||||
|
workspace_name: "@standardnotes/event-store"
|
||||||
|
e2e_tag_parameter_name: event_store_image_tag
|
||||||
|
deploy_web: false
|
||||||
|
package_path: packages/event-store
|
||||||
|
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_EVENT_STORE_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: files_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
name: Pull Request
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
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: ESLint
|
||||||
|
run: yarn lint
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
name: Publish Packages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release_and_publish:
|
||||||
|
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.CI_PAT_TOKEN }}
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- 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@v5
|
||||||
|
with:
|
||||||
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||||
|
passphrase: ${{ secrets.PASSPHRASE }}
|
||||||
|
git_user_signingkey: true
|
||||||
|
git_commit_gpgsign: true
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Build packages
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Bump version
|
||||||
|
run: yarn release
|
||||||
|
|
||||||
|
- name: Publish
|
||||||
|
run: yarn publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.CI_NPM_TOKEN }}
|
||||||
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: revisions_image_tag
|
||||||
|
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,151 +0,0 @@
|
|||||||
name: Scheduler Server Dev
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: dev_environment
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '@standardnotes/scheduler-server@[0-9]*.[0-9]*.[0-9]*-alpha.[0-9]*'
|
|
||||||
- '@standardnotes/scheduler-server@[0-9]*.[0-9]*.[0-9]*-beta.[0-9]*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
- run: yarn install
|
|
||||||
- run: yarn test
|
|
||||||
|
|
||||||
publish-aws-ecr:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: cp .env.sample .env
|
|
||||||
- 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: |
|
|
||||||
docker build -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:dev
|
|
||||||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:dev
|
|
||||||
|
|
||||||
publish-docker-hub:
|
|
||||||
needs: test
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: cp .env.sample .env
|
|
||||||
- name: Publish to Registry
|
|
||||||
env:
|
|
||||||
DOCKER_BUILDKIT: 1
|
|
||||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
|
||||||
uses: elgohr/Publish-Docker-Github-Action@master
|
|
||||||
with:
|
|
||||||
name: standardnotes/scheduler
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
tags: "dev,${{ github.sha }}"
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
needs: publish-aws-ecr
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
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 scheduler-worker-dev --query taskDefinition > task-definition.json
|
|
||||||
- name: 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: Fill in the new image ID in the Amazon ECS task definition
|
|
||||||
id: task-def
|
|
||||||
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: Deploy Amazon ECS task definition
|
|
||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
||||||
with:
|
|
||||||
task-definition: ${{ steps.task-def.outputs.task-definition }}
|
|
||||||
service: scheduler-worker-dev
|
|
||||||
cluster: dev
|
|
||||||
wait-for-service-stability: true
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: [ deploy-worker ]
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
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_WORKER_DEV }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|
||||||
notify_discord:
|
|
||||||
needs: [ deploy-worker ]
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: packages/scheduler
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Run Discord Webhook
|
|
||||||
uses: johnnyhuy/actions-discord-git-webhook@main
|
|
||||||
with:
|
|
||||||
webhook_url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: scheduler_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: syncing_server_js_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
name: Version Bump
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ develop, main ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
bump:
|
|
||||||
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CI_PAT_TOKEN }}
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- 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@v5
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
|
||||||
passphrase: ${{ secrets.PASSPHRASE }}
|
|
||||||
git_user_signingkey: true
|
|
||||||
git_commit_gpgsign: true
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
|
|
||||||
- run: yarn install
|
|
||||||
|
|
||||||
- name: Bump Prod Version
|
|
||||||
if: ${{ github.ref == 'refs/heads/main' }}
|
|
||||||
run: yarn release:prod
|
|
||||||
|
|
||||||
- name: Bump Beta Version
|
|
||||||
if: ${{ github.ref == 'refs/heads/develop' }}
|
|
||||||
run: yarn release:beta
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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"
|
||||||
|
e2e_tag_parameter_name: websockets_image_tag
|
||||||
|
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 }}"
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
name: Workspace Server
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: workspace
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*standardnotes/workspace-server*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call_server_application_workflow:
|
||||||
|
name: Server Application
|
||||||
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
|
with:
|
||||||
|
service_name: workspace
|
||||||
|
workspace_name: "@standardnotes/workspace-server"
|
||||||
|
e2e_tag_parameter_name: workspace_image_tag
|
||||||
|
package_path: packages/workspace
|
||||||
|
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_WORKSPACE_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_WORKSPACE_WORKER_PROD }}
|
||||||
|
revision: "${{ github.sha }}"
|
||||||
|
description: "Automated Deployment via Github Actions"
|
||||||
|
user: "${{ github.actor }}"
|
||||||
+9
-5
@@ -1,18 +1,22 @@
|
|||||||
.eslintcache
|
.eslintcache
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.vscode
|
|
||||||
.idea
|
.idea
|
||||||
node_modules
|
|
||||||
dist
|
dist
|
||||||
coverage
|
coverage
|
||||||
.env
|
.env
|
||||||
newrelic_agent.log
|
newrelic_agent.log
|
||||||
|
|
||||||
**/.pnp.*
|
.yarn/*
|
||||||
**/.yarn/*
|
!.yarn/cache
|
||||||
!.yarn/patches
|
!.yarn/patches
|
||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
|
!.yarn/unplugged
|
||||||
!.yarn/sdks
|
!.yarn/sdks
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
!.yarn/cache
|
|
||||||
|
packages/files/uploads/*
|
||||||
|
!packages/files/uploads/.gitkeep
|
||||||
|
|
||||||
|
data/*
|
||||||
|
!data/.gitkeep
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Generated
+2067
File diff suppressed because it is too large
Load Diff
Vendored
+7
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"arcanis.vscode-zipfs",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode"
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"search.exclude": {
|
||||||
|
"**/.yarn": true,
|
||||||
|
"**/.pnp.*": true
|
||||||
|
},
|
||||||
|
"eslint.nodePath": ".yarn/sdks",
|
||||||
|
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
||||||
|
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
||||||
|
"typescript.enablePromptUseWorkspaceTsdk": true
|
||||||
|
}
|
||||||
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.
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.
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.
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.
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.
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.
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
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.
BIN
Binary file not shown.
Vendored
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.
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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