Compare commits

...

181 Commits

Author SHA1 Message Date
dvirlabs
830303dcf0 Merge branch 'master' of https://git.dvirlabs.com/dvirlabs/apps-gitops 2025-07-19 22:41:37 +03:00
dvirlabs
ce5a0ff996 Add condition to not add monitoring to uptimekuma if already exsist 2025-07-19 22:41:10 +03:00
woodpecker-bot
414a78f03a ci: trigger apps-gitops build 2025-07-19 18:51:53 +00:00
woodpecker-bot
b26dd03a4e ci: trigger apps-gitops build 2025-07-19 18:48:40 +00:00
dvirlabs
2dee628753 Update the script of uptimekuma 2025-07-18 19:28:03 +03:00
dvirlabs
57250c6d2b Merge branch 'master' of https://git.dvirlabs.com/dvirlabs/apps-gitops 2025-07-18 19:23:53 +03:00
dvirlabs
f7a17c33ad Update the script of uptimekuma 2025-07-18 19:23:25 +03:00
woodpecker-bot
7c44fb476d ci: trigger apps-gitops build 2025-07-18 16:18:40 +00:00
dvirlabs
099829ffba Update the script of uptimekuma 2025-07-18 19:18:01 +03:00
dvirlabs
b6b28dce6d Update the script of uptimekuma 2025-07-18 19:14:12 +03:00
woodpecker-bot
5a6bd190bc ci: trigger apps-gitops build 2025-07-18 10:47:32 +00:00
woodpecker-bot
92979a4269 ci: trigger apps-gitops build 2025-07-18 10:45:49 +00:00
woodpecker-bot
e6b7c77718 ci: trigger apps-gitops build 2025-07-18 10:43:02 +00:00
woodpecker-bot
2f93d3d2cb ci: trigger apps-gitops build 2025-07-18 10:03:51 +00:00
woodpecker-bot
70a87165ed ci: trigger apps-gitops build 2025-07-18 09:58:17 +00:00
woodpecker-bot
bca58bf2f6 ci: trigger apps-gitops build 2025-07-18 09:52:44 +00:00
woodpecker-bot
c0fa517c4b ci: trigger apps-gitops build 2025-07-18 09:51:36 +00:00
woodpecker-bot
f87ccbf2cb ci: trigger apps-gitops build 2025-07-18 09:16:26 +00:00
bf6e1c9ed8 Add more repo to scan 2025-07-18 12:14:33 +03:00
woodpecker-bot
950fcc3bd4 ci: trigger apps-gitops build 2025-07-18 08:20:08 +00:00
woodpecker-bot
6030e3ed73 ci: trigger apps-gitops build 2025-07-17 01:42:48 +00:00
woodpecker-bot
3effd8c172 ci: trigger apps-gitops build 2025-07-17 01:40:35 +00:00
woodpecker-bot
122c25da4b ci: trigger apps-gitops build 2025-07-17 01:11:10 +00:00
woodpecker-bot
c948e966ec ci: trigger apps-gitops build 2025-07-17 00:48:15 +00:00
woodpecker-bot
567aa26e75 ci: trigger apps-gitops build 2025-07-17 00:18:19 +00:00
woodpecker-bot
025c9ce39c ci: trigger apps-gitops build 2025-07-17 00:15:33 +00:00
woodpecker-bot
d75c266c62 ci: trigger apps-gitops build 2025-07-17 00:03:15 +00:00
woodpecker-bot
25cd37518d ci: trigger apps-gitops build 2025-07-17 00:00:37 +00:00
woodpecker-bot
4c1bfd5921 ci: trigger apps-gitops build 2025-07-16 23:59:12 +00:00
woodpecker-bot
50fea8138d ci: trigger apps-gitops build 2025-07-16 23:58:14 +00:00
woodpecker-bot
d851e2467c ci: trigger apps-gitops build 2025-07-16 17:52:29 +00:00
woodpecker-bot
e831c21606 ci: trigger apps-gitops build 2025-07-16 17:32:06 +00:00
woodpecker-bot
57b85d9be9 ci: trigger apps-gitops build 2025-07-16 17:09:06 +00:00
woodpecker-bot
615ca744a4 ci: trigger apps-gitops build 2025-07-16 15:47:57 +00:00
woodpecker-bot
7aa9603fad ci: trigger apps-gitops build 2025-07-13 02:50:24 +00:00
woodpecker-bot
e203e69ebb ci: trigger apps-gitops build 2025-07-13 02:46:30 +00:00
woodpecker-bot
d39882af4f ci: trigger apps-gitops build 2025-07-13 02:46:24 +00:00
woodpecker-bot
950418a1db ci: trigger apps-gitops build 2025-07-13 02:31:34 +00:00
woodpecker-bot
1f721a327b ci: trigger apps-gitops build 2025-07-13 02:23:08 +00:00
woodpecker-bot
e967205dd6 ci: trigger apps-gitops build 2025-07-13 02:23:05 +00:00
woodpecker-bot
d1b3d10538 ci: trigger apps-gitops build 2025-07-12 23:13:43 +00:00
woodpecker-bot
bcffa4b9f6 ci: trigger apps-gitops build 2025-07-12 21:56:52 +00:00
woodpecker-bot
cdc3a401fe ci: trigger apps-gitops build 2025-07-12 21:06:28 +00:00
woodpecker-bot
e6d6ad327a ci: trigger apps-gitops build 2025-07-12 20:30:27 +00:00
woodpecker-bot
893e12b0f1 ci: trigger apps-gitops build 2025-07-12 20:16:49 +00:00
woodpecker-bot
d05aaf0cf0 ci: trigger apps-gitops build 2025-07-12 20:06:17 +00:00
woodpecker-bot
841d123ad4 ci: trigger apps-gitops build 2025-07-12 19:09:16 +00:00
woodpecker-bot
e73bce3b52 ci: trigger apps-gitops build 2025-07-11 15:48:39 +00:00
woodpecker-bot
4a88d31b80 ci: trigger apps-gitops build 2025-07-11 14:04:00 +00:00
woodpecker-bot
fef036e78d ci: trigger apps-gitops build 2025-07-11 13:51:55 +00:00
woodpecker-bot
c7c64c16b8 ci: trigger apps-gitops build 2025-07-11 12:56:58 +00:00
woodpecker-bot
d7a41f4406 ci: trigger apps-gitops build 2025-07-11 12:53:46 +00:00
177f5edc51 Merge branch 'master' of https://git.dvirlabs.com/dvirlabs/apps-gitops 2025-07-11 15:50:58 +03:00
0f6f0221b1 Add uptime kuma step 2025-07-11 10:50:10 +03:00
woodpecker-bot
025a142f57 ci: trigger apps-gitops build 2025-07-11 07:04:38 +00:00
woodpecker-bot
ef62f0c205 ci: trigger apps-gitops build 2025-07-11 07:00:23 +00:00
woodpecker-bot
2ddbcfd6e3 ci: trigger apps-gitops build 2025-07-11 06:58:46 +00:00
woodpecker-bot
54a21b60dc ci: trigger apps-gitops build 2025-07-11 06:49:00 +00:00
woodpecker-bot
6f59b0cf95 ci: trigger apps-gitops build 2025-07-10 14:57:48 +00:00
woodpecker-bot
937e297287 ci: trigger apps-gitops build 2025-07-10 14:54:15 +00:00
woodpecker-bot
c6128c3c7b ci: trigger apps-gitops build 2025-07-10 14:50:21 +00:00
woodpecker-bot
5492d41064 ci: trigger apps-gitops build 2025-07-10 14:45:49 +00:00
woodpecker-bot
108ad15503 ci: trigger apps-gitops build 2025-07-10 14:40:13 +00:00
woodpecker-bot
c5b69a1f43 ci: trigger apps-gitops build 2025-07-10 14:38:07 +00:00
woodpecker-bot
ca186de145 ci: trigger apps-gitops build 2025-07-10 14:34:10 +00:00
woodpecker-bot
8cbf61a571 ci: trigger apps-gitops build 2025-07-10 14:32:57 +00:00
woodpecker-bot
843df663d5 ci: trigger apps-gitops build 2025-07-10 13:48:06 +00:00
woodpecker-bot
69114fdb94 ci: trigger apps-gitops build 2025-07-10 13:48:03 +00:00
woodpecker-bot
f2f6c91e46 ci: trigger apps-gitops build 2025-07-10 13:25:09 +00:00
woodpecker-bot
08d9a97646 ci: trigger apps-gitops build 2025-07-10 10:02:36 +00:00
woodpecker-bot
70afbc06f8 ci: trigger apps-gitops build 2025-07-10 09:55:33 +00:00
woodpecker-bot
776450253c ci: trigger apps-gitops build 2025-07-10 09:41:25 +00:00
woodpecker-bot
b7d8e938ce ci: trigger apps-gitops build 2025-07-10 09:41:13 +00:00
woodpecker-bot
5ae0f90f1d ci: trigger apps-gitops build 2025-07-10 08:55:16 +00:00
woodpecker-bot
ec36f1d66b ci: trigger apps-gitops build 2025-07-10 08:55:06 +00:00
woodpecker-bot
4ba337865c ci: trigger apps-gitops build 2025-07-10 07:23:10 +00:00
woodpecker-bot
0f47898f3d ci: trigger apps-gitops build 2025-07-10 07:22:50 +00:00
woodpecker-bot
6b3c2de94c ci: trigger apps-gitops build 2025-07-10 07:15:20 +00:00
woodpecker-bot
4ca22e8fec ci: trigger apps-gitops build 2025-07-10 07:15:09 +00:00
woodpecker-bot
d00756e714 ci: trigger apps-gitops build 2025-07-10 07:00:35 +00:00
woodpecker-bot
290e642385 ci: trigger apps-gitops build 2025-07-10 07:00:24 +00:00
woodpecker-bot
1f3aab040c ci: trigger apps-gitops build 2025-07-10 06:53:50 +00:00
woodpecker-bot
159ef4948f ci: trigger apps-gitops build 2025-07-10 06:52:29 +00:00
woodpecker-bot
71763c0dec ci: trigger apps-gitops build 2025-07-10 06:50:42 +00:00
woodpecker-bot
a27c8403d4 ci: trigger apps-gitops build 2025-07-10 06:48:00 +00:00
woodpecker-bot
a73c5593e5 ci: trigger apps-gitops build 2025-07-10 06:47:37 +00:00
woodpecker-bot
22ad006beb ci: trigger apps-gitops build 2025-07-10 06:36:03 +00:00
woodpecker-bot
9bb9b3796c ci: trigger apps-gitops build 2025-07-10 00:22:45 +00:00
woodpecker-bot
91c2b2bc81 ci: trigger apps-gitops build 2025-07-10 00:03:30 +00:00
woodpecker-bot
0b784a6a3b ci: trigger apps-gitops build 2025-07-09 23:59:56 +00:00
woodpecker-bot
9eed73463b ci: trigger apps-gitops build 2025-07-09 22:28:31 +00:00
woodpecker-bot
b1cffd7781 ci: trigger apps-gitops build 2025-07-09 22:22:17 +00:00
woodpecker-bot
2e72db8cee ci: trigger apps-gitops build 2025-07-09 22:16:03 +00:00
woodpecker-bot
e066826ead ci: trigger apps-gitops build 2025-07-09 22:12:52 +00:00
woodpecker-bot
218ad70824 ci: trigger apps-gitops build 2025-07-07 16:02:32 +00:00
woodpecker-bot
aacf94cdaf ci: trigger apps-gitops build 2025-07-07 06:13:15 +00:00
woodpecker-bot
af1424eeae ci: trigger apps-gitops build 2025-07-06 17:04:20 +00:00
woodpecker-bot
7ec5fa20e1 ci: trigger apps-gitops build 2025-07-06 16:48:00 +00:00
woodpecker-bot
161136a8fa ci: trigger apps-gitops build 2025-07-06 16:38:23 +00:00
woodpecker-bot
bdcb24af2f ci: trigger apps-gitops build 2025-07-06 16:19:47 +00:00
woodpecker-bot
a954fa770f ci: trigger apps-gitops build 2025-07-06 16:04:26 +00:00
woodpecker-bot
ee051bdcd4 ci: trigger apps-gitops build 2025-07-06 16:04:09 +00:00
woodpecker-bot
cddce5ed6e ci: trigger apps-gitops build 2025-07-06 16:03:30 +00:00
woodpecker-bot
cdedb6a271 ci: trigger apps-gitops build 2025-07-06 15:28:23 +00:00
woodpecker-bot
90f22490ce ci: trigger apps-gitops build 2025-07-06 15:28:19 +00:00
woodpecker-bot
e5cdd808d1 ci: trigger apps-gitops build 2025-07-06 15:28:00 +00:00
woodpecker-bot
9a14bff6a7 ci: trigger apps-gitops build 2025-07-06 15:23:00 +00:00
woodpecker-bot
8b4c539a61 ci: trigger apps-gitops build 2025-07-05 21:47:46 +00:00
9ec37f8c5f Trigger 2025-07-01 13:01:25 +03:00
824ac3f9d3 Trigger 2025-07-01 01:37:02 +03:00
7bb2bf6aef Trigger 2025-07-01 01:29:40 +03:00
fc502f6f3c Fix when condition 2025-06-30 04:09:21 +03:00
38f4ce02d2 Fix when condition 2025-06-30 04:07:00 +03:00
f95a7075c7 Debug 2025-06-30 03:22:38 +03:00
00dc7c0f10 Debug 2025-06-30 03:15:12 +03:00
7cd45f1ac8 Debug 2025-06-30 03:05:17 +03:00
e906eb7925 Debug 2025-06-30 02:34:55 +03:00
0cca0db22f Debug 2025-06-30 02:23:46 +03:00
fe992c7e96 Debug 2025-06-30 02:16:35 +03:00
dc197cf7cf Add more repos and debug the clone 2025-06-29 08:55:52 +03:00
f3a9572f0c Fix workflow py script 2025-06-29 08:49:53 +03:00
dc76d2c924 Fix workflow py script 2025-06-29 08:39:42 +03:00
c167c14e53 Fix workflow py script 2025-06-29 07:20:53 +03:00
51c6482065 Add github token 2025-06-29 07:15:23 +03:00
71b2a97112 Fix workflow py script 2025-06-29 06:58:38 +03:00
9b15f3e0f9 Add generate_monitor_workflow.py to .woodpecker.yaml 2025-06-29 06:53:53 +03:00
cee0a351b3 Trigger 2025-06-29 06:47:17 +03:00
b447f5310c Fix alerts step 2025-06-29 06:43:08 +03:00
3a31b54e0e Fix promethehus step 2025-06-29 06:41:14 +03:00
81895de62e Fix promethehus step 2025-06-29 06:39:19 +03:00
72671486af Remove PUSHOVER cred env 2025-06-29 06:37:04 +03:00
b777aa08ea Update the script to get the app name from monitoring.yaml
and remove the old script beacause i have github actions
2025-06-29 06:34:17 +03:00
522022f56d Update github 2025-06-27 19:30:50 +03:00
86762f076f Update script 2025-06-27 19:17:06 +03:00
2cea0d035f Trigger 2025-06-26 06:53:20 +03:00
b775642eb0 Back to prev ver 2025-06-26 06:05:40 +03:00
3fc1549d29 Set jobs per repo 2025-06-26 05:53:26 +03:00
71d489e2b1 Add auth options 2025-06-26 05:43:47 +03:00
3e6582b326 Set the python script to read and push also targets cofiguration 2025-06-26 04:20:22 +03:00
91c08d713f Fix python script 2025-06-26 02:50:38 +03:00
5d44bd0f15 Fix python script 2025-06-26 02:43:44 +03:00
151285b757 Fix python script 2025-06-26 02:20:57 +03:00
c94377d6bc Fix python script 2025-06-26 02:15:53 +03:00
8f1c05e732 Trigger the piipeline 2025-06-25 21:28:09 +03:00
d60e818efa Fix bash scrape script 2025-06-25 21:20:47 +03:00
5531c323f4 Trigger the piipeline 2025-06-25 21:10:35 +03:00
1a5df7ca8d Fix bash scrape script 2025-06-25 20:15:40 +03:00
67829fc608 Fix script name 2025-06-25 20:12:14 +03:00
b9f876b04e Fix script name 2025-06-25 20:11:03 +03:00
efceaae84f Fix python script path 2025-06-25 20:08:31 +03:00
38a9b3033a Fix script name 2025-06-25 20:06:11 +03:00
66f7d66f1c Add automation to scrape targets for prometheus 2025-06-25 20:04:52 +03:00
c37177b389 Add automation to scrape targets for prometheus 2025-06-25 20:03:23 +03:00
21b1ec5f6c Add more repos to scan except infra 2025-06-23 18:44:00 +03:00
4b7660ed04 Add more repos to scan 2025-06-23 18:42:37 +03:00
44d9b3e80b Scan multiple repositories 2025-06-23 04:11:02 +03:00
8c951298be Back manually to old version 2025-06-23 04:00:31 +03:00
ef74907be2 Seperate the script 2025-06-23 00:42:54 +03:00
1f19cd8c41 Seperate the script 2025-06-23 00:29:19 +03:00
48c113593e Seperate the script 2025-06-23 00:25:06 +03:00
b32f3d82fd Seperate the script 2025-06-23 00:24:12 +03:00
4c030c10a5 Seperate the script 2025-06-23 00:23:06 +03:00
ff52ebe83e Seperate the script 2025-06-23 00:19:23 +03:00
f475eb7fa4 Seperate the script 2025-06-23 00:16:36 +03:00
e892adf1d0 Seperate the script 2025-06-23 00:15:02 +03:00
0c172e38f9 Debug 2025-06-23 00:04:16 +03:00
89dbdac61c Debug 2025-06-23 00:01:37 +03:00
46c6e7dfee Debug 2025-06-22 23:53:12 +03:00
ee2621cda5 Debug 2025-06-22 23:24:24 +03:00
dc784141df Debug 2025-06-22 23:12:01 +03:00
9806220e10 Debug 2025-06-22 23:02:04 +03:00
6f3bd9a70c Test order values by sections 2025-06-22 22:59:55 +03:00
8ab1e56825 Test order values by sections 2025-06-22 22:50:36 +03:00
409ffe235b Test order values by sections 2025-06-22 22:49:19 +03:00
b346ced531 Test order values by sections 2025-06-22 22:48:03 +03:00
d63f8c4174 Test order values by sections 2025-06-22 22:46:26 +03:00
3b0be63a05 Test order values by sections 2025-06-22 22:45:09 +03:00
244b069b31 Test order values by sections 2025-06-22 22:43:50 +03:00
13b25ac71d Test order values by sections 2025-06-22 22:32:51 +03:00
2dd669be69 Test order values by sections 2025-06-22 22:30:05 +03:00
eafef6d665 Test order values by sections 2025-06-22 22:27:41 +03:00
7 changed files with 536 additions and 29 deletions

98
.trigger Normal file
View File

@ -0,0 +1,98 @@
# trigger at Sat Jul 5 21:47:46 UTC 2025
# trigger at Sun Jul 6 15:23:00 UTC 2025
# trigger at Sun Jul 6 15:28:00 UTC 2025
# trigger at Sun Jul 6 15:28:19 UTC 2025
# trigger at Sun Jul 6 15:28:23 UTC 2025
# trigger at Sun Jul 6 16:03:30 UTC 2025
# trigger at Sun Jul 6 16:04:09 UTC 2025
# trigger at Sun Jul 6 16:04:26 UTC 2025
# trigger at Sun Jul 6 16:19:47 UTC 2025
# trigger at Sun Jul 6 16:38:23 UTC 2025
# trigger at Sun Jul 6 16:48:00 UTC 2025
# trigger at Sun Jul 6 17:04:20 UTC 2025
# trigger at Mon Jul 7 06:13:15 UTC 2025
# trigger at Mon Jul 7 16:02:32 UTC 2025 by navix
# trigger at Wed Jul 9 22:12:52 UTC 2025 by my-apps
# trigger at Wed Jul 9 22:16:03 UTC 2025 by my-apps
# trigger at Wed Jul 9 22:22:17 UTC 2025 by my-apps
# trigger at Wed Jul 9 22:28:31 UTC 2025 by my-apps
# trigger at Wed Jul 9 23:59:56 UTC 2025 by my-apps
# trigger at Thu Jul 10 00:03:29 UTC 2025 by tunedrop
# trigger at Thu Jul 10 00:22:45 UTC 2025 by my-apps
# trigger at Thu Jul 10 06:36:03 UTC 2025 by my-apps
# trigger at Thu Jul 10 06:47:37 UTC 2025 by tunedrop
# trigger at Thu Jul 10 06:48:00 UTC 2025 by my-apps
# trigger at Thu Jul 10 06:50:42 UTC 2025 by my-apps
# trigger at Thu Jul 10 06:52:29 UTC 2025 by my-apps
# trigger at Thu Jul 10 06:53:50 UTC 2025 by my-apps
# trigger at Thu Jul 10 07:00:23 UTC 2025 by tunedrop
# trigger at Thu Jul 10 07:00:35 UTC 2025 by my-apps
# trigger at Thu Jul 10 07:15:08 UTC 2025 by tunedrop
# trigger at Thu Jul 10 07:15:20 UTC 2025 by my-apps
# trigger at Thu Jul 10 07:22:50 UTC 2025 by tunedrop
# trigger at Thu Jul 10 07:23:10 UTC 2025 by my-apps
# trigger at Thu Jul 10 08:55:06 UTC 2025 by tunedrop
# trigger at Thu Jul 10 08:55:16 UTC 2025 by my-apps
# trigger at Thu Jul 10 09:41:12 UTC 2025 by tunedrop
# trigger at Thu Jul 10 09:41:25 UTC 2025 by my-apps
# trigger at Thu Jul 10 09:55:33 UTC 2025 by my-apps
# trigger at Thu Jul 10 10:02:36 UTC 2025 by my-apps
# trigger at Thu Jul 10 13:25:09 UTC 2025 by tunedrop
# trigger at Thu Jul 10 13:48:03 UTC 2025 by tunedrop
# trigger at Thu Jul 10 13:48:06 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:32:57 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:34:10 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:38:07 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:40:13 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:45:49 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:50:21 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:54:15 UTC 2025 by my-apps
# trigger at Thu Jul 10 14:57:48 UTC 2025 by my-apps
# trigger at Fri Jul 11 06:49:00 UTC 2025 by observability-stack
# trigger at Fri Jul 11 06:58:46 UTC 2025 by observability-stack
# trigger at Fri Jul 11 07:00:23 UTC 2025 by observability-stack
# trigger at Fri Jul 11 07:04:38 UTC 2025 by observability-stack
# trigger at Fri Jul 11 12:53:46 UTC 2025 by observability-stack
# trigger at Fri Jul 11 12:56:58 UTC 2025 by observability-stack
# trigger at Fri Jul 11 13:51:55 UTC 2025 by my-apps
# trigger at Fri Jul 11 14:03:59 UTC 2025 by my-apps
# trigger at Fri Jul 11 15:48:39 UTC 2025 by my-apps
# trigger at Sat Jul 12 19:09:16 UTC 2025 by my-apps
# trigger at Sat Jul 12 20:06:17 UTC 2025 by my-apps
# trigger at Sat Jul 12 20:16:49 UTC 2025 by my-apps
# trigger at Sat Jul 12 20:30:27 UTC 2025 by my-apps
# trigger at Sat Jul 12 21:06:28 UTC 2025 by my-apps
# trigger at Sat Jul 12 21:56:52 UTC 2025 by my-apps
# trigger at Sat Jul 12 23:13:43 UTC 2025 by my-apps
# trigger at Sun Jul 13 02:23:04 UTC 2025 by labmap
# trigger at Sun Jul 13 02:23:08 UTC 2025 by my-apps
# trigger at Sun Jul 13 02:31:34 UTC 2025 by labmap
# trigger at Sun Jul 13 02:46:24 UTC 2025 by labmap
# trigger at Sun Jul 13 02:46:30 UTC 2025 by my-apps
# trigger at Sun Jul 13 02:50:24 UTC 2025 by labmap
# trigger at Wed Jul 16 15:47:57 UTC 2025 via navix
# trigger at Wed Jul 16 17:09:06 UTC 2025 by my-apps
# trigger at Wed Jul 16 17:32:06 UTC 2025 by my-apps
# trigger at Wed Jul 16 17:52:29 UTC 2025 by my-apps
# trigger at Wed Jul 16 23:58:14 UTC 2025 by my-apps
# trigger at Wed Jul 16 23:59:11 UTC 2025 by my-apps
# trigger at Thu Jul 17 00:00:37 UTC 2025 by my-apps
# trigger at Thu Jul 17 00:03:15 UTC 2025 by my-apps
# trigger at Thu Jul 17 00:15:33 UTC 2025 by my-apps
# trigger at Thu Jul 17 00:18:19 UTC 2025 by my-apps
# trigger at Thu Jul 17 00:48:15 UTC 2025 by my-apps
# trigger at Thu Jul 17 01:11:10 UTC 2025 by my-apps
# trigger at Thu Jul 17 01:40:35 UTC 2025 by my-apps
# trigger at Thu Jul 17 01:42:48 UTC 2025 by my-apps
# trigger at Fri Jul 18 08:20:08 UTC 2025 by my-apps
# trigger at Fri Jul 18 09:16:26 UTC 2025 by observability-stack
# trigger at Fri Jul 18 09:51:36 UTC 2025 by my-apps
# trigger at Fri Jul 18 09:52:44 UTC 2025 by my-apps
# trigger at Fri Jul 18 09:58:17 UTC 2025 by my-apps
# trigger at Fri Jul 18 10:03:51 UTC 2025 by my-apps
# trigger at Fri Jul 18 10:43:02 UTC 2025 by my-apps
# trigger at Fri Jul 18 10:45:49 UTC 2025 by my-apps
# trigger at Fri Jul 18 10:47:31 UTC 2025 by observability-stack
# trigger at Fri Jul 18 16:18:40 UTC 2025 by my-apps
# trigger at Sat Jul 19 18:48:40 UTC 2025 by my-apps
# trigger at Sat Jul 19 18:51:53 UTC 2025 by my-apps

View File

@ -1,10 +1,12 @@
steps:
sync-cloudflare:
when:
branch: [master]
name: Scan Apps and Update Cloudflared
image: alpine
commands:
- apk add --no-cache git bash curl yq
- bash automation/cloudflared-sync.sh
- bash automation/cloudflared/cloudflared-sync.sh
environment:
GIT_TOKEN:
from_secret: GIT_TOKEN
@ -12,4 +14,51 @@ steps:
from_secret: CLOUDFLARE_API_TOKEN
CLOUDFLARE_ZONE_ID:
from_secret: CLOUDFLARE_ZONE_ID
sync-prometheus-scrapes:
when:
branch: [master]
name: Update Prometheus Additional Scrapes
image: python:3.11-alpine
commands:
- apk add --no-cache git bash
- pip install ruamel.yaml
- bash automation/prometheus/scrape-sync.sh
environment:
GIT_TOKEN:
from_secret: GIT_TOKEN
external-url-alerts:
when:
branch: [master]
name: External Alert Checks (Pushover)
image: python:3.11-alpine
commands:
- apk add --no-cache git curl bash
- pip install pyyaml requests
- python3 automation/alerts/generate_monitor_workflow.py
environment:
GITHUB_TOKEN:
from_secret: GITHUB_TOKEN
sync-uptime-kuma:
when:
branch: [master]
name: Sync Uptime Kuma Monitors
image: python:3.11-alpine
commands:
- apk add --no-cache git curl bash
- pip install pyyaml requests
- pip install uptime_kuma_api
- python3 automation/uptime-kuma/sync_kuma.py
environment:
GIT_TOKEN:
from_secret: GIT_TOKEN
KUMA_URL:
from_secret: KUMA_URL # e.g. https://kuma.dvirlabs.com
KUMA_USERNAME:
from_secret: KUMA_USERNAME # admin or your user
KUMA_PASSWORD:
from_secret: KUMA_PASSWORD

View File

@ -0,0 +1,124 @@
import os
import yaml
import glob
import subprocess
# 🔁 Repos to scan for monitoring.yaml files
REPOS = {
"dev-tools": "https://git.dvirlabs.com/dvirlabs/dev-tools.git",
"infra": "https://git.dvirlabs.com/dvirlabs/infra.git",
"observability-stack": "https://git.dvirlabs.com/dvirlabs/observability-stack.git",
"sandbox": "https://git.dvirlabs.com/dvirlabs/sandbox.git",
"lab-monitor": f"https://{os.getenv('GITHUB_TOKEN')}@github.com/dvirlabs/lab-monitor.git",
}
BASE_DIR = "./repos"
REPO_PATH = os.path.join(BASE_DIR, "lab-monitor")
WORKFLOW_FILE = os.path.join(REPO_PATH, ".github/workflows/monitor.yml")
def clone_repos():
os.makedirs(BASE_DIR, exist_ok=True)
for name, url in REPOS.items():
repo_path = os.path.join(BASE_DIR, name)
if os.path.exists(repo_path):
subprocess.run(["git", "-C", repo_path, "pull"])
else:
subprocess.run(["git", "clone", url, repo_path])
def extract_urls():
urls = []
for repo in REPOS:
if repo == "lab-monitor":
continue
manifests_path = os.path.join(BASE_DIR, repo, "manifests")
if not os.path.isdir(manifests_path):
continue
# recursively find all monitoring.yaml
for path in glob.glob(f"{manifests_path}/**/monitoring.yaml", recursive=True):
with open(path) as f:
cfg = yaml.safe_load(f)
if not cfg.get("enabled"):
continue
ext = cfg.get("external_check")
if not ext or not ext.get("url"):
continue
app_name = cfg.get("app") or os.path.basename(os.path.dirname(path))
urls.append({
"name": app_name,
"url": ext["url"]
})
return urls
def generate_workflow(urls):
os.makedirs(os.path.dirname(WORKFLOW_FILE), exist_ok=True)
with open(WORKFLOW_FILE, "w") as f:
f.write("""name: Monitor Lab URLs
on:
schedule:
- cron: "*/5 * * * *"
workflow_dispatch:
jobs:
monitor:
runs-on: ubuntu-latest
steps:
- name: Check services
run: |
check_url() {
URL=$1
NAME=$2
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
TIME=$(date "+%Y-%m-%d %H:%M:%S")
if [[ "$STATUS" == "502" || "$STATUS" == "404" ]]; then
curl -s \\
--form-string "token=${{ secrets.PUSHOVER_TOKEN }}" \\
--form-string "user=${{ secrets.PUSHOVER_USER }}" \\
--form-string "title=🔴 $NAME Alert" \\
--form-string "message=⚠️ $URL is down ($STATUS) at $TIME" \\
--form-string "priority=2" \\
--form-string "retry=60" \\
--form-string "expire=600" \\
https://api.pushover.net/1/messages.json
else
echo "✅ $NAME is up: $STATUS"
fi
}
""")
for item in urls:
f.write(f' check_url "{item["url"]}" "{item["name"]}"\n')
def push_workflow():
subprocess.run(["ls", "-l", REPO_PATH])
# Detect default branch
result = subprocess.run(
["git", "-C", REPO_PATH, "symbolic-ref", "refs/remotes/origin/HEAD"],
capture_output=True, text=True, check=True
)
default_branch = result.stdout.strip().split("/")[-1]
subprocess.run(["git", "-C", REPO_PATH, "checkout", default_branch], check=True)
subprocess.run(["git", "-C", REPO_PATH, "config", "user.name", "lab-monitor-bot"])
subprocess.run(["git", "-C", REPO_PATH, "config", "user.email", "bot@dvirlabs.com"])
subprocess.run(["git", "-C", REPO_PATH, "add", ".github/workflows/monitor.yml"])
subprocess.run(["git", "-C", REPO_PATH, "commit", "-m", "update monitor.yml from monitoring.yaml"], check=False)
result = subprocess.run(["git", "-C", REPO_PATH, "push", "--set-upstream", "origin", default_branch])
if result.returncode != 0:
raise Exception(f"❌ Failed to push monitor.yml to origin/{default_branch}")
if __name__ == "__main__":
clone_repos()
urls = extract_urls()
generate_workflow(urls)
push_workflow()

View File

@ -2,8 +2,6 @@
set -e
# 📦 Ensure apk installs: yq, jq, git, bash, curl
# Required for pipeline: alpine image + apk add --no-cache git bash curl yq jq
apk add --no-cache git bash curl yq jq
echo "🔍 Scanning for apps with cname.yaml..."
@ -13,41 +11,54 @@ rm -rf .tmp-repos
mkdir -p .tmp-repos
# === REPO CONFIG ===
SANDBOX_REPO_URL="https://git.dvirlabs.com/dvirlabs/sandbox.git"
REPOS=(
"sandbox|https://git.dvirlabs.com/dvirlabs/sandbox.git"
"dev-tools|https://git.dvirlabs.com/dvirlabs/dev-tools.git"
"my-apps|https://git.dvirlabs.com/dvirlabs/my-apps.git"
"observability-stack|https://git.dvirlabs.com/dvirlabs/observability-stack.git"
)
INFRA_REPO_URL="https://${GIT_TOKEN}@git.dvirlabs.com/dvirlabs/infra.git"
SANDBOX_CLONE=".tmp-repos/sandbox"
INFRA_CLONE=".tmp-repos/infra"
GENERATED_FILE="$(pwd)/generated-values/cloudflared-values.yaml"
ORIGINAL_FILE="$INFRA_CLONE/manifests/cloudflared/values.yaml"
MERGED_FILE="$INFRA_CLONE/manifests/cloudflared/values.yaml"
# === STEP 1: Clone Repos ===
echo "📦 Cloning sandbox-apps..."
git clone --depth=1 "$SANDBOX_REPO_URL" "$SANDBOX_CLONE"
echo "📦 Cloning target app repos..."
for entry in "${REPOS[@]}"; do
SECTION_NAME="${entry%%|*}"
REPO_URL="${entry##*|}"
REPO_DIR=".tmp-repos/$SECTION_NAME"
git clone --depth=1 "$REPO_URL" "$REPO_DIR"
done
echo "📦 Cloning infra..."
echo "📦 Cloning infra repo..."
git clone --depth=1 "$INFRA_REPO_URL" "$INFRA_CLONE"
ls -l .tmp-repos/
# === STEP 2: Extract Generated CNAMEs from sandbox ===
echo "⚙️ Generating sandbox ingress list..."
cat <<EOF > "$GENERATED_FILE"
ingress: []
EOF
# === STEP 2: Extract CNAMEs from all repos ===
echo "⚙️ Generating merged ingress list..."
echo "ingress: []" > "$GENERATED_FILE"
find "$SANDBOX_CLONE/manifests" -name cname.yaml | while read -r cname_file; do
app_name=$(basename "$(dirname "$cname_file")")
enabled=$(yq '.enabled' "$cname_file")
for entry in "${REPOS[@]}"; do
SECTION_NAME="${entry%%|*}"
REPO_DIR=".tmp-repos/$SECTION_NAME"
if [[ "$enabled" == "true" ]]; then
hostname=$(yq '.hostname' "$cname_file")
service="http://${app_name}.sandbox.svc.cluster.local:80"
find "$REPO_DIR/manifests" -name cname.yaml | while read -r cname_file; do
app_name=$(basename "$(dirname "$cname_file")")
enabled=$(yq '.enabled' "$cname_file")
echo "✅ Found $hostname$service"
if [[ "$enabled" == "true" ]]; then
hostname=$(yq '.hostname' "$cname_file")
service="http://${app_name}.${SECTION_NAME}.svc.cluster.local:80"
yq eval ".ingress += [{\"hostname\": \"$hostname\", \"service\": \"$service\"}]" -i "$GENERATED_FILE"
fi
echo "✅ Found $hostname$service in $SECTION_NAME"
yq eval ".ingress += [{\"hostname\": \"$hostname\", \"service\": \"$service\", \"_section\": \"$SECTION_NAME\"}]" -i "$GENERATED_FILE"
fi
done
done
echo "📄 Generated Ingress:"
@ -59,7 +70,6 @@ echo "🔁 Merging new entries into: $ORIGINAL_FILE"
TEMP_FILE=$(mktemp)
cp "$ORIGINAL_FILE" "$TEMP_FILE"
# Loop through new entries and append only if hostname not exists
yq eval '.ingress' "$GENERATED_FILE" | yq -o=json | jq -c '.[]' | while read -r new_entry; do
hostname=$(echo "$new_entry" | jq -r '.hostname')
service=$(echo "$new_entry" | jq -r '.service')
@ -89,14 +99,14 @@ git remote set-url origin "https://${GIT_TOKEN}@git.dvirlabs.com/dvirlabs/infra.
if ! git diff --quiet manifests/cloudflared/values.yaml; then
git add manifests/cloudflared/values.yaml
git commit -m "chore(cloudflared): auto-merge CNAME entries from sandbox"
git commit -m "chore(cloudflared): auto-merge CNAME entries from all repos"
git push origin HEAD
echo "✅ Changes pushed successfully."
else
echo " No changes to commit."
fi
# === STEP 5: Create CNAME records in Cloudflare ===
# === STEP 6: Create CNAME records in Cloudflare ===
ls -l
pwd
ls -l "$GENERATED_FILE"
@ -104,15 +114,12 @@ echo "🌐 Creating CNAME records in Cloudflare..."
CLOUDFLARE_API="https://api.cloudflare.com/client/v4"
TARGET="b50bbf48-0a2f-47ce-b73e-336b6718318b.cfargotunnel.com"
# Load required secrets
: "${CLOUDFLARE_API_TOKEN:?CLOUDFLARE_API_TOKEN not set}"
: "${CLOUDFLARE_ZONE_ID:?CLOUDFLARE_ZONE_ID not set}"
# Check and create each CNAME
yq eval '.ingress' "$GENERATED_FILE" | yq eval -o=json '.' - | jq -c '.[]' | while read -r record; do
yq eval '.ingress' "$GENERATED_FILE" | yq -o=json | jq -c '.[]' | while read -r record; do
name=$(echo "$record" | jq -r '.hostname' | sed 's/\.dvirlabs\.com//')
# Check if already exists
exists=$(curl -s -X GET "$CLOUDFLARE_API/zones/$CLOUDFLARE_ZONE_ID/dns_records?type=CNAME&name=$name.dvirlabs.com" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" -H "Content-Type: application/json" | jq '.result | length')

View File

@ -0,0 +1,93 @@
import os
from ruamel.yaml import YAML
from ruamel.yaml.scalarstring import LiteralScalarString
from pathlib import Path
from io import StringIO
REPOS = {
"dev-tools": "https://git.dvirlabs.com/dvirlabs/dev-tools.git",
"infra": "https://git.dvirlabs.com/dvirlabs/infra.git",
"observability-stack": "https://git.dvirlabs.com/dvirlabs/observability-stack.git",
"my-apps": "https://git.dvirlabs.com/dvirlabs/my-apps.git",
}
TMP_DIR = ".tmp-repos"
OUTPUT_FILE = os.path.join(
TMP_DIR,
"observability-stack/manifests/prometheus-scrape-secret/additional-scrape-configs.yaml"
)
os.makedirs(TMP_DIR, exist_ok=True)
def collect_jobs():
jobs = []
for name, url in REPOS.items():
repo_path = os.path.join(TMP_DIR, name)
if not os.path.exists(repo_path):
os.system(f"git clone --depth 1 {url} {repo_path}")
for path in Path(repo_path, "manifests").glob("*/monitoring.yaml"):
with open(path) as f:
data = YAML().load(f)
if not data.get("enabled") or "targets" not in data:
continue
job = {
"job_name": path.parent.name, # Use app folder name
"static_configs": [{"targets": data["targets"]}]
}
# Optional auth fields
if "basic_auth" in data:
job["basic_auth"] = data["basic_auth"]
if "bearer_token" in data:
job["bearer_token"] = data["bearer_token"]
if "bearer_token_file" in data:
job["bearer_token_file"] = data["bearer_token_file"]
if "metrics_path" in data:
job["metrics_path"] = data["metrics_path"]
if "scheme" in data:
job["scheme"] = data["scheme"]
jobs.append(job)
return jobs
def write_scrape_config(jobs, output_file):
stream = StringIO()
yaml_writer = YAML()
yaml_writer.default_flow_style = False
yaml_writer.dump(jobs, stream)
scrape_yaml = "# This content will be auto-updated by the pipeline\n" + stream.getvalue()
secret = {
"apiVersion": "v1",
"kind": "Secret",
"metadata": {
"name": "prometheus-additional-scrape-configs",
"namespace": "monitoring",
"labels": {
"app.kubernetes.io/name": "prometheus"
}
},
"type": "Opaque",
"stringData": {
"additional-scrape-configs.yaml": LiteralScalarString(scrape_yaml)
}
}
os.makedirs(os.path.dirname(output_file), exist_ok=True)
with open(output_file, "w") as f:
yaml_writer.dump(secret, f)
if __name__ == "__main__":
jobs = collect_jobs()
write_scrape_config(jobs, OUTPUT_FILE)
print(f"✅ Generated: {OUTPUT_FILE}")

View File

@ -0,0 +1,26 @@
#!/bin/bash
set -e
echo "🔄 Cloning repositories..."
REPOS=("dev-tools" "infra" "observability-stack")
rm -rf .tmp-repos
mkdir -p .tmp-repos
for REPO in "${REPOS[@]}"; do
git clone https://${GIT_TOKEN}@git.dvirlabs.com/dvirlabs/${REPO}.git .tmp-repos/${REPO}
done
echo "⚙️ Generating additional-scrape-configs.yaml..."
python3 automation/prometheus/generate_scrape_config.py
cd .tmp-repos/observability-stack
git config user.name "auto-sync"
git config user.email "sync@dvirlabs.com"
if git diff --quiet; then
echo "✅ No changes to commit."
else
git add manifests/prometheus-scrape-secret/additional-scrape-configs.yaml
git commit -m "auto: update Prometheus scrape config"
git push origin master
fi

View File

@ -0,0 +1,110 @@
import os
import yaml
import subprocess
from uptime_kuma_api import UptimeKumaApi, MonitorType, AuthMethod
KUMA_URL = os.environ["KUMA_URL"].rstrip("/")
KUMA_USERNAME = os.environ["KUMA_USERNAME"]
KUMA_PASSWORD = os.environ["KUMA_PASSWORD"]
GIT_TOKEN = os.environ["GIT_TOKEN"]
GIT_REPOS = [
"https://git.dvirlabs.com/dvirlabs/dev-tools.git",
"https://git.dvirlabs.com/dvirlabs/infra.git",
"https://git.dvirlabs.com/dvirlabs/observability-stack.git",
"https://git.dvirlabs.com/dvirlabs/my-apps.git"
]
def find_monitoring_files(clone_path):
for root, _, files in os.walk(clone_path):
for file in files:
if file == "monitoring.yaml":
yield os.path.join(root, file)
def sync_monitor(api, path):
with open(path, "r") as f:
config = yaml.safe_load(f)
kuma_cfg = config.get("uptime_kuma")
if not kuma_cfg or not kuma_cfg.get("enabled"):
return
name = config.get("app") or os.path.basename(os.path.dirname(path))
url = kuma_cfg["url"]
tag_name = kuma_cfg.get("tag", "uncategorized")
print(f"🔄 Syncing monitor: {name}")
# Check if monitor already exists
for monitor in api.get_monitors():
if monitor["name"] == name:
print(f"⏭️ Monitor '{name}' already exists — skipping")
return
# Get or create tag safely
tag_id = None
for tag in api.get_tags():
if tag["name"] == tag_name:
tag_id = tag["id"]
break
if not tag_id:
tag_resp = api.add_tag(name=tag_name, color="#2196f3")
tag_id = tag_resp.get("tagID")
if not tag_id:
for tag in api.get_tags():
if tag["name"] == tag_name:
tag_id = tag["id"]
break
if not tag_id:
raise Exception(f"❌ Failed to create or find tag: {tag_name}")
# Prepare Basic Auth using Kuma credentials
auth_kwargs = {
"authMethod": AuthMethod.HTTP_BASIC,
"basic_auth_user": KUMA_USERNAME,
"basic_auth_pass": KUMA_PASSWORD,
}
# Add the monitor
resp = api.add_monitor(
type=MonitorType.HTTP,
name=name,
url=url,
interval=60,
retryInterval=30,
resendInterval=0,
maxretries=3,
timeout=30,
upsideDown=False,
ignoreTls=False,
maxredirects=10,
accepted_statuscodes=["200-299"],
expiryNotification=True,
method="GET",
**auth_kwargs
)
monitor_id = resp["monitorID"]
api.add_monitor_tag(tag_id=tag_id, monitor_id=monitor_id, value="")
print(f"✅ Synced monitor '{name}' with tag '{tag_name}'")
def clone_repo(url, dest):
print(f"📥 Cloning {url} into {dest}")
subprocess.run(["rm", "-rf", dest], check=True)
subprocess.run(["git", "clone", "--depth=1", url.replace("https://", f"https://{GIT_TOKEN}@"), dest], check=True)
def main():
api = UptimeKumaApi(KUMA_URL)
api.login(KUMA_USERNAME, KUMA_PASSWORD)
for repo in GIT_REPOS:
name = repo.split("/")[-1].replace(".git", "")
path = f"/tmp/repos/{name}"
clone_repo(repo, path)
for yml in find_monitoring_files(path):
sync_monitor(api, yml)
if __name__ == "__main__":
main()