{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":812924020,"defaultBranch":"main","name":"forrest","ownerLogin":"hnez","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-06-10T06:59:46.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1273320?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724876148.0","currentOid":""},"activityList":{"items":[{"before":"dc6f953c116b6e70b4b680bddd279f2faf9c65b3","after":"3252565955bf2a1153172a66e09ffa46d4f68aaf","ref":"refs/heads/hyper","pushedAt":"2024-08-28T20:18:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"WIP: ingres: webhook: use hyper instead of the ad-hoc http implementation\n\nIn the future we will likely want to do more things via HTTP,\nnamely serving prometheus metrics, providing a status page or\nallowing the jobs inside of the machines to upload artifacts.\n\nGrowing a custom web server to do all of these things would be\npossible, but not really a reasonable thing to do.\n\nInstead use the hyper crate as a HTTP server implementation for the\nwebhook endpoint.\n\nUsing hyper as a server crate has the benefit of already being in our\ndependencies via the octocrab crate.\n\nAs far as I can tell this is however the only benefit of hyper\n(in our low-traffic usecase at least).\nThe interface seems to be designed by a committee of drunk lawyers that\nare paid by the number of crates they split their completely bonkers\ntraits into, as a result of this it is about as ergononic as a designer\nchair.\n\nThe documentation is strewn all over the place between all these crates\nand the hyper doc writers have, in all their wisdom,\nincluded `#[doc(hidden)]`s in their documentation, making it even less\nnavigable. Maybe what's hidden is proprietary knowledge that they can\nbill extra for.\n\nI hated any minute working with hyper so far.\nWe are in for a good time.","shortMessageHtmlLink":"WIP: ingres: webhook: use hyper instead of the ad-hoc http implementa…"}},{"before":null,"after":"dc6f953c116b6e70b4b680bddd279f2faf9c65b3","ref":"refs/heads/hyper","pushedAt":"2024-08-28T20:15:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"WIP: ingres: webhook: use hyper instead of the ad-hoc http implementation\n\nIn the future we will likely want to do more things via HTTP,\nnamely serving prometheus metrics, providing a status page or\nallowing the jobs inside of the machines to upload artifacts.\n\nGrowing a custom web server to do all of these things would be\npossible, but not really a reasonable thing to do.\n\nInstead use the hyper crate as a HTTP server implementation for the\nwebhook endpoint.\n\nUsing hyper as a server crate has the benefit of already being in our\ndependencies via the octocrab crate.\n\nAs far as I can tell this is however the only benefit of hyper\n(in our low-traffic usecase at least).\nThe interface seems to be designed by a committee of drunk lawyers that\nare payed by the number of crates they split their completely bonkers\ntraits into, as a result of this it is about as ergononic as a designer\nchair.\n\nThe documentation is strewn all over the place between all these crates\nand the hyper doc writers have, in all their wisdom,\nincluded `#[doc(hidden)]`s in their documentation, making it even less\nnavigable. Maybe what's hidden is proprietary knowledge that they can\nbill extra for.\n\nI hated any minute working with hyper so far.\nWe are in for a good time.","shortMessageHtmlLink":"WIP: ingres: webhook: use hyper instead of the ad-hoc http implementa…"}},{"before":"1b76a0fad580dd942d78208215dac39ca974f174","after":null,"ref":"refs/heads/systemd-notify-early","pushedAt":"2024-08-28T07:23:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"372b74fc96f59bf28e0e7cb567ade802aaf3f081","after":"2e80f6e44c994121fc0882a3289d51da506da83d","ref":"refs/heads/main","pushedAt":"2024-08-28T07:23:28.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #13 from hnez/systemd-notify-early\n\ningres: poll: do not poll before notifying systemd","shortMessageHtmlLink":"Merge pull request #13 from hnez/systemd-notify-early"}},{"before":"0b8766bd1a68545abef1106a3575af5bcf0ca4e1","after":null,"ref":"refs/heads/poll-one-day","pushedAt":"2024-08-28T07:13:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"c46b70000ae02f52f2931a14cf746dbd79f7a295","after":"372b74fc96f59bf28e0e7cb567ade802aaf3f081","ref":"refs/heads/main","pushedAt":"2024-08-28T07:13:44.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #14 from hnez/poll-one-day\n\ningres: poll: only poll runs from the last 24 hours in initial poll","shortMessageHtmlLink":"Merge pull request #14 from hnez/poll-one-day"}},{"before":"ddd498692c3ab60a1a0251139f1c8ceb39a1718c","after":null,"ref":"refs/heads/update","pushedAt":"2024-08-27T19:00:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"89d3863f6933183cfcb7026cee9fd06bab80eaf9","after":"c46b70000ae02f52f2931a14cf746dbd79f7a295","ref":"refs/heads/main","pushedAt":"2024-08-27T19:00:18.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #16 from hnez/update\n\ncargo: update dependencies","shortMessageHtmlLink":"Merge pull request #16 from hnez/update"}},{"before":"93d0481c8241795306718686c0b347f8aa0fc10c","after":"ddd498692c3ab60a1a0251139f1c8ceb39a1718c","ref":"refs/heads/update","pushedAt":"2024-08-27T18:58:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"cargo: update dependencies","shortMessageHtmlLink":"cargo: update dependencies"}},{"before":null,"after":"93d0481c8241795306718686c0b347f8aa0fc10c","ref":"refs/heads/update","pushedAt":"2024-08-27T18:56:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"cargo: update dependencies","shortMessageHtmlLink":"cargo: update dependencies"}},{"before":"175f0564c03c260056fd1d57070856e5b83f7063","after":null,"ref":"refs/heads/hashset-entry","pushedAt":"2024-08-27T18:50:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"1b5fa6fc576bf34dc51228dd422f389dd96d2442","after":"89d3863f6933183cfcb7026cee9fd06bab80eaf9","ref":"refs/heads/main","pushedAt":"2024-08-27T18:50:17.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #15 from hnez/hashset-entry\n\njobs/machines: manager: simplify logic using HashMap::entry()","shortMessageHtmlLink":"Merge pull request #15 from hnez/hashset-entry"}},{"before":"871f80ea5c9dd6127be750d91ee64d09b03dc0c0","after":"175f0564c03c260056fd1d57070856e5b83f7063","ref":"refs/heads/hashset-entry","pushedAt":"2024-08-27T18:45:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"jobs: manager: simplify logic using HashMap::entry()","shortMessageHtmlLink":"jobs: manager: simplify logic using HashMap::entry()"}},{"before":null,"after":"871f80ea5c9dd6127be750d91ee64d09b03dc0c0","ref":"refs/heads/hashset-entry","pushedAt":"2024-08-27T18:44:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"jobs: manager: simplify logic using HashMap::entry()","shortMessageHtmlLink":"jobs: manager: simplify logic using HashMap::entry()"}},{"before":null,"after":"0b8766bd1a68545abef1106a3575af5bcf0ca4e1","ref":"refs/heads/poll-one-day","pushedAt":"2024-08-27T18:13:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"ingres: poll: only poll runs from the last 24 hours in initial poll\n\nFirst of all: this does not affect runs that the Forrest instance already\nknows about. This is only the initial scan for runs that need our\nattention.\n\nThere can not be any runs older than 24 hours that need our attention,\nbecause GitHub cancels jobs for which no runner has registered\nafter 24 hours.","shortMessageHtmlLink":"ingres: poll: only poll runs from the last 24 hours in initial poll"}},{"before":null,"after":"1b76a0fad580dd942d78208215dac39ca974f174","ref":"refs/heads/systemd-notify-early","pushedAt":"2024-08-27T18:03:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"ingres: poll: do not poll before notifying systemd\n\nWe poll each user, repository, run and job in sequence.\nThis can take rather long when a lot of repositories are configured,\nin fact too long for the default systemd job startup timeout.\n\nThere is no real benefit to delaying the startup notification until after\nthe first of polling, so just don't do it instead.\nThis speeds up the perceived startup a lot.","shortMessageHtmlLink":"ingres: poll: do not poll before notifying systemd"}},{"before":"2fc597fc44bb5eae13aafc557aba02e946d4600b","after":null,"ref":"refs/heads/topic/cloud-init-cleanup","pushedAt":"2024-08-27T17:52:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"679325897c4f627ade839c3de611c4e201b99534","after":"1b5fa6fc576bf34dc51228dd422f389dd96d2442","ref":"refs/heads/main","pushedAt":"2024-08-27T17:52:15.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #5 from hnez/topic/cloud-init-cleanup\n\ncontrib: setup_templates: clean up the cloud-init configuration","shortMessageHtmlLink":"Merge pull request #5 from hnez/topic/cloud-init-cleanup"}},{"before":"9ff115c67ab0242a79e9b0b1b34fd1da703f29fa","after":"2fc597fc44bb5eae13aafc557aba02e946d4600b","ref":"refs/heads/topic/cloud-init-cleanup","pushedAt":"2024-08-27T17:50:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"contrib: setup_templates: use a mount unit for the job config file\n\nThis feels a bit cleaner than calling mount in a service unit.","shortMessageHtmlLink":"contrib: setup_templates: use a mount unit for the job config file"}},{"before":null,"after":"9ff115c67ab0242a79e9b0b1b34fd1da703f29fa","ref":"refs/heads/topic/cloud-init-cleanup","pushedAt":"2024-08-22T07:44:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"contrib: setup_templates: use a mount unit for the job config file\n\nThis feels a bit cleaner than calling mount in a service unit.","shortMessageHtmlLink":"contrib: setup_templates: use a mount unit for the job config file"}},{"before":"e2a7c991b34ff16a89be475f990d0fb8ce042a45","after":"679325897c4f627ade839c3de611c4e201b99534","ref":"refs/heads/main","pushedAt":"2024-08-21T08:39:55.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #4 from jluebbe/document-escape\n\ndocs: describe how to exit from socat","shortMessageHtmlLink":"Merge pull request #4 from jluebbe/document-escape"}},{"before":"7180ac0e48cc9d847513052b0e9cc8cc93ef3039","after":null,"ref":"refs/heads/topic/guest-ipv6","pushedAt":"2024-08-21T06:16:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"7eaeeb5071610276e98ac4cf8f5657719f939928","after":"e2a7c991b34ff16a89be475f990d0fb8ce042a45","ref":"refs/heads/main","pushedAt":"2024-08-21T06:16:47.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #1 from hnez/topic/guest-ipv6\n\nmachines: machine: give the qemu VMs access to the IPv6 internet","shortMessageHtmlLink":"Merge pull request #1 from hnez/topic/guest-ipv6"}},{"before":"40b7b9f086f3b0e7ef8bfbf86ffafd03892cde95","after":"7180ac0e48cc9d847513052b0e9cc8cc93ef3039","ref":"refs/heads/topic/guest-ipv6","pushedAt":"2024-08-21T05:56:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"machines: machine: give the qemu VMs IPv6 connectivity\n\nThis is based on the example in [1].\n\n[1]: https://blog.izissise.net/posts/qemuipv6slirp/","shortMessageHtmlLink":"machines: machine: give the qemu VMs IPv6 connectivity"}},{"before":"14f4822e9930f391ba817d54a9c46b8b8187a78d","after":"40b7b9f086f3b0e7ef8bfbf86ffafd03892cde95","ref":"refs/heads/topic/guest-ipv6","pushedAt":"2024-08-21T05:54:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"machines: machine: give the qemu VMs IPv6 connectivity\n\nThis is based on the example in [1].\n\n[1]: https://blog.izissise.net/posts/qemuipv6slirp/","shortMessageHtmlLink":"machines: machine: give the qemu VMs IPv6 connectivity"}},{"before":"caaa125b86cf36af61dddbdb7cad5de70c5e4592","after":null,"ref":"refs/heads/topic/log-config-reloads","pushedAt":"2024-08-21T05:13:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"8ffdab340ba0575b7ce612bf5d28ae03b6d686ed","after":"7eaeeb5071610276e98ac4cf8f5657719f939928","ref":"refs/heads/main","pushedAt":"2024-08-21T05:13:27.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #2 from hnez/topic/log-config-reloads\n\nconfig: log config file re-reads","shortMessageHtmlLink":"Merge pull request #2 from hnez/topic/log-config-reloads"}},{"before":"6ba2eb21d46c95b7c621355752bc671071b0f662","after":"caaa125b86cf36af61dddbdb7cad5de70c5e4592","ref":"refs/heads/topic/log-config-reloads","pushedAt":"2024-08-21T05:12:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"config: log config file re-reads\n\nBeing certain that the config file was actually re-read is invaluable\nwhen debugging issues with e.g. new machines.","shortMessageHtmlLink":"config: log config file re-reads"}},{"before":"9d3fa4f0a919bad685b716fe14c333dcb9d86cf0","after":null,"ref":"refs/heads/topic/log-webhook-events","pushedAt":"2024-08-21T05:11:50.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"}},{"before":"d98a5fa02048a1f72cd445c075433b130b8d54cf","after":"8ffdab340ba0575b7ce612bf5d28ae03b6d686ed","ref":"refs/heads/main","pushedAt":"2024-08-21T05:11:48.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hnez","name":"Leonard Göhrs","path":"/hnez","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1273320?s=80&v=4"},"commit":{"message":"Merge pull request #3 from hnez/topic/log-webhook-events\n\ningres: webhook: increase webhook event log level to info","shortMessageHtmlLink":"Merge pull request #3 from hnez/topic/log-webhook-events"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yOFQyMDoxODozOC4wMDAwMDBazwAAAASm6wV7","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMVQwNToxMTo0OC4wMDAwMDBazwAAAASfyLQZ"}},"title":"Activity · hnez/forrest"}