{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":775031742,"defaultBranch":"main","name":"demo","ownerLogin":"offspot","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-03-20T16:29:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/87967336?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1725883153.0","currentOid":""},"activityList":{"items":[{"before":"c9a5f98d91323faf1df6f373f4e2877138e3c45e","after":null,"ref":"refs/heads/multi-demo","pushedAt":"2024-09-09T11:59:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"}},{"before":"b00f254a6bc340ea6e04a828bce07309979411bf","after":"6505df801a86adeb29bea82a606a694dc0b8403b","ref":"refs/heads/main","pushedAt":"2024-09-09T11:59:12.000Z","pushType":"pr_merge","commitsCount":25,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"Merge pull request #14 from offspot/multi-demo\n\nRevamped for multi-demo & minimal downtime","shortMessageHtmlLink":"Merge pull request #14 from offspot/multi-demo"}},{"before":"6b45372794c9ac0e3c83ef3c024023d84d7a836b","after":"c9a5f98d91323faf1df6f373f4e2877138e3c45e","ref":"refs/heads/multi-demo","pushedAt":"2024-09-09T11:01:43.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"updated all deps","shortMessageHtmlLink":"updated all deps"}},{"before":"2d87b70746049430f6f2fc3eae382d66a53ac4fc","after":"6b45372794c9ac0e3c83ef3c024023d84d7a836b","ref":"refs/heads/multi-demo","pushedAt":"2024-09-09T10:53:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"fixup! rename do_deploy_url to do_deploy","shortMessageHtmlLink":"fixup! rename do_deploy_url to do_deploy"}},{"before":"eb25270b8e14accd0ff0426d66a96d6edce38c11","after":"2d87b70746049430f6f2fc3eae382d66a53ac4fc","ref":"refs/heads/multi-demo","pushedAt":"2024-09-09T10:51:29.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"removed useless enable_portal and index","shortMessageHtmlLink":"removed useless enable_portal and index"}},{"before":"9e918d5200276ef0f57a0cbf81612ba5e70db43b","after":"eb25270b8e14accd0ff0426d66a96d6edce38c11","ref":"refs/heads/multi-demo","pushedAt":"2024-08-19T15:40:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"added robots.txt for homepage and all (sub)domains","shortMessageHtmlLink":"added robots.txt for homepage and all (sub)domains"}},{"before":"8018386ca7cd2392b0d8b0862fe352a0ca0f0fd0","after":"9e918d5200276ef0f57a0cbf81612ba5e70db43b","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T19:40:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"caddy/acme not happy with domain","shortMessageHtmlLink":"caddy/acme not happy with domain"}},{"before":"a7f9df8767f8970444f1211642153d274976e567","after":"8018386ca7cd2392b0d8b0862fe352a0ca0f0fd0","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T19:37:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"need tls info to get cert","shortMessageHtmlLink":"need tls info to get cert"}},{"before":"8bb2535ac1ccb84324e81f87d8264c6b82e93297","after":"a7f9df8767f8970444f1211642153d274976e567","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T19:25:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"typo","shortMessageHtmlLink":"typo"}},{"before":"fff87ff873a67e0275fe8215a08eb194ff528759","after":"8bb2535ac1ccb84324e81f87d8264c6b82e93297","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T18:42:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"redirect to captive portal\n\n- that's enough for what it's used for\n- lighttpd is throwing 400 on reverse for some reason","shortMessageHtmlLink":"redirect to captive portal"}},{"before":"b0edbecaad6a08585f00b7ec9ffc7c32c1df8f15","after":"fff87ff873a67e0275fe8215a08eb194ff528759","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T18:08:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"make sure watcher awaits proxy if not started","shortMessageHtmlLink":"make sure watcher awaits proxy if not started"}},{"before":"f95362c75b8dce66c2937611fce703732c72319e","after":"b0edbecaad6a08585f00b7ec9ffc7c32c1df8f15","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T18:08:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"captive http is on :2080","shortMessageHtmlLink":"captive http is on :2080"}},{"before":"e7ec0208cff3dbad01a4cd055df7b093be734e23","after":"f95362c75b8dce66c2937611fce703732c72319e","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T17:59:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"always prepare ; no harm","shortMessageHtmlLink":"always prepare ; no harm"}},{"before":"7de115ce3636eee46cee679f8fa63bfd0b6bb608","after":"e7ec0208cff3dbad01a4cd055df7b093be734e23","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T16:42:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"Fixed is_healthy\n\n- demo_start is run after pull and build so it starts faster (container creation + startup)\n- is_healthy checks only for running containers as `created` would show up on previously deployed but not running maint","shortMessageHtmlLink":"Fixed is_healthy"}},{"before":"32b4ff2852e1477d039ec70082e86a66bb503997","after":"7de115ce3636eee46cee679f8fa63bfd0b6bb608","ref":"refs/heads/multi-demo","pushedAt":"2024-08-17T16:08:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"missing field in demo str builder","shortMessageHtmlLink":"missing field in demo str builder"}},{"before":"86654aab2d571164b9d1313d87ee6c792957b5c2","after":"32b4ff2852e1477d039ec70082e86a66bb503997","ref":"refs/heads/multi-demo","pushedAt":"2024-08-16T20:53:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"lint fix","shortMessageHtmlLink":"lint fix"}},{"before":"5cc379641bf1bb69bde03f28fcb6dced875c230d","after":"86654aab2d571164b9d1313d87ee6c792957b5c2","ref":"refs/heads/multi-demo","pushedAt":"2024-08-16T20:51:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"Reliable internsal HTTP ports and captive endpoint\n\nHTTP ports are now ident-based hence allowing order change in config.\nHTTPs port has been removed as not used\nA captive_http_port is set based on HTTP one and a _captive. endpoint created","shortMessageHtmlLink":"Reliable internsal HTTP ports and captive endpoint"}},{"before":"4db302013032796ef863ae3543f50d9a84d180bc","after":"5cc379641bf1bb69bde03f28fcb6dced875c230d","ref":"refs/heads/multi-demo","pushedAt":"2024-08-16T19:49:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"fixed typo in YAML conf","shortMessageHtmlLink":"fixed typo in YAML conf"}},{"before":"836339c793e38af2e512cf1d1371eb05ec9a16f8","after":"4db302013032796ef863ae3543f50d9a84d180bc","ref":"refs/heads/multi-demo","pushedAt":"2024-08-16T12:09:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"shop link","shortMessageHtmlLink":"shop link"}},{"before":"5cd9ade7f3ff5aef88e9fa7cf0d17735ffdab04a","after":"836339c793e38af2e512cf1d1371eb05ec9a16f8","ref":"refs/heads/multi-demo","pushedAt":"2024-08-16T12:07:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"style and text in homepage","shortMessageHtmlLink":"style and text in homepage"}},{"before":"541ac540a2a25088c76c63ce05969e59d4755dda","after":"5cd9ade7f3ff5aef88e9fa7cf0d17735ffdab04a","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T17:41:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"Revamped for multi-demo & minimal downtime\n\nEnded-up squashing it all as there were too many back-and-forth in the non-trival commits and none would work independently\n\n- multi-proxy approach with single TLS handler. reverses using HTTP. need alls subdomains\n- custom homepage\n- can be configured from the repo\n- config watcher\n- update watcher improved: imdeploys existing but gone, starts missing, redeploys updated\n- authenticates to imager-service API to use private images as well\n- uses python3.11 (upgraded machine to bookworm)\n- exposes captive portal UIs on ports `1080`, `2080`, etc\n- defaults to all files under /data/demo/{compose,images,data}/\n- per-deployments subfolders\n- /var/logs/demo maintained to have a tmpfs\n- new `Deployment` type\n- download to a temp file to reduce downtime. Actual replacement (with downtime) thus lasts seconds\n- download without RPC/daemon mode to simplify management\n- download without capturing output so one can follow progress in logs\n- new `--reuse-image` param for deploy script\n- new `--force-prepare` param for deploy script (and `--force` for prepare one)\n- post-prepare calls multi-proxy for regen\n- no use for IS_ONLINE_DEMO trick on dashboard (will be removed)\n- multi-proxy is single docker run systemd (not compose) because one service\n- demo-watcher calls two script to ease dependency and use handy systemd timer\n- one maint-compose per demo\n- new undeploy script (with `--keep` param) for debug\n\nSee PR for details https://github.com/offspot/demo/pulls/14","shortMessageHtmlLink":"Revamped for multi-demo & minimal downtime"}},{"before":"6cb0ecdb287a728b5e92c8db15079f8479d827f6","after":"541ac540a2a25088c76c63ce05969e59d4755dda","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T17:34:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"readme","shortMessageHtmlLink":"readme"}},{"before":"cc43dc0f2e3fcf8548a2b4b30b70254a7b9bfc08","after":"6cb0ecdb287a728b5e92c8db15079f8479d827f6","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T13:10:36.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"allow output of aria download (to follow progress/speed)","shortMessageHtmlLink":"allow output of aria download (to follow progress/speed)"}},{"before":"432e76556c4be08c6b07109b4706ac04efc0da24","after":"cc43dc0f2e3fcf8548a2b4b30b70254a7b9bfc08","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T12:22:45.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"updated icon","shortMessageHtmlLink":"updated icon"}},{"before":"3e644a936f0222c049e076790fe9ab906a0fdd09","after":"432e76556c4be08c6b07109b4706ac04efc0da24","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T12:09:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"added names and TED","shortMessageHtmlLink":"added names and TED"}},{"before":"b32a3f7a1870e01c7a6f26192d3334eed266352b","after":"3e644a936f0222c049e076790fe9ab906a0fdd09","ref":"refs/heads/multi-demo","pushedAt":"2024-08-15T12:03:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"introduce deployment name and multi homepage using it","shortMessageHtmlLink":"introduce deployment name and multi homepage using it"}},{"before":"35282d4128c23ad5d7bd164a929c5e892403560b","after":"b32a3f7a1870e01c7a6f26192d3334eed266352b","ref":"refs/heads/multi-demo","pushedAt":"2024-08-14T12:13:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"allow not specifying alias in online YAML","shortMessageHtmlLink":"allow not specifying alias in online YAML"}},{"before":"c0ff09c654b5740701b39b7ce1e58559dd9f8aed","after":"35282d4128c23ad5d7bd164a929c5e892403560b","ref":"refs/heads/multi-demo","pushedAt":"2024-08-14T12:06:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"using single watcher service","shortMessageHtmlLink":"using single watcher service"}},{"before":"b878b0a8a9f6f6e27a4eb84b8f076b960ba45ab0","after":"c0ff09c654b5740701b39b7ce1e58559dd9f8aed","ref":"refs/heads/multi-demo","pushedAt":"2024-08-14T11:55:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"deploy all demos!","shortMessageHtmlLink":"deploy all demos!"}},{"before":"902d28761d52d3c418265e45a3833d38abbf241f","after":"b878b0a8a9f6f6e27a4eb84b8f076b960ba45ab0","ref":"refs/heads/multi-demo","pushedAt":"2024-08-14T11:22:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rgaudin","name":"rgaudin","path":"/rgaudin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57929?s=80&v=4"},"commit":{"message":"compose outside of target dir (prevent maint unavaila after mount)","shortMessageHtmlLink":"compose outside of target dir (prevent maint unavaila after mount)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQxMTo1OToxMy4wMDAwMDBazwAAAASw1t28","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQxMTo1OToxMy4wMDAwMDBazwAAAASw1t28","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0xNFQxMToyMjozMS4wMDAwMDBazwAAAASaKjyr"}},"title":"Activity ยท offspot/demo"}