Compare commits

...

367 commits

Author SHA1 Message Date
Girish Ramakrishnan 56cb2ba6b2 Version 1.33.0 2024-05-27 15:21:25 +02:00
Girish Ramakrishnan 08868f64d4 Update test packages 2024-05-27 15:10:41 +02:00
Girish Ramakrishnan d7c3ae38fe Update Gitea to 1.22.0 2024-05-27 14:34:50 +02:00
Johannes Zellner 9b7aedc025 Bump version 2024-04-16 09:58:54 +02:00
Johannes Zellner 70c144095a Update test deps 2024-04-16 09:50:50 +02:00
Johannes Zellner 69df4d1e0f Update to 1.21.11 2024-04-16 09:50:39 +02:00
Johannes Zellner 07982e33aa Bump version 2024-03-26 08:52:51 +01:00
Johannes Zellner 59266f120a Update to 1.21.10 2024-03-26 08:36:00 +01:00
Johannes Zellner c03ec98517 Bump version 2024-03-22 10:25:12 +01:00
Johannes Zellner 885a32e340 Update test deps 2024-03-22 10:08:01 +01:00
Johannes Zellner 459646512e Update to 1.21.9 2024-03-22 10:07:33 +01:00
Girish Ramakrishnan 5d44c03115 Version 1.32.7 2024-03-13 09:43:02 +01:00
Girish Ramakrishnan 4961b7c4c8 Update test packages 2024-03-13 09:35:46 +01:00
Girish Ramakrishnan cfc5ab5a37 Update Gitea to 1.21.8 2024-03-13 09:15:06 +01:00
Johannes Zellner 6259356ae2 Bump version 2024-02-26 15:54:38 +01:00
Johannes Zellner 813f32d310 Remove ldap to openid migration code 2024-02-26 14:38:06 +01:00
Johannes Zellner 162054ef99 Update to 1.21.7 2024-02-26 11:51:36 +01:00
Johannes Zellner 18ad051734 Update test deps 2024-02-23 11:14:51 +01:00
Johannes Zellner ea6a6b84d9 Update to 1.21.6 2024-02-23 11:14:37 +01:00
Johannes Zellner ab0ab3c11c Bump version 2024-02-01 14:36:55 +01:00
Johannes Zellner 84c505ad43 Make tests language independent 2024-02-01 14:27:07 +01:00
Johannes Zellner 366e8560b0 Update test deps 2024-02-01 14:25:08 +01:00
Johannes Zellner 0a81a63829 Update to 1.21.5 2024-02-01 14:24:07 +01:00
Girish Ramakrishnan 4fc500fca6 Version 1.32.4 2024-01-17 13:10:29 +01:00
Girish Ramakrishnan 8393426612 Update Gitea to 1.21.4 2024-01-17 11:33:36 +01:00
Johannes Zellner a08dd3ee47 Bump version 2023-12-21 12:19:04 +01:00
Johannes Zellner 63fce06157 Update to 1.21.3 2023-12-21 11:41:17 +01:00
Johannes Zellner d0c1e65913 Bump version 2023-12-12 12:52:51 +01:00
Johannes Zellner 88732c63c9 Update test deps 2023-12-12 12:38:15 +01:00
Johannes Zellner d62cca74cc Update to 1.21.2 2023-12-12 12:38:00 +01:00
Johannes Zellner f96533530f Bump version 2023-11-27 08:56:00 +01:00
Johannes Zellner 3e95af2256 Fixup tests 2023-11-15 12:50:25 +01:00
Johannes Zellner 90693772de Release is without .0 2023-11-14 16:51:02 +01:00
Johannes Zellner 092f2089f2 Update test deps 2023-11-14 16:20:29 +01:00
Johannes Zellner 16ffe8295f Bump version 2023-11-14 16:19:34 +01:00
Girish Ramakrishnan 61d2691859 Version 1.31.0 2023-10-20 10:15:28 +02:00
Girish Ramakrishnan 19c4b2a7ff Update test packages 2023-10-20 09:38:17 +02:00
Girish Ramakrishnan 5c7c228ff4 Update base image to 4.2.0 2023-10-20 09:36:54 +02:00
Johannes Zellner 62b03b02d5 Fixup test 2023-10-03 17:23:13 +02:00
Johannes Zellner 7dd4447091 Bump version 2023-10-03 17:12:30 +02:00
Girish Ramakrishnan d23339e2e3 Version 1.30.0 2023-09-28 21:26:45 +05:30
Girish Ramakrishnan 32daf79b3b set login_source to ls.id and not user id 2023-09-28 20:35:41 +05:30
Girish Ramakrishnan 2d0a1f14e6 setup_ldap_source is not needed 2023-09-28 17:18:10 +05:30
Vladimir D bbae02fa50 minBoxVersion set to 7.5.1, make migrate_ldap_users_to_oidc() always running on startup 2023-09-26 16:19:24 +04:00
Vladimir D e176d6c705 LDAP to OIDC auth migration, tests refactored 2023-09-26 15:30:53 +04:00
Johannes Zellner dd44f81d04 Bump version 2023-09-08 12:21:03 +02:00
Johannes Zellner a4b0af1f02 Bump version 2023-08-21 09:24:46 +02:00
Girish Ramakrishnan 4b15736f81 Version 1.29.2 2023-07-29 20:13:02 +05:30
Girish Ramakrishnan 8876fedd40 Update test 2023-07-29 20:08:07 +05:30
Girish Ramakrishnan 65df2c54da settings have changed 2023-07-29 20:08:02 +05:30
Girish Ramakrishnan 245b93ea02 Update gitea to 1.20.2 2023-07-29 19:10:04 +05:30
Johannes Zellner 8596073c51 Update test deps 2023-07-22 12:56:25 +02:00
Johannes Zellner 6a85b0cea2 Bump version 2023-07-22 12:47:27 +02:00
Girish Ramakrishnan 5205ba5e83 fix test 2023-07-17 10:22:14 +05:30
Girish Ramakrishnan f668f4f3ab Version 1.29.0 2023-07-17 10:06:18 +05:30
Girish Ramakrishnan 7eca682cec Update gitea to 1.20.0 2023-07-17 08:47:26 +05:30
Girish Ramakrishnan f9f867ca89 Version 1.28.4 2023-07-05 13:29:20 +05:30
Girish Ramakrishnan 9580ece3a1 Update gitea to 1.19.4 2023-07-05 12:51:15 +05:30
Girish Ramakrishnan f2818dc4f9 Version 1.28.3 2023-05-04 09:34:42 +02:00
Girish Ramakrishnan 35ac25e140 Update test packages 2023-05-04 09:26:06 +02:00
Girish Ramakrishnan 3cb4caaeac Update Gitea to 1.19.3 2023-05-04 09:24:46 +02:00
Girish Ramakrishnan 55d2b0d320 Version 1.28.2 2023-04-28 09:19:59 +02:00
Girish Ramakrishnan 8f55a89978 Update test packages 2023-04-28 09:19:54 +02:00
Girish Ramakrishnan 5240330992 Update Gitea to 1.19.2 2023-04-28 09:10:08 +02:00
Girish Ramakrishnan 95fc696bcd Version 1.28.1 2023-04-13 10:48:55 +02:00
Girish Ramakrishnan 77b3e2b033 Update Gitea to 1.19.1 2023-04-13 10:21:10 +02:00
Johannes Zellner 5fbd69679c Update test deps 2023-03-20 10:46:10 +01:00
Johannes Zellner 2c837eeb8f Bump version 2023-03-20 10:44:51 +01:00
Girish Ramakrishnan 040fcf3386 Fixup post install 2023-03-08 18:54:42 +01:00
Girish Ramakrishnan 58298a6b20 Version 1.27.1 2023-02-22 11:02:42 +01:00
Girish Ramakrishnan 6b2e221264 Update Gitea to 1.8.5 2023-02-22 10:46:53 +01:00
Girish Ramakrishnan 1e9964fe49 Version 1.27.0 2023-02-20 11:00:55 +01:00
Girish Ramakrishnan 23fa45cbc8 display name support 2023-02-20 10:35:53 +01:00
Girish Ramakrishnan 572226155c Version 1.26.4 2023-02-20 10:30:57 +01:00
Girish Ramakrishnan 50ec10f0ae Update test packages 2023-02-20 10:30:47 +01:00
Girish Ramakrishnan a99dfc8e2a Update Gitea to 1.18.4 2023-02-20 10:19:21 +01:00
Girish Ramakrishnan 6bbea49e07 Version 1.26.3 2023-01-24 10:08:33 +01:00
Girish Ramakrishnan f53e024f69 Update Gitea to 1.18.3 2023-01-24 09:27:05 +01:00
Johannes Zellner 68fe1f97d0 Update test deps 2023-01-20 12:19:16 +01:00
Johannes Zellner 896336f7c2 Bump version 2023-01-20 12:19:08 +01:00
Johannes Zellner ea91e676cf Update test deps 2023-01-18 12:27:20 +01:00
Johannes Zellner 94e9181ced Bump version 2023-01-18 12:27:02 +01:00
Johannes Zellner 8808e8c0b2 Update test deps 2022-12-30 09:47:56 +01:00
Johannes Zellner d00238c1ad Bump version 2022-12-30 09:47:38 +01:00
Girish Ramakrishnan 07442c675c Version 1.25.1 2022-12-28 10:59:38 +01:00
Girish Ramakrishnan ed1846cd28 Trust reverse proxy IP 2022-12-28 10:53:57 +01:00
Girish Ramakrishnan e10793d421 Version 1.25.0 2022-12-23 12:05:59 +01:00
Girish Ramakrishnan 9eea9fe0be Update base image to 4.0.0 2022-12-23 11:14:36 +01:00
Girish Ramakrishnan 298cb33e86 Update Gitea to 1.17.4 2022-12-23 11:14:20 +01:00
Johannes Zellner 89240fc070 Update test deps 2022-11-29 11:44:39 +01:00
Johannes Zellner 6b2af3eab4 Bump version 2022-11-29 11:44:25 +01:00
Johannes Zellner 32eebcff8f Initial support for auto signing via gnupg 2022-11-08 16:31:08 +01:00
Girish Ramakrishnan 166dac9b12 Version 1.24.4 2022-11-07 15:49:23 +01:00
Girish Ramakrishnan 26db0254c7 Update test packages 2022-11-07 15:47:08 +01:00
Girish Ramakrishnan 35e3edaa6c Change default root user email 2022-11-07 15:41:11 +01:00
Girish Ramakrishnan 93370fa502 Version 1.24.3 2022-10-16 16:21:04 +02:00
Girish Ramakrishnan 3398da164d Update test packages 2022-10-16 16:01:46 +02:00
Girish Ramakrishnan 6ce20e9e75 Update Gitea to 1.17.3 2022-10-16 15:59:01 +02:00
Johannes Zellner cb14653680 Bump version 2022-09-07 12:51:31 +02:00
Johannes Zellner 46982e68f7 Fixup tests 2022-08-19 16:31:54 +02:00
Johannes Zellner a2d2edabaf Fixup test 2022-08-19 16:18:45 +02:00
Johannes Zellner 7261adc546 Update test deps 2022-08-19 10:48:02 +02:00
Johannes Zellner a338dc215a Bump version 2022-08-19 10:47:45 +02:00
Girish Ramakrishnan a12cf5f70b not sure why commented out 2022-07-31 08:21:18 +02:00
Girish Ramakrishnan 730611229e Version 1.24.0 2022-07-31 08:13:30 +02:00
Girish Ramakrishnan fcb4caff89 Fixup tests 2022-07-31 08:12:39 +02:00
Girish Ramakrishnan 200dc7676f Update test packages 2022-07-31 07:55:51 +02:00
Girish Ramakrishnan 320fbf86d9 Update gitea to 1.17.0 2022-07-31 07:49:17 +02:00
Girish Ramakrishnan 04d857e88b Version 1.23.12 2022-05-16 13:44:40 -07:00
Girish Ramakrishnan e2f6fb52b3 Update gitea to 1.16.8 2022-05-16 12:25:14 -07:00
Johannes Zellner 4224cc9692 Add missing versions 2022-05-02 11:28:50 +02:00
Johannes Zellner d416ec0dc7 Update test deps 2022-05-02 11:08:36 +02:00
Johannes Zellner ea5ff4e574 Bump version for 1.16.7 2022-05-02 11:08:20 +02:00
Girish Ramakrishnan 27720786bf Update test packages 2022-04-20 17:32:30 -07:00
Girish Ramakrishnan f48a4c4d72 Update gitea to 1.16.6 2022-04-20 17:27:52 -07:00
Johannes Zellner 65fbb9cb7d Bump version for 1.16.5 2022-03-24 10:38:58 +01:00
Johannes Zellner 63bfe621d1 Update test deps 2022-03-15 10:47:12 +01:00
Johannes Zellner a6688ede57 Bump version for 1.16.4 2022-03-15 10:47:00 +01:00
Johannes Zellner 7f2646bfb3 Update test deps 2022-03-04 12:36:27 +01:00
Johannes Zellner aafc1968ec Bump version for 1.16.3 2022-03-04 12:35:54 +01:00
Girish Ramakrishnan 2f85d288e0 Version 1.23.6 2022-02-24 19:46:34 -08:00
Girish Ramakrishnan e5296ab5ee Fixup tests 2022-02-24 19:42:35 -08:00
Girish Ramakrishnan 77e05f56bf Update Gitea 1.16.2 2022-02-24 19:17:02 -08:00
Girish Ramakrishnan 4eab21379e Listen on IPv6 as well
luckily, sshd does not error if the interface has no IPv6 address
2022-02-09 20:15:27 -08:00
Girish Ramakrishnan 1da61b548f Version 1.23.5 2022-02-06 11:41:39 -08:00
Girish Ramakrishnan 76df0b0113 Update test packages 2022-02-06 11:22:22 -08:00
Girish Ramakrishnan d9fa8399fe Update Gitea to 1.16.1 2022-02-06 10:24:28 -08:00
Johannes Zellner aa0b00cd1e Fixup tests 2022-01-31 14:08:14 +01:00
Johannes Zellner 8999bc9112 --name is deprecated in favor of --username 2022-01-31 13:45:10 +01:00
Johannes Zellner a7734d29fb login source table schema has changed 2022-01-31 13:43:01 +01:00
Johannes Zellner b667082cec Bump version for 1.16.0 2022-01-31 12:26:31 +01:00
Johannes Zellner 9abcb0c5ec Update test deps 2022-01-30 17:56:40 +01:00
Johannes Zellner 3f6593c676 Bump version for 1.15.11 2022-01-30 17:56:26 +01:00
Johannes Zellner 5f7b0457db Update test deps 2022-01-17 10:43:26 +01:00
Johannes Zellner 7adfed915b Bump version for 1.15.10 2022-01-17 10:43:10 +01:00
Johannes Zellner 2af74e6817 Update to lockfile v2 2022-01-02 10:16:08 +01:00
Johannes Zellner 57ad6d200a Bump version for 1.15.9 2022-01-02 10:15:55 +01:00
Girish Ramakrishnan 4df53960f5 Version 1.23.1 2021-12-20 21:37:17 -08:00
Girish Ramakrishnan 2fb28433fb Update Gitea to 1.15.8 2021-12-20 21:25:21 -08:00
Girish Ramakrishnan 6874ea9d46 Version 1.23.0 2021-12-03 10:36:21 -08:00
Girish Ramakrishnan 2c284d36fa Update test packages 2021-12-03 10:36:16 -08:00
Girish Ramakrishnan 83da665570 add asciidoctor and pandoc 2021-12-03 10:05:28 -08:00
Girish Ramakrishnan a427a098fe Update gitea to 1.15.7 2021-12-03 09:44:35 -08:00
Girish Ramakrishnan eb4f29375b Merge branch 'master' into 'master'
markup: add jupyter notebook markup language

See merge request cloudron/gitea-app!6
2021-12-03 17:43:23 +00:00
Mark Stenglein 05dcb14e8d markup: add jupyter notebook markup language
Follows documentation here:
  - https://docs.gitea.io/en-us/external-renderers/#installing-external-binaries

This adds jupyter and configures gitea to use jupyter to render notebook files.
2021-12-03 03:06:00 +00:00
Johannes Zellner 5a03ee8f27 Update test deps 2021-10-28 13:05:31 +02:00
Johannes Zellner e62f99643d Bump version for 1.15.6 2021-10-28 13:04:04 +02:00
Johannes Zellner 73027148c6 Fixup tests 2021-10-22 08:27:40 +02:00
Johannes Zellner 67a138be41 Update test deps 2021-10-22 07:35:13 +02:00
Johannes Zellner 2c32dcf6bd Bump version for 1.22.5 2021-10-22 07:34:28 +02:00
Girish Ramakrishnan dc7f7e2f4e Version 1.22.4 2021-10-08 12:54:00 -07:00
Girish Ramakrishnan 9a03f268cb Update test packages 2021-10-08 12:53:56 -07:00
Girish Ramakrishnan fde6dfa485 Update Gitea to 1.15.4 2021-10-08 12:42:26 -07:00
Johannes Zellner 8b16de1dcd Update test deps 2021-09-22 12:14:42 +02:00
Johannes Zellner 1074999c40 Bump version for 1.15.3 2021-09-22 12:14:15 +02:00
Johannes Zellner 0cfe7fea88 Bump version for 1.15.2 2021-09-03 17:34:41 +02:00
Johannes Zellner a3bb9db92e Update test deps 2021-09-03 10:26:24 +02:00
Johannes Zellner 8c84f905e7 Bump version for 1.15.1 2021-09-03 10:26:05 +02:00
Johannes Zellner 0008351e7c Fixup tests 2021-08-23 13:10:31 +02:00
Johannes Zellner 0aab01b926 Update test deps 2021-08-23 11:17:41 +02:00
Johannes Zellner 2877b4e599 Bump version for 1.15.0 2021-08-23 11:17:23 +02:00
Girish Ramakrishnan f5f690ebd9 Version 1.21.6 2021-08-06 10:12:10 -07:00
Girish Ramakrishnan 4a5bf98d60 Update test packages 2021-08-06 10:00:52 -07:00
Girish Ramakrishnan 3e84ab8730 Update gitea to 1.14.6 2021-08-05 10:47:29 -07:00
Johannes Zellner c0d7b41a77 Bump version for 1.14.5 2021-07-16 11:12:03 +02:00
Johannes Zellner df77df2347 Update test deps 2021-07-06 15:30:30 +02:00
Johannes Zellner f18b11626c Bump version for 1.14.4 2021-07-06 15:29:52 +02:00
Johannes Zellner 75917ed6e1 Update test deps 2021-06-21 11:21:07 +02:00
Johannes Zellner 8033a4f001 Bump version for 1.14.3 2021-06-21 11:19:40 +02:00
Girish Ramakrishnan 6c2c00a53a Version 1.21.2 2021-05-10 09:28:21 -07:00
Girish Ramakrishnan 86e13642e6 Update test packages 2021-05-10 09:22:38 -07:00
Girish Ramakrishnan 257b51d226 Version 1.14.2 2021-05-10 09:17:46 -07:00
Johannes Zellner 37544c8e9b Fix version 2021-04-16 12:56:52 +02:00
Johannes Zellner a04656847a Update test deps 2021-04-16 12:56:05 +02:00
Johannes Zellner 5e8950ec86 Bump version for 1.14.1 2021-04-16 12:34:15 +02:00
Johannes Zellner 2637ef1b4b CLI command has changed subcommand style 2021-04-12 18:35:50 +02:00
Johannes Zellner 0bea878d12 Use /explore instead of non-existing /healthcheck 2021-04-12 18:35:32 +02:00
Johannes Zellner bed765a1e4 Bump version for 1.14.0 2021-04-12 12:40:28 +02:00
Johannes Zellner 1e38bd58c6 Bump version for 1.13.7 2021-04-08 14:35:40 +02:00
Johannes Zellner a0f8607250 Bump version for 1.13.6 2021-03-24 13:41:35 +01:00
Johannes Zellner 4c0e49def0 Update test deps 2021-03-22 10:12:11 +01:00
Johannes Zellner c9937d6134 Bump version for 1.13.5 2021-03-22 10:11:47 +01:00
Johannes Zellner 3d51637daf Update test deps 2021-03-08 11:45:35 +01:00
Johannes Zellner 65a87ede58 Bump version for 1.13.4 2021-03-08 11:41:13 +01:00
Johannes Zellner 11800518cb Update test deps 2021-03-04 17:09:43 +01:00
Johannes Zellner 731be1ccf8 Bump version for 1.13.3 2021-03-04 17:08:50 +01:00
Girish Ramakrishnan 32c5507674 Version 1.20.0 2021-02-16 11:08:41 -08:00
Girish Ramakrishnan 1deeedfc87 Use base image v3 2021-02-16 11:01:28 -08:00
Girish Ramakrishnan 86a0949b14 the login UI has changed 2021-02-16 11:01:11 -08:00
Johannes Zellner 1aee702ada Update test deps 2021-02-02 10:09:47 +01:00
Johannes Zellner 6833bcd31b Bump version for 1.13.2 2021-02-02 10:09:18 +01:00
Girish Ramakrishnan 1a433ecee0 Version 1.19.1 2020-12-28 16:17:13 -08:00
Girish Ramakrishnan c1f261592e Update Gitea to 1.13.1 2020-12-28 12:21:18 -08:00
Girish Ramakrishnan 282eed291e Fix doc url 2020-12-07 17:01:55 -08:00
Johannes Zellner 43900e7897 Update test deps 2020-12-02 17:11:33 +01:00
Johannes Zellner 5ff6e0a410 Bump version for 1.13.0 2020-12-02 17:11:11 +01:00
Johannes Zellner 3b9989fcf0 Update test deps 2020-11-16 15:45:45 +01:00
Johannes Zellner 8b92a4feb4 Bump version for 1.12.6 2020-11-16 15:45:16 +01:00
Johannes Zellner f510244950 Remove selenium-server-standalone-jar 2020-10-02 17:45:30 +02:00
Johannes Zellner 8744b525cd Update test deps 2020-10-02 17:45:03 +02:00
Johannes Zellner 172c5f7307 Bump version for 1.12.5 2020-10-02 17:43:27 +02:00
Girish Ramakrishnan 48299030e6 Version 1.18.3-1 2020-09-26 08:42:51 -07:00
Girish Ramakrishnan 8e84cf4817 Fix manifest 2020-09-26 08:42:37 -07:00
Johannes Zellner c263876cdd Update test deps 2020-09-04 09:07:59 +02:00
Johannes Zellner 6429ca8909 Bump version for 1.12.4 2020-09-04 09:05:40 +02:00
Johannes Zellner 0cf326f08f Update test deps 2020-07-29 13:47:14 +02:00
Johannes Zellner 2cc40fffef Bump version for 1.12.3 2020-07-29 13:46:44 +02:00
Johannes Zellner 9a3c9338c3 Update test deps 2020-07-13 11:15:09 +02:00
Johannes Zellner 58a6351ab2 Bump version for 1.12.2 2020-07-13 11:08:49 +02:00
Girish Ramakrishnan ef557e98d7 Version 1.18.0 2020-06-30 10:57:15 -07:00
Girish Ramakrishnan 2a17c1717d Update tests 2020-06-30 10:51:08 -07:00
Girish Ramakrishnan 62f9860bf5 Update postinstall 2020-06-30 10:49:03 -07:00
Girish Ramakrishnan 522923dbee Fix tags 2020-06-30 10:44:20 -07:00
Girish Ramakrishnan b117af4511 Add forumUrl and fix screenshot links 2020-06-30 10:44:14 -07:00
Johannes Zellner dc2987aafb Update changes
Still show old changelog link since the current version is just patch
release
2020-06-22 12:35:04 +02:00
Johannes Zellner 50a2444e76 New version needs more memory 2020-06-22 12:33:40 +02:00
Johannes Zellner ea72f04000 Fixup tests
New version is using the monaco editor, not sure how to interact with
that in the test.
https://microsoft.github.io/monaco-editor/
2020-06-22 12:33:10 +02:00
Johannes Zellner 2759c0d852 Already new version 1.12.1 2020-06-22 12:05:40 +02:00
Johannes Zellner 7b0ec195e6 Update test deps 2020-06-19 19:11:33 +02:00
Johannes Zellner a677369189 Bump version for 1.12.0 2020-06-19 18:55:18 +02:00
Girish Ramakrishnan 2e8b2c637f Version 1.16.1 2020-05-31 12:18:42 -07:00
Girish Ramakrishnan 07d07b342a Update test packages 2020-05-31 12:18:36 -07:00
Girish Ramakrishnan 93fa56da6b Update Gitea to 1.11.6 2020-05-31 12:02:24 -07:00
Girish Ramakrishnan e68a0333a9 Version 1.16.0 2020-05-09 18:19:03 -07:00
Girish Ramakrishnan 5ed9ee9284 Update gitea to 1.11.5 2020-05-09 18:15:24 -07:00
Girish Ramakrishnan a94c165c34 Use latest base image 2020-05-09 18:15:12 -07:00
Girish Ramakrishnan 1b053028a0 Version 1.15.4 2020-04-01 11:31:25 -07:00
Girish Ramakrishnan 5e7a1b2a37 Update gitea to 1.11.4 2020-04-01 11:19:05 -07:00
Girish Ramakrishnan cc63133f85 Version 1.15.3 2020-03-11 10:38:17 -07:00
Girish Ramakrishnan 08cbfbb9d4 Update Gitea to 1.11.3 2020-03-11 10:06:14 -07:00
Girish Ramakrishnan 9944104273 Version 1.15.2 2020-03-08 18:59:42 -07:00
Girish Ramakrishnan 076dd3946b Fix tests 2020-03-08 18:59:04 -07:00
Girish Ramakrishnan 2885c388e8 Update Gitea to 1.11.2 2020-03-08 17:18:15 -07:00
Johannes Zellner 8693f77352 Bump version for 1.11.1 2020-02-18 13:19:18 +01:00
Johannes Zellner 5a0d2ea12e Ensure we can submit the test file page 2020-02-10 17:04:16 +01:00
Johannes Zellner 3fbe8140a7 Bump version for 1.11.0 2020-02-10 15:24:14 +01:00
Girish Ramakrishnan ac4eecf92b Version 1.14.3 2020-01-19 17:10:00 -08:00
Girish Ramakrishnan 3fc5685027 Update Gitea to 1.10.3 2020-01-19 16:42:12 -08:00
Johannes Zellner 9320ee11ad Bump version for 1.10.2 2020-01-02 13:29:28 +01:00
Johannes Zellner 664677527a Fix tests for cli changes 2019-12-06 13:07:42 +01:00
Johannes Zellner b1f8b8cb9a Bump version for 1.14.1 2019-12-06 12:20:44 +01:00
Johannes Zellner b72d7ad682 Bring test deps up to date 2019-11-14 16:45:34 +01:00
Johannes Zellner 5b625519c1 Bump version for 1.10.0 2019-11-14 16:01:27 +01:00
Girish Ramakrishnan 9551b31c8e Version 1.13.6 2019-11-03 18:30:32 -08:00
Girish Ramakrishnan 4514b6fc9b Update node modules 2019-11-03 18:24:06 -08:00
Girish Ramakrishnan 783cce292c Update gitea to 1.9.5 2019-10-30 14:46:11 -07:00
Girish Ramakrishnan 538f3fdead Version 1.9.4 2019-10-09 09:35:34 -07:00
Girish Ramakrishnan b2b86f170f Update gitea to 1.9.4 2019-10-09 09:20:41 -07:00
Girish Ramakrishnan 4301fd5117 Version 1.13.4 2019-09-08 11:04:31 -07:00
Girish Ramakrishnan 7aebe88c3e Update gitea to 1.9.3 2019-09-08 10:51:41 -07:00
Girish Ramakrishnan 91cc96705e Version 1.13.3 2019-08-22 18:07:30 -07:00
Girish Ramakrishnan 6fe012f901 Update gitea to 1.9.2 2019-08-22 18:01:55 -07:00
Girish Ramakrishnan 29197622fc Remove session config now that migration is done 2019-08-19 20:11:47 -07:00
Girish Ramakrishnan 3adbf0b442 Version 1.13.2 2019-08-19 17:29:50 -07:00
Girish Ramakrishnan 6c0a2ab20b no need to relogin since session persists 2019-08-19 17:29:26 -07:00
Girish Ramakrishnan 1943723dd3 Use file based sessions
Fixes #5
2019-08-19 17:10:23 -07:00
Johannes Zellner 2d15227f2e Update chromedriver 2019-08-15 14:02:50 +02:00
Johannes Zellner cbc0bfb222 Bump version for 1.9.1 2019-08-15 13:37:27 +02:00
Johannes Zellner 10df3c6ba9 Bump version for Gitea 1.9.0 2019-07-31 18:16:42 +02:00
Johannes Zellner 047ec295bc Remove unused test requires 2019-07-31 18:16:28 +02:00
Johannes Zellner 31b8a17230 Ensure we never test with the default port 2019-07-31 18:15:17 +02:00
Girish Ramakrishnan ebb46bb7ac Version 1.12.0 2019-06-17 14:40:15 -07:00
Girish Ramakrishnan 53f180ef95 Update manifest to v2 2019-06-17 14:30:49 -07:00
Girish Ramakrishnan d89fc6a0ec Update Gitea to 1.8.3 2019-06-17 14:29:03 -07:00
Girish Ramakrishnan 1039d32995 Version 1.11.0 2019-06-04 19:27:00 -07:00
Girish Ramakrishnan 6b25bb66c7 Fix up tests 2019-06-04 19:26:26 -07:00
Girish Ramakrishnan e566c94b43 Bring in various gogs features
better custom app.ini
optional sso support
always create root user
2019-06-04 17:15:20 -07:00
Girish Ramakrishnan 0d2e1cfff0 Remove admin propagation 2019-06-04 17:07:59 -07:00
Girish Ramakrishnan f830faac79 Add lock file 2019-05-30 09:56:01 -07:00
Girish Ramakrishnan 319e6d275c Version 1.10.2 2019-05-30 09:55:07 -07:00
Girish Ramakrishnan 9128339000 Update modules 2019-05-30 09:50:05 -07:00
Girish Ramakrishnan f7ca27425a Update Gitea to 1.8.2 2019-05-30 09:36:33 -07:00
Johannes Zellner 9907d1c9cd Bump version for 1.8.1 2019-05-09 11:30:29 +02:00
Girish Ramakrishnan 8d16e4d734 Version 1.10.0 2019-04-22 11:51:14 -07:00
Girish Ramakrishnan 150d490801 Update Gitea to 1.8.0 2019-04-22 11:44:21 -07:00
Johannes Zellner 4a4e4ff4f1 Bump version for 1.7.6 2019-04-15 12:52:36 +02:00
Girish Ramakrishnan 24e9499d9c Version 1.9.5 2019-03-28 05:55:37 -07:00
Girish Ramakrishnan 8c66d9ed76 Update gitea to 1.7.5 2019-03-28 05:41:23 -07:00
Girish Ramakrishnan 60d06af70d Version 1.9.4 2019-03-13 12:57:47 -07:00
Girish Ramakrishnan 15c28c940d Update gitea to 1.7.4 2019-03-13 11:58:10 -07:00
Johannes Zellner 5f5d3a7b53 Bump version for 1.7.3 2019-02-28 15:17:15 +01:00
Johannes Zellner 0902b92a7d Bump version for 1.7.2 2019-02-18 14:23:23 +01:00
Girish Ramakrishnan d675d60e1d Version 1.9.1 2019-01-31 09:37:08 -08:00
Girish Ramakrishnan 07d3c6bfcf Update Gitea to 1.7.1 2019-01-31 09:29:33 -08:00
Girish Ramakrishnan 60f9045cbb Version 1.9.0 2019-01-22 12:59:18 -08:00
Girish Ramakrishnan a633dcab9a Update Gitea to 1.7.0 2019-01-22 12:45:47 -08:00
Girish Ramakrishnan 435f30cf8c Version 1.8.4 2019-01-16 10:47:09 -08:00
Girish Ramakrishnan 157f500660 Update Gitea to 1.6.4 2019-01-16 10:40:53 -08:00
Girish Ramakrishnan 2eae86ee53 Version 1.8.3 2019-01-10 09:38:37 -08:00
Girish Ramakrishnan 3993229ac3 Update Gitea to 1.6.3 2019-01-10 09:29:23 -08:00
Girish Ramakrishnan 9793215e7c Version 1.8.2 2018-12-26 11:47:58 -08:00
Girish Ramakrishnan 6e04300610 Update gitea to 1.6.2 2018-12-26 09:54:13 -08:00
Girish Ramakrishnan 587235be2b Version 1.8.1 2018-12-10 12:02:41 -08:00
Girish Ramakrishnan de3369808e Update gitea to 1.6.1 2018-12-10 11:53:26 -08:00
Johannes Zellner 5e99be936a Bump version for 1.6.0 2018-11-23 12:13:37 +01:00
Johannes Zellner 12f58af585 Bump version 2018-11-02 08:55:25 +01:00
Johannes Zellner 9971919cf9 Make tests use a different port to avoid conflicts 2018-11-02 08:53:38 +01:00
Johannes Zellner 65bc13c2b7 Update to 1.5.3 2018-11-02 08:19:31 +01:00
Girish Ramakrishnan c231b12f2d Version 1.7.1 2018-10-11 08:09:22 -07:00
Girish Ramakrishnan 1265366151 Update Gitea to 1.5.2 2018-10-11 08:03:58 -07:00
Girish Ramakrishnan 278116abdb Version 1.7.0 2018-10-10 20:17:18 -07:00
Girish Ramakrishnan 8a942dc8f7 Use latest base image 2018-10-10 20:09:26 -07:00
Johannes Zellner 1b15db85e3 Avoid nxdomain during tests and always specify app id 2018-09-03 17:44:23 +02:00
Johannes Zellner d37044f8e0 Bump version for 1.5.1 2018-09-03 17:17:32 +02:00
Girish Ramakrishnan e7671bd3f2 Version 1.6.0 2018-08-12 10:37:38 -07:00
Girish Ramakrishnan 32cc8175e5 Fix tests 2018-08-12 10:36:17 -07:00
Girish Ramakrishnan 534e4884b4 Update Gitea to 1.5.0 2018-08-12 10:17:14 -07:00
Girish Ramakrishnan 6e1f363b88 Version 1.5.4 2018-08-02 10:15:56 -07:00
Girish Ramakrishnan 3eb57f2c07 Add custom file test 2018-08-02 10:15:05 -07:00
Girish Ramakrishnan b16095eef5 Set GITEA_CUSTOM 2018-08-02 09:41:19 -07:00
Girish Ramakrishnan 18b3ae6bc2 Version 1.5.3 2018-06-27 10:21:47 -07:00
Girish Ramakrishnan fbf8e5f953 Update gitea to 1.4.3 2018-06-27 09:50:48 -07:00
Girish Ramakrishnan 106e65df9e Version 1.5.2-1 2018-06-07 17:11:34 -07:00
Girish Ramakrishnan 1b629265fa Version 1.5.2 2018-06-06 16:03:37 -07:00
Girish Ramakrishnan f9949c11a3 fix api usage 2018-06-06 16:00:51 -07:00
Girish Ramakrishnan a7e693c4ed Update Gitea to 1.4.2 2018-06-06 15:41:46 -07:00
Girish Ramakrishnan b00d2aced2 Version 1.5.1 2018-05-05 09:41:08 -07:00
Girish Ramakrishnan c2419ba46c Fix api use 2018-05-03 09:44:20 -07:00
Girish Ramakrishnan b39e1850d7 add chromedriver 2018-05-03 09:38:42 -07:00
Girish Ramakrishnan 4d37e33eee Update Gitea to 1.4.1 2018-05-03 09:38:22 -07:00
Johannes Zellner b86f9c7a20 Ensure the tests work with other instances installed 2018-03-26 12:36:09 +02:00
Johannes Zellner 7fd766b348 Bump version 2018-03-26 12:16:04 +02:00
Girish Ramakrishnan 525327c150 Version 1.4.1 2018-02-19 17:03:24 -08:00
Girish Ramakrishnan bc658da61e Update Gitea to 1.3.3 2018-02-19 16:56:06 -08:00
Girish Ramakrishnan 25f206ccdb Version 1.4.0 2018-01-18 11:28:31 -08:00
Girish Ramakrishnan d3553de1a6 Use SMTPS port to send email for Go programs 2018-01-18 11:21:31 -08:00
Girish Ramakrishnan 99379fdbb3 Version 1.3.1 2017-12-14 21:04:37 +05:30
Girish Ramakrishnan 21a9fccd60 Update gitea to 1.3.2 2017-12-14 20:48:44 +05:30
Girish Ramakrishnan 8837d2fd60 Version 1.3.0 2017-12-11 09:07:54 +05:30
Girish Ramakrishnan a66843c3e3 Version 1.3.0 2017-12-11 08:58:10 +05:30
Girish Ramakrishnan 67403a6d2a Gitea 1.3.1 2017-12-11 08:46:00 +05:30
Dennis Schwerdel c137f79e9b Version 1.2.0 2017-11-29 21:21:37 +01:00
Girish Ramakrishnan 0249f20656 Version 1.1.3 2017-11-03 15:06:22 -07:00
Girish Ramakrishnan 5d00e930ff Use gitea 1.2.3 2017-11-03 14:58:42 -07:00
Girish Ramakrishnan 619bd735a6 Version 1.1.2 2017-10-27 12:07:29 -07:00
Girish Ramakrishnan a59430be60 Use gitea 1.2.2 2017-10-27 12:06:39 -07:00
Girish Ramakrishnan 3e04f6b996 Version 1.1.1 2017-10-17 10:46:38 -07:00
Girish Ramakrishnan 7481ed9f60 Update to Gitea 1.2.1 2017-10-17 10:30:05 -07:00
Girish Ramakrishnan 93e8df020f Version 1.1.0 2017-10-14 11:45:30 -07:00
Girish Ramakrishnan 2329c01ba5 Fix tests 2017-10-14 11:45:26 -07:00
Girish Ramakrishnan bf67824fa6 Gitea got a new logo
https://github.com/go-gitea/gitea/pull/2194
2017-10-14 11:18:05 -07:00
Girish Ramakrishnan 795e6efb0a Use Gitea 1.2.0 2017-10-14 11:00:49 -07:00
Dennis Schwerdel d984b4fe6c Update to 1.1.4 2017-09-04 23:30:42 +02:00
Dennis Schwerdel 6a90609565 Release 1.0.2 2017-09-02 19:35:33 +02:00
dswd c67b13585f Merge branch 'totp_fix' into 'master'
Preserve SECRET_KEY across restarts

Closes #2

See merge request !5
2017-09-02 17:20:21 +00:00
Girish Ramakrishnan 24d40b7912 Preserve SECRET_KEY across restarts
fixes #2
2017-09-01 15:17:41 -07:00
Girish Ramakrishnan 83ca72d103 Merge branch 'CVE-2017-1000117' into 'master'
Cve 2017 1000117

See merge request !4
2017-08-11 19:31:37 +00:00
Girish Ramakrishnan 8b65c0a5db Version 1.0.1 2017-08-11 11:58:28 -07:00
Girish Ramakrishnan 8685d0606a Update git
https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-1000117.html
2017-08-11 11:29:00 -07:00
Dennis Schwerdel 355ee698dc Using crudini for configuration merging 2017-08-09 07:06:23 +02:00
dswd b8b3abfbfc Merge branch 'update_to_1.1.3' into 'master'
Update to 1.1.3

See merge request !3
2017-08-09 04:57:48 +00:00
Girish Ramakrishnan 3970139ea7 Add --wait for configure 2017-08-08 14:53:40 -07:00
Girish Ramakrishnan 9b4fb46cf3 Version 1.0.0 2017-08-08 14:53:22 -07:00
Girish Ramakrishnan 4357f4b3b9 Update to version 1.1.3 2017-08-07 11:22:40 -07:00
Girish Ramakrishnan 821c13e7eb restart requires --wait now 2017-08-07 11:22:40 -07:00
Girish Ramakrishnan a03fb92253 Add update test 2017-08-07 11:22:40 -07:00
Dennis Schwerdel c636d1dd87 Updated to 1.1.2 2017-06-12 13:13:49 +02:00
Dennis Schwerdel 5ecde5c49b Version 0.1.2 2017-06-03 00:17:19 +02:00
dswd 47a9de45c9 Merge branch 'fix_tests' into 'master'
Fix tests

See merge request !2
2017-06-02 22:15:50 +00:00
dswd cc112ff9bb Merge branch 'description' into 'master'
Description

See merge request !1
2017-06-02 22:15:20 +00:00
Girish Ramakrishnan 8b7ec669bc restart now requires wait 2017-06-02 14:58:13 -07:00
Girish Ramakrishnan 6ab83644d7 TIMEOUT must be a number 2017-06-02 14:58:07 -07:00
Girish Ramakrishnan 5827bf87a7 Use promises correctly in tests 2017-06-02 14:58:02 -07:00
Girish Ramakrishnan b4156a8192 Replace media links with cloudron CDN links 2017-06-02 14:08:01 -07:00
Girish Ramakrishnan f89a2ab8d4 Update description 2017-06-02 13:58:45 -07:00
Dennis Schwerdel 5522fc9398 Version 0.1.1 2017-06-02 17:55:05 +02:00
Dennis Schwerdel 240716671d Removed last reference to Gogs 2017-06-02 17:52:03 +02:00
20 changed files with 5201 additions and 360 deletions

View file

@ -1,3 +0,0 @@
[0.1.0]
* Initial package (forked from Gogs app)

1612
CHANGELOG.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -4,14 +4,16 @@
"author": "Gitea developers",
"description": "file://DESCRIPTION.md",
"tagline": "A painless self-hosted Git Service",
"version": "0.1.0",
"healthCheckPath": "/healthcheck",
"version": "1.33.0",
"upstreamVersion": "1.22.0",
"healthCheckPath": "/explore",
"httpPort": 3000,
"memoryLimit": 536870912,
"addons": {
"mysql": { },
"sendmail": { },
"sendmail": { "supportsDisplayName": true },
"localstorage": { },
"ldap": { }
"oidc": { "loginRedirectUri": "/user/oauth2/cloudron/callback" }
},
"tcpPorts": {
"SSH_PORT": {
@ -20,22 +22,22 @@
"defaultValue": 29418
}
},
"manifestVersion": 1,
"manifestVersion": 2,
"website": "https://gitea.io",
"contactEmail": "apps@cloudron.io",
"icon": "file://logo.png",
"optionalSso": true,
"mediaLinks": [
"https://i.imgur.com/3iEQsux.jpg",
"https://i.imgur.com/glqFnj8.jpg",
"https://i.imgur.com/ad1FEpi.jpg",
"https://i.imgur.com/q81EcGa.jpg",
"https://i.imgur.com/L2CQeN0.jpg",
"https://i.imgur.com/cNuvMum.jpg",
"https://i.imgur.com/xCYRqaF.jpg",
"https://i.imgur.com/ILpRBCe.jpg",
"https://i.imgur.com/0BHnrcL.jpg"
"https://screenshots.cloudron.io/io.gitea.cloudronapp/1.png",
"https://screenshots.cloudron.io/io.gitea.cloudronapp/2.png",
"https://screenshots.cloudron.io/io.gitea.cloudronapp/3.png",
"https://screenshots.cloudron.io/io.gitea.cloudronapp/4.png",
"https://screenshots.cloudron.io/io.gitea.cloudronapp/5.png"
],
"tags": [ "version control", "git", "code hosting", "development" ],
"changelog": "file://CHANGELOG",
"postInstallMessage": "file://POSTINSTALL.md"
"tags": [ "version control", "git", "code hosting", "development", "github", "bitbucket", "gitlab" ],
"changelog": "file://CHANGELOG.md",
"postInstallMessage": "file://POSTINSTALL.md",
"minBoxVersion": "7.5.1",
"forumUrl": "https://forum.cloudron.io/category/19/gitea",
"documentationUrl": "https://docs.cloudron.io/apps/gitea/"
}

View file

@ -1,6 +1,4 @@
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab. The initial development have been done on Gogs but we have forked it and named it Gitea. If you want to read more about the reasons why we have done that please read this blog post.
This app packages Gogs <upstream>1.1.1</upstream>
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab.
### Purpose
@ -20,9 +18,7 @@ The goal of this project is to make the easiest, fastest, and most painless way
- Gravatar and custom source
- Mail service
- Administration panel
- Supports MySQL, PostgreSQL, SQLite3 and [TiDB](https://github.com/pingcap/tidb) (experimental)
- Multi-language support ([15 languages](https://crowdin.com/project/gogs))
### Bug reports
Open bugs on [Github](https://git.cloudron.io/dswd/gitea-app/issues)
Open bugs on [Github](https://git.cloudron.io/cloudron/gitea-app/issues)

View file

@ -1,11 +1,10 @@
FROM cloudron/base:0.10.0
ENV VERSION 1.1.1
FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4
RUN apt-get update && \
apt-get install -y openssh-server && \
apt-get install -y openssh-server git asciidoctor pandoc && \
rm -rf /etc/ssh_host_* && \
rm -r /var/cache/apt /var/lib/apt/lists
RUN pip3 install jupyter
ADD supervisor/ /etc/supervisor/conf.d/
@ -15,7 +14,13 @@ RUN adduser --disabled-login --gecos 'Gitea' git
RUN passwd -d git
RUN mkdir -p /home/git/gitea
## TODO: use redis as well
WORKDIR /home/git
# for autosign feature
ENV GNUPGHOME="/app/data/gnupg"
ARG VERSION=1.22.0
RUN curl -L https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64 -o /home/git/gitea/gitea \
&& chmod +x /home/git/gitea/gitea
@ -31,9 +36,7 @@ RUN ln -s /app/data/gitconfig /home/git/.gitconfig
ADD start.sh /home/git/start.sh
# disable pam authentication for sshd
RUN sed -e 's/UsePAM yes/UsePAM no/' -e 's/UsePrivilegeSeparation yes/UsePrivilegeSeparation no/' -i /etc/ssh/sshd_config
RUN echo "UseDNS no" >> /etc/ssh/sshd_config
COPY sshd_config /etc/ssh/sshd_config
CMD [ "/home/git/start.sh" ]

View file

@ -1,12 +1,10 @@
This app integrates with the Cloudron SSO. Admins on Cloudron automatically
become admins on Gitea.
This app is pre-setup with an admin account. The initial credentials are:
If you want to disable Cloudron SSO, do the following:
**Username**: root<br/>
**Password**: changeme<br/>
* Admin Panel -> Authentication -> 'cloudron' -> Uncheck 'This authentication is activated'
* Admin Panel -> Users -> Change Authentication Source to 'Local' and also give a password
You can create a `/app/data/app.ini` with any custom configuration. See the
[configuration cheat sheet](https://docs.gitea.io/en-us/config-cheat-sheet)
for more information.
Please change the admin password immediately.
<sso>
Use the `Local` authentication source for logging in as admin.
</sso>

View file

@ -2,7 +2,9 @@ APP_NAME = Gitea
RUN_USER = git
RUN_MODE = prod
[database]
; those settings are protected and can't be modified
DB_TYPE = mysql
HOST = ##MYSQL_HOST:##MYSQL_PORT
NAME = ##MYSQL_DATABASE
@ -11,7 +13,9 @@ PASSWD = ##MYSQL_PASSWORD
SSL_MODE = disable
PATH =
[server]
; those settings are protected and can't be modified
PROTOCOL = http
DOMAIN = ##DOMAIN
ROOT_URL = https://%(DOMAIN)s/
@ -20,55 +24,111 @@ HTTP_PORT = 3000
DISABLE_SSH = ##DISABLE_SSH
SSH_PORT = ##SSH_PORT
APP_DATA_PATH = /app/data/appdata
; Landing page for non-logged users, can be "home" or "explore"
LANDING_PAGE = explore
[repository]
; this setting is protected and can't be modified
ROOT = /app/data/repository
SCRIPT_TYPE = bash
[repository.upload]
ENABLED = true
; this setting is protected and can't be modified
TEMP_PATH = /run/gitea/tmp/uploads
[release.attachment]
ENABLED = true
; APP_DATA_PATH/attachments
PATH =
[oauth2_client]
ENABLE_AUTO_REGISTRATION = true
USERNAME = sub
UPDATE_AVATAR = false
ACCOUNT_LINKING = auto
[mailer]
ENABLED = true
HOST = ##MAIL_SERVER:##MAIL_PORT
; those settings are protected and can't be modified
SMTP_ADDR = ##MAIL_SERVER
SMTP_PORT = ##MAIL_PORT
USER = ##MAIL_SMTP_USERNAME
PASSWD = ##MAIL_SMTP_PASSWORD
FROM = ##MAIL_FROM
SKIP_VERIFY = true
PROTOCOL = smtps
FORCE_TRUST_SERVER_CERT = true
[security]
; those settings are protected and can't be modified
INSTALL_LOCK = true
SECRET_KEY = ##SECRET_KEY
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = *
[service]
DISABLE_REGISTRATION = false
SHOW_REGISTRATION_BUTTON = false
ENABLE_NOTIFY_MAIL = true
[log]
; Either "console", "file", "conn", "smtp" or "database", default is "console"
; those settings are protected and can't be modified
MODE = console
; used for xorm.log
ROOT_PATH = /run/gitea
[picture]
; APP_DATA_PATH/avatars
AVATAR_UPLOAD_PATH =
GRAVATAR_SOURCE = gravatar
DISABLE_GRAVATAR = false
[attachment]
ENABLE = true
; APP_DATA_PATH/attachments
PATH =
[indexer]
; this setting is protected and can't be modified
ISSUE_INDEXER_PATH = /app/data/appdata/indexers/issues.bleve
[session]
PROVIDER = file
PROVIDER_CONFIG = /run/gitea/sessions
COOKIE_SECURE = true
COOKIE_NAME = cloudron_gitea
GC_INTERVAL_TIME = 2592000
[markup.asciidoc]
ENABLED = true
FILE_EXTENSIONS = .adoc,.asciidoc
RENDER_COMMAND = "asciidoctor -s -a showtitle --out-file=- -"
; Input is not a standard input but a file
IS_INPUT_FILE = false
[markup.restructuredtext]
ENABLED = true
FILE_EXTENSIONS = .rst
RENDER_COMMAND = "timeout 30s pandoc +RTS -M512M -RTS -f rst"
IS_INPUT_FILE = false
[markup.jupyter]
ENABLED = true
FILE_EXTENSIONS = .ipynb
RENDER_COMMAND = "jupyter nbconvert --stdin --stdout --to html --template basic"
IS_INPUT_FILE = false
[markup.sanitizer.jupyter.img]
ALLOW_DATA_URI_IMAGES = true

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

80
sshd_config Normal file
View file

@ -0,0 +1,80 @@
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 29418
# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress 0.0.0.0
ListenAddress ::
Protocol 2
# HostKeys for protocol version 2
HostKey /app/data/sshd/ssh_host_rsa_key
HostKey /app/data/sshd/ssh_host_dsa_key
HostKey /app/data/sshd/ssh_host_ecdsa_key
HostKey /app/data/sshd/ssh_host_ed25519_key
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM no
UseDNS no

118
start.sh
View file

@ -2,29 +2,49 @@
set -eu -o pipefail
mkdir -p /run/gitea/tmp/uploads
mkdir -p /run/gitea/tmp/uploads /run/sshd /run/gitea/sessions
setup_ldap_source() {
setup_oidc_source() {
set -eu
# Wait for gitea to finish db setup, before we insert ldap source in db
while ! curl --fail http://localhost:3000/healthcheck; do
echo "Waiting for gitea to come up"
echo "==> Setup OIDC source"
now=$(date +%s)
mysql -u"${CLOUDRON_MYSQL_USERNAME}" -p"${CLOUDRON_MYSQL_PASSWORD}" -h mysql --database="${CLOUDRON_MYSQL_DATABASE}" -e \
"REPLACE INTO login_source (id, type, name, is_active, cfg, created_unix, updated_unix) VALUES (1,6,'cloudron', 1,'{\"Provider\":\"openidConnect\",\"ClientID\":\"${CLOUDRON_OIDC_CLIENT_ID}\",\"ClientSecret\":\"${CLOUDRON_OIDC_CLIENT_SECRET}\",\"OpenIDConnectAutoDiscoveryURL\":\"${CLOUDRON_OIDC_ISSUER}/.well-known/openid-configuration\",\"CustomURLMapping\":null,\"IconURL\":\"\",\"Scopes\":[\"openid email profile\"],\"RequiredClaimName\":\"\",\"RequiredClaimValue\":\"\",\"GroupClaimName\":\"\",\"AdminGroup\":\"\",\"GroupTeamMap\":\"\",\"GroupTeamMapRemoval\":false,\"RestrictedGroup\":\"\"}','${now}','${now}')"
}
setup_root_user() {
set -eu
if sudo -H -u git /home/git/gitea/gitea admin user create --username root --password changeme --email admin@cloudron.local --admin -c /run/gitea/app.ini; then
echo "==> root user added"
else
echo "==> Failed to add root user"
exit 1
fi
}
setup_auth() {
set -eu
# Wait for gitea to finish db setup, before we do any db operations
while ! curl --fail http://localhost:3000/explore; do
echo "==> Waiting for gitea to come up"
sleep 1
done
now=$(date +%s)
echo "==> Gitea is up, setting up auth"
# Get the existing LDAP source status. This allows the user to disable LDAP
ldap_status=$(mysql -u"${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" -h mysql --database="${MYSQL_DATABASE}" -N -B -e "select is_actived from login_source WHERE name='cloudron';")
[[ -z "${ldap_status}" ]] && ldap_status="1"
if [[ -n "${CLOUDRON_OIDC_ISSUER:-}" ]]; then
setup_oidc_source
fi
if mysql -u"${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" -h mysql --database="${MYSQL_DATABASE}" \
-e "REPLACE INTO login_source (id, type, name, is_actived, cfg, created_unix, updated_unix) VALUES (1,2,'cloudron',${ldap_status},'{\"Name\":\"cloudron\",\"Host\":\"${LDAP_SERVER}\",\"Port\":${LDAP_PORT},\"UseSSL\":false,\"SkipVerify\":true,\"BindDN\":\"${LDAP_BIND_DN}\",\"BindPassword\":\"${LDAP_BIND_PASSWORD}\",\"UserBase\":\"${LDAP_USERS_BASE_DN}\",\"AttributeUsername\":\"username\",\"AttributeName\":\"displayname\",\"AttributeSurname\":\"\",\"AttributeMail\":\"mail\",\"Filter\":\"(\\\\u007C(mail=%[1]s)(username=%[1]s))\",\"AdminFilter\":\"(memberof=cn=admins,${LDAP_GROUPS_BASE_DN})\"}','${now}','${now}');"; then
echo "LDAP Authentication was setup with status ${ldap_status}"
else
echo "Failed to setup LDAP authentication"
exit 1
user_count=$(mysql -u"${CLOUDRON_MYSQL_USERNAME}" -p"${CLOUDRON_MYSQL_PASSWORD}" -h mysql --database="${CLOUDRON_MYSQL_DATABASE}" -N -B -e "SELECT count(*) FROM user")
# be careful, not to create root user for existing LDAP based installs
if [[ "${user_count}" == "0" ]]; then
echo "==> Setting up root user for first run"
setup_root_user
fi
}
@ -50,35 +70,55 @@ fi
chmod 0600 /app/data/sshd/*_key
chmod 0644 /app/data/sshd/*.pub
sed -e "s/^Port .*/Port ${SSH_PORT}/" \
-e "s/^#ListenAddress .*/ListenAddress 0.0.0.0/" \
-e "s,^HostKey /etc/ssh/,HostKey /app/data/sshd/," \
/etc/ssh/sshd_config > /run/gitea/sshd_config
sed -e "s/^Port .*/Port ${SSH_PORT}/" /etc/ssh/sshd_config > /run/gitea/sshd_config
sed -e "s/##DOMAIN/${APP_DOMAIN}/g" \
-e "s/##SSH_PORT/${SSH_PORT}/g" \
-e "s/##DISABLE_SSH/${disable_ssh}/g" \
-e "s/##MYSQL_HOST/${MYSQL_HOST}/g" \
-e "s/##MYSQL_PORT/${MYSQL_PORT}/g" \
-e "s/##MYSQL_USERNAME/${MYSQL_USERNAME}/g" \
-e "s/##MYSQL_PASSWORD/${MYSQL_PASSWORD}/g" \
-e "s/##MYSQL_DATABASE/${MYSQL_DATABASE}/g" \
-e "s/##MAIL_SERVER/${MAIL_SMTP_SERVER}/g" \
-e "s/##MAIL_PORT/${MAIL_SMTP_PORT}/g" \
-e "s/##MAIL_FROM/${MAIL_FROM}/g" \
-e "s/##MAIL_SMTP_USERNAME/${MAIL_SMTP_USERNAME}/g" \
-e "s/##MAIL_SMTP_PASSWORD/${MAIL_SMTP_PASSWORD}/g" \
-e "s/##SECRET_KEY/$(pwgen -1 -s)/g" \
/home/git/app.ini.template > "/run/gitea/app.ini"
if [[ ! -f /app/data/app.ini ]]; then
echo -e "; Add customizations here - https://docs.gitea.io/en-us/config-cheat-sheet/" > /app/data/app.ini
# merge any user config file
[[ -f /app/data/app.ini ]] && cat "/app/data/app.ini" >> "/run/gitea/app.ini"
echo "==> Generating new SECRET_KEY"
crudini --set "/app/data/app.ini" security SECRET_KEY $(pwgen -1 -s)
fi
mkdir -p /app/data/repository /app/data/ssh
# merge user config file
cp /home/git/app.ini.template "/run/gitea/app.ini"
crudini --merge "/run/gitea/app.ini" < "/app/data/app.ini"
# override important values
crudini --set "/run/gitea/app.ini" database DB_TYPE mysql
crudini --set "/run/gitea/app.ini" database HOST "${CLOUDRON_MYSQL_HOST}:${CLOUDRON_MYSQL_PORT}"
crudini --set "/run/gitea/app.ini" database NAME "${CLOUDRON_MYSQL_DATABASE}"
crudini --set "/run/gitea/app.ini" database USER "${CLOUDRON_MYSQL_USERNAME}"
crudini --set "/run/gitea/app.ini" database PASSWD "${CLOUDRON_MYSQL_PASSWORD}"
crudini --set "/run/gitea/app.ini" database SSL_MODE "disable"
crudini --set "/run/gitea/app.ini" server PROTOCOL "http"
crudini --set "/run/gitea/app.ini" server DOMAIN "${CLOUDRON_APP_DOMAIN}"
crudini --set "/run/gitea/app.ini" server ROOT_URL "https://%(DOMAIN)s/"
crudini --set "/run/gitea/app.ini" server HTTP_ADDR ""
crudini --set "/run/gitea/app.ini" server HTTP_PORT "3000"
crudini --set "/run/gitea/app.ini" server DISABLE_SSH "${disable_ssh}"
crudini --set "/run/gitea/app.ini" server SSH_PORT "${SSH_PORT}"
crudini --set "/run/gitea/app.ini" server APP_DATA_PATH "/app/data/appdata"
crudini --set "/run/gitea/app.ini" repository ROOT "/app/data/repository"
crudini --set "/run/gitea/app.ini" repository.upload TEMP_PATH "/run/gitea/tmp/uploads"
crudini --set "/run/gitea/app.ini" mailer SMTP_ADDR "${CLOUDRON_MAIL_SMTP_SERVER}"
crudini --set "/run/gitea/app.ini" mailer SMTP_PORT "${CLOUDRON_MAIL_SMTPS_PORT}"
crudini --set "/run/gitea/app.ini" mailer PROTOCOL smtps
crudini --set "/run/gitea/app.ini" mailer USER "${CLOUDRON_MAIL_SMTP_USERNAME}"
crudini --set "/run/gitea/app.ini" mailer PASSWD "${CLOUDRON_MAIL_SMTP_PASSWORD}"
crudini --set "/run/gitea/app.ini" mailer FROM "${CLOUDRON_MAIL_FROM_DISPLAY_NAME:-Gitea} <${CLOUDRON_MAIL_FROM}>"
crudini --set "/run/gitea/app.ini" mailer FORCE_TRUST_SERVER_CERT "true"
crudini --set "/run/gitea/app.ini" security INSTALL_LOCK "true"
crudini --set "/run/gitea/app.ini" security REVERSE_PROXY_LIMIT 1
crudini --set "/run/gitea/app.ini" security REVERSE_PROXY_TRUSTED_PROXIES "*"
crudini --set "/run/gitea/app.ini" log MODE "console"
crudini --set "/run/gitea/app.ini" log ROOT_PATH "/run/gitea"
crudini --set "/run/gitea/app.ini" indexer ISSUE_INDEXER_PATH "/app/data/appdata/indexers/issues.bleve"
echo "==> Creating dirs and changing permissions"
mkdir -p /app/data/repository /app/data/ssh /app/data/custom /app/data/gnupg
chown -R git:git /app/data /run/gitea
( setup_ldap_source ) &
# this expects app.ini to be available
( setup_auth ) &
exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon -i Gitea

View file

@ -9,4 +9,4 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=HOME="/home/git",USER="git"
environment=HOME="/home/git",USER="git",GITEA_CUSTOM="/app/data/custom"

View file

@ -8,4 +8,3 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

View file

@ -2,4 +2,4 @@
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ssh -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${SCRIPT_DIR}/id_rsa "$@"
ssh -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${SCRIPT_DIR}/id_ed25519 "$@"

7
test/id_ed25519 Normal file
View file

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDECyFdxcmgOemNvs0wUhkgzfj9IS2OTG6bU5AXfNkXfgAAAJAoNQg/KDUI
PwAAAAtzc2gtZWQyNTUxOQAAACDECyFdxcmgOemNvs0wUhkgzfj9IS2OTG6bU5AXfNkXfg
AAAEC9nIZlzus9hn/b99E/cnSE2Vpycx0invItrrzgOX9qwMQLIV3FyaA56Y2+zTBSGSDN
+P0hLY5MbptTkBd82Rd+AAAADW5lYnVsb25AbHVuYXI=
-----END OPENSSH PRIVATE KEY-----

1
test/id_ed25519.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMQLIV3FyaA56Y2+zTBSGSDN+P0hLY5MbptTkBd82Rd+ nebulon@lunar

View file

@ -1,27 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA14L+HdwPXRHC2A+fyRv1FTsRE/OPl0Z0KnEigzIIdA65CzTy
l3m3ATNFI1o/Ies7RW6rsr9UHuLLufNVg1NwIBdns8sPE4pSZSjfdPnznifIIs7y
wL/vn2D3JEhpA8EOasSy0c+z+6X23evsLB3D81y7ICsBc16Q147WZ6D+QMUP+A4b
wlmEcy0hAoPx/jnnPlRDVOK1ZnBvuAaHBkcBh+sA272BhB6Kv13MBu0wctDjKw5w
cNmgVWbzBBtK1L8BZVMDKmKWZ2PKP4GkkpnAvkD0+4sdARe148faV8HHigAKKNN7
vt+njs6nHuS4ksJL1E9cKGHdBJudJc3p24iI7QIDAQABAoIBABm5ojnQPek/KIIA
A3PPKYc6QMSf60EEgPNcA+GjRE0OQNpsnJSmS8kR5KvepvCWksGr/0Tb/9+b9POi
b0+40waRpKhakdckSMeYhGwDNihn2UUGbQXDI4hj27xyBE8VaXInPq063OIqInjF
I7D0cKKJLDEf0RGDdUi13TQLjK4QX78W/9S8d5ClznAVi4wUBb1urs7fAoVetn/i
PnlEj9KZHio4mCg28djTudAoWzjzUikRqKRYY5QNEJ13abVoLqIRSRHC1DzwpxVv
Y88l4hmm6IcmWGo0O9lpu5IJFvEmngfpmyaVbeLE0fhLPFWcEHARw37SThTZVQeY
Tx1816UCgYEA9j5dyNbFcC4YL9i9DQyut658bYziY2vsAvZNMMf249IJGbZOxlZK
ylB00zlbO/2uNh12Y9z6BN2hO2lER3O3SM75tCnvXR0+qG+xmfjLcRVczEkU10+r
8UxKBgg7Sf9uvfeONefEYPwiwzFoWgdaFSrR2sCmuoHPwfc9i+PSp+8CgYEA4Azq
DToKdv6VBWPlNXT6OW3+HUPeHF087Ve03+3orCckZ+d2DImEOvWdt+pDeGQJJcq+
o+SzZk9FjFOIiQehuA44OFrvcbag9YAlm1JQYYrRTdZEJz3iSucXCzJH/P5TrB84
BHvzgCklZzZ0IpEFxzMe8oNS6XfJmilh6I98YOMCgYBybOy7xUGeLW1D3p2LENen
t0dOyObyeFYF0lpwTpulphZgglz8wWCjvttqw/5nVCy+LNa09RyhYjPoHbSC13zW
MofKdqoqRMq3DqAjAn/XHqwuqc8rdnRZ/q9vOigC7NWTJRRKbFbPEps8xRrOqxfr
OiimVFul02ito6xP8yAStQKBgQDHbPdPup/h9wzx9U7p3Ct1vt/3cJddK+i1YeIP
iBYYVebjzXSYCDd4u3MdZxmTKYey6dnyy/ibUmgXVassPWzHBXEpSFflIaf3nY7b
x9LgX82ZuOSFAWJRRYyPXLwTBtW3WTplU2cUZotyaVfKBMfd3TToq9e7E/KQk9Eg
Tcdp/QKBgCyKD1gGU/H1bsQOuWHuFR1v7v82V1DLVjyn5kllej0tlfTLO/5uUsEE
SIjGHfTHxgpww9HN9BPyy8xdQMAc6p7UyvJAIyhg679AQBrMLLvhE5niaGu4jQOa
ZVY6nZUQNCwgxJwnUkFnOyXDYjzjyxZOCAWPxghYbS+IEl1GzhZU
-----END RSA PRIVATE KEY-----

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXgv4d3A9dEcLYD5/JG/UVOxET84+XRnQqcSKDMgh0DrkLNPKXebcBM0UjWj8h6ztFbquyv1Qe4su581WDU3AgF2ezyw8TilJlKN90+fOeJ8gizvLAv++fYPckSGkDwQ5qxLLRz7P7pfbd6+wsHcPzXLsgKwFzXpDXjtZnoP5AxQ/4DhvCWYRzLSECg/H+Oec+VENU4rVmcG+4BocGRwGH6wDbvYGEHoq/XcwG7TBy0OMrDnBw2aBVZvMEG0rUvwFlUwMqYpZnY8o/gaSSmcC+QPT7ix0BF7Xjx9pXwceKAAoo03u+36eOzqce5LiSwkvUT1woYd0Em50lzenbiIjt girish@beast

3060
test/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -8,17 +8,11 @@
},
"author": "",
"license": "ISC",
"devDependencies": {
"ejs": "^2.3.4",
"expect.js": "^0.3.1",
"mkdirp": "^0.5.1",
"mocha": "^2.3.4",
"rimraf": "^2.4.4",
"superagent": "^1.4.0"
},
"dependencies": {
"selenium-server-standalone-jar": "^3.3.1",
"selenium-webdriver": "^3.3.0",
"superagent": "^1.8.5"
"chromedriver": "^125.0.2",
"expect.js": "^0.3.1",
"mocha": "^10.4.0",
"selenium-webdriver": "^4.21.0",
"superagent": "^9.0.2"
}
}

View file

@ -1,6 +1,6 @@
#!/usr/bin/env node
/* jslint node:true */
/* jshint esversion: 8 */
/* global it:false */
/* global xit:false */
/* global describe:false */
@ -9,291 +9,311 @@
'use strict';
var execSync = require('child_process').execSync,
ejs = require('ejs'),
require('chromedriver');
const execSync = require('child_process').execSync,
expect = require('expect.js'),
fs = require('fs'),
mkdirp = require('mkdirp'),
path = require('path'),
rimraf = require('rimraf'),
superagent = require('superagent'),
webdriver = require('selenium-webdriver');
{ Builder, By, until } = require('selenium-webdriver'),
{ Options } = require('selenium-webdriver/chrome');
var by = require('selenium-webdriver').By,
until = require('selenium-webdriver').until,
Builder = require('selenium-webdriver').Builder;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
if (!process.env.USERNAME || !process.env.PASSWORD || !process.env.EMAIL) {
console.log('USERNAME, PASSWORD and EMAIL env vars need to be set');
process.exit(1);
}
describe('Application life cycle test', function () {
this.timeout(0);
var server, browser = new Builder().forBrowser('chrome').build();
var LOCATION = 'test';
var repodir = '/tmp/testrepo';
var app, reponame = 'testrepo';
var username = process.env.USERNAME;
var password = process.env.PASSWORD;
var TIMEOUT = process.env.TIMEOUT || 5000;
var email, token;
before(function (done) {
if (!process.env.USERNAME) return done(new Error('USERNAME env var not set'));
if (!process.env.PASSWORD) return done(new Error('PASSWORD env var not set'));
const TIMEOUT = parseInt(process.env.TIMEOUT, 10) || 5000;
const EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' };
const LOCATION = 'test';
const SSH_PORT = 29420;
var seleniumJar= require('selenium-server-standalone-jar');
var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
server = new SeleniumServer(seleniumJar.path, { port: 4444 });
server.start();
let app, browser;
var athenticated_by_oidc = false;
done();
const repodir = '/tmp/testrepo';
const reponame = 'testrepo';
const username = process.env.USERNAME;
const password = process.env.PASSWORD;
const email = process.env.EMAIL;
before(function () {
browser = new Builder().forBrowser('chrome').setChromeOptions(new Options().windowSize({ width: 1280, height: 1024 })).build();
});
after(function (done) {
after(function () {
browser.quit();
server.stop();
rimraf.sync(repodir);
done();
fs.rmSync(repodir, { recursive: true, force: true });
});
function waitForUrl(url, done) {
browser.wait(function () {
return browser.getCurrentUrl().then(function (currentUrl) {
return currentUrl === url;
});
}, TIMEOUT).then(function () { done(); });
}
function setAvatar(done) {
browser.get('https://' + app.fqdn + '/user/settings/avatar');
browser.findElement(by.xpath('//input[@type="file" and @name="avatar"]')).sendKeys(path.resolve(__dirname, '../logo.png')).then(function () {
browser.findElement(by.xpath('//button[contains(text(), "Update Avatar Setting")]')).click();
browser.wait(until.elementLocated(by.xpath('//p[contains(text(),"updated successfully")]')), TIMEOUT).then(function () { done(); });
});
}
function checkAvatar(done) {
superagent.get('https://' + app.fqdn + '/avatars/a3e6f3316fc1738e29d621e6a26e93d3').end(function (error, result) {
expect(error).to.be(null);
expect(result.statusCode).to.be(200);
done();
});
}
function editFile(done) {
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame + '/_edit/master/newfile');
var cm = browser.findElement(by.xpath('//div[contains(@class,"CodeMirror")]'));
var text = 'yo';
browser.executeScript('arguments[0].CodeMirror.setValue("' + text + '");', cm).then(function () {
browser.findElement(by.xpath('//input[@name="commit_summary"]')).sendKeys('Dummy edit');
browser.findElement(by.xpath('//button[contains(text(), "Commit Changes")]')).click();
waitForUrl('https://' + app.fqdn + '/' + username + '/' + reponame + '/src/master/newfile', done);
});
}
xit('build app', function () {
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('can login', function (done) {
function getAppInfo() {
var inspect = JSON.parse(execSync('cloudron inspect'));
superagent.post('https://' + inspect.apiEndpoint + '/api/v1/developer/login').send({
username: username,
password: password
}).end(function (error, result) {
if (error) return done(error);
if (result.statusCode !== 200) return done(new Error('Login failed with status ' + result.statusCode));
token = result.body.token;
superagent.get('https://' + inspect.apiEndpoint + '/api/v1/profile')
.query({ access_token: token }).end(function (error, result) {
if (error) return done(error);
if (result.statusCode !== 200) return done(new Error('Get profile failed with status ' + result.statusCode));
email = result.body.email;
done();
});
});
});
it('install app', function () {
execSync('cloudron install --new --wait --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('can get app information', function () {
var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
app = inspect.apps.filter(function (a) { return a.location.indexOf(LOCATION) === 0; })[0];
expect(app).to.be.an('object');
});
}
it('can get the main page', function (done) {
superagent.get('https://' + app.fqdn).end(function (error, result) {
expect(error).to.be(null);
expect(result.status).to.eql(200);
async function waitForElement(elem) {
await browser.wait(until.elementLocated(elem), TIMEOUT);
await browser.wait(until.elementIsVisible(browser.findElement(elem)), TIMEOUT);
}
done();
});
});
function sleep(millis) {
return new Promise(resolve => setTimeout(resolve, millis));
}
it('can login', function (done) {
browser.get('https://' + app.fqdn + '/user/login');
browser.findElement(by.id('user_name')).sendKeys(username);
browser.findElement(by.id('password')).sendKeys(password);
browser.findElement(by.tagName('form')).submit();
browser.wait(until.elementLocated(by.linkText('Dashboard')), TIMEOUT).then(function () { done(); });
});
async function setAvatar() {
await browser.get('https://' + app.fqdn + '/user/settings');
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
var button = await browser.findElement(By.xpath('//label[contains(text(), "Use Custom Avatar")]'));
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
await browser.findElement(By.xpath('//label[contains(text(), "Use Custom Avatar")]')).click();
await browser.findElement(By.xpath('//input[@type="file" and @name="avatar"]')).sendKeys(path.resolve(__dirname, '../logo.png'));
await browser.findElement(By.xpath('//button[contains(text(), "Update Avatar")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(text(),"Your avatar has been updated.")]')), TIMEOUT);
}
it('can add public key', function (done) {
browser.get('https://' + app.fqdn + '/user/settings/ssh');
var publicKey = fs.readFileSync(__dirname + '/id_rsa.pub', 'utf8');
async function checkAvatar() {
await browser.get(`https://${app.fqdn}/${username}`);
browser.findElement(by.xpath('//div[text()="Add Key"]')).click();
browser.findElement(by.id('ssh-key-title')).sendKeys('testkey');
browser.findElement(by.id('ssh-key-content')).sendKeys(publicKey.trim()); // #3480
browser.findElement(by.xpath('//button[contains(text(), "Add Key")]')).click();
browser.wait(until.elementLocated(by.xpath('//p[contains(text(), "added successfully!")]')), TIMEOUT).then(function () { done(); });
});
const avatarSrc = await browser.findElement(By.xpath('//div[@id="profile-avatar"]/a/img')).getAttribute('src');
it('can create repo', function (done) {
browser.get('https://' + app.fqdn);
browser.findElement(by.linkText('New Repository')).click();
browser.wait(until.elementLocated(by.xpath('//*[contains(text(), "New Repository")]')), TIMEOUT);
browser.findElement(by.id('repo_name')).sendKeys(reponame);
browser.findElement(by.id('auto-init')).click();
browser.findElement(by.xpath('//button[contains(text(), "Create Repository")]')).click();
browser.wait(function () {
const response = await superagent.get(avatarSrc);
expect(response.statusCode).to.equal(200);
}
async function login(username, password) {
await browser.get('https://' + app.fqdn + '/user/login');
await browser.findElement(By.id('user_name')).sendKeys(username);
await browser.findElement(By.id('password')).sendKeys(password);
await browser.findElement(By.xpath('//form[@action="/user/login"]//button')).click();
await browser.wait(until.elementLocated(By.xpath('//img[contains(@class, "avatar")]')), TIMEOUT);
}
async function adminLogin() {
await login('root', 'changeme');
}
async function loginOIDC(username, password) {
browser.manage().deleteAllCookies();
await browser.get(`https://${app.fqdn}/user/login`);
await browser.sleep(2000);
await browser.findElement(By.xpath('//a[contains(@class, "openidConnect") and contains(., "Sign in with cloudron")]')).click();
await browser.sleep(2000);
if (!athenticated_by_oidc) {
await waitForElement(By.xpath('//input[@name="username"]'));
await browser.findElement(By.xpath('//input[@name="username"]')).sendKeys(username);
await browser.findElement(By.xpath('//input[@name="password"]')).sendKeys(password);
await browser.sleep(2000);
await browser.findElement(By.id('loginSubmitButton')).click();
await browser.sleep(2000);
athenticated_by_oidc = true;
}
await waitForElement(By.xpath('//img[contains(@class, "avatar")]'));
}
async function logout() {
await browser.get('https://' + app.fqdn);
await browser.findElement(By.xpath('//img[contains(@class, "avatar")]')).click();
await sleep(2000);
await browser.findElement(By.xpath('//a[@data-url="/user/logout"]')).click();
await sleep(2000);
}
async function addPublicKey() {
var publicKey = fs.readFileSync(__dirname + '/id_ed25519.pub', 'utf8');
await browser.get('https://' + app.fqdn + '/user/settings/keys');
await browser.wait(until.elementLocated(By.id('add-ssh-button')), TIMEOUT);
await browser.findElement(By.id('add-ssh-button')).click();
await browser.findElement(By.id('ssh-key-title')).sendKeys('testkey');
await browser.findElement(By.id('ssh-key-content')).sendKeys(publicKey.trim()); // #3480
var button = browser.findElement(By.xpath('//button[contains(text(), "Add Key")]'));
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
await browser.findElement(By.xpath('//form//button[contains(text(),"Add Key")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(text(), "has been added.")]')), TIMEOUT);
}
async function addPublicKeyOld() {
var publicKey = fs.readFileSync(__dirname + '/id_ed25519.pub', 'utf8');
await browser.get('https://' + app.fqdn + '/user/settings/keys');
await browser.wait(until.elementLocated(By.id('add-ssh-button')), TIMEOUT);
await browser.findElement(By.id('add-ssh-button')).click();
await browser.findElement(By.id('ssh-key-title')).sendKeys('testkey');
await browser.findElement(By.id('ssh-key-content')).sendKeys(publicKey.trim()); // #3480
var button = browser.findElement(By.xpath('//button[contains(text(), "Add Key")]'));
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
await browser.findElement(By.xpath('//button[contains(text(), "Add Key") and contains(@class, "green")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(text(), "has been added.")]')), TIMEOUT);
}
async function createRepo() {
var getRepoPage = await browser.get('https://' + app.fqdn + '/repo/create');
await browser.findElement(By.id('repo_name')).sendKeys(reponame);
var button = browser.findElement(By.xpath('//button[contains(text(), "Create Repository")]'));
await browser.executeScript('arguments[0].scrollIntoView(true)', button);
await browser.findElement(By.id('auto-init')).click();
await browser.findElement(By.xpath('//button[contains(text(), "Create Repository")]')).click();
await browser.wait(function () {
return browser.getCurrentUrl().then(function (url) {
return url === 'https://' + app.fqdn + '/' + username + '/' + reponame;
});
}, TIMEOUT).then(function () { done(); });
});
}, TIMEOUT);
}
it('displays correct clone url', function (done) {
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame);
browser.findElement(by.id('repo-clone-ssh')).click();
browser.findElement(by.id('repo-clone-url')).getAttribute('value').then(function (cloneUrl) {
expect(cloneUrl).to.be('ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git');
done();
});
});
async function checkCloneUrl() {
await browser.get('https://' + app.fqdn + '/' + username + '/' + reponame);
await browser.findElement(By.id('repo-clone-ssh')).click();
it('can clone the url', function (done) {
var cloneUrl = await browser.findElement(By.id('repo-clone-url')).getAttribute('value');
expect(cloneUrl).to.be(`ssh://git@${app.fqdn}:${SSH_PORT}/${username}/${reponame}.git`);
}
function cloneRepo() {
fs.rmSync(repodir, { recursive: true, force: true });
var env = Object.create(process.env);
env.GIT_SSH = __dirname + '/git_ssh_wrapper.sh';
execSync('git clone ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git ' + repodir, { env: env });
done();
});
execSync(`git clone ssh://git@${app.fqdn}:${SSH_PORT}/${username}/${reponame}.git ${repodir}`, { env: env });
}
it('can add and push a file', function (done) {
var env = Object.create(process.env);
function pushFile() {
const env = Object.create(process.env);
env.GIT_SSH = __dirname + '/git_ssh_wrapper.sh';
execSync('touch newfile && git add newfile && git commit -a -mx && git push ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + ' master',
execSync(`touch newfile && git add newfile && git commit -a -mx && git push ssh://git@${app.fqdn}:${SSH_PORT}/${username}/${reponame} main`,
{ env: env, cwd: repodir });
rimraf.sync('/tmp/testrepo');
done();
});
fs.rmSync(repodir, { recursive: true, force: true });
}
it('can edit file', editFile);
it('can restart app', function (done) {
execSync('cloudron restart');
done();
});
it('can clone the url', function (done) {
var env = Object.create(process.env);
env.GIT_SSH = __dirname + '/git_ssh_wrapper.sh';
execSync('git clone ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git ' + repodir, { env: env });
function fileExists() {
expect(fs.existsSync(repodir + '/newfile')).to.be(true);
rimraf.sync(repodir);
done();
});
}
it('backup app', function () {
execSync('cloudron backup create --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
async function sendMail() {
await browser.get(`https://${app.fqdn}/admin/config`);
it('restore app', function () {
execSync('cloudron restore --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
var button = await browser.findElement(By.xpath('//button[contains(text(), "Send")]'));
await browser.executeScript('arguments[0].scrollIntoView(true)', button);
await browser.findElement(By.xpath('//input[@name="email"]')).sendKeys('test@cloudron.io');
await browser.findElement(By.xpath('//button[contains(text(), "Send")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(text(), "A testing email has been sent")]')), TIMEOUT);
}
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
it('install app', function () { execSync(`cloudron install --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
it('can get app information', getAppInfo);
it('can admin login', adminLogin);
it('can send mail', sendMail);
it('can logout', logout);
it('can login', loginOIDC.bind(null, username, password));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
it('can clone the url', function (done) {
var env = Object.create(process.env);
env.GIT_SSH = __dirname + '/git_ssh_wrapper.sh';
execSync('git clone ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git ' + repodir, { env: env });
expect(fs.existsSync(repodir + '/newfile')).to.be(true);
rimraf.sync(repodir);
done();
});
it('can add public key', addPublicKey);
it('move to different location', function () {
browser.manage().deleteAllCookies();
execSync('cloudron configure --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0];
expect(app).to.be.an('object');
});
it('can create repo', createRepo);
it('can login', function (done) {
browser.get('https://' + app.fqdn + '/user/login');
browser.findElement(by.id('user_name')).sendKeys(username);
browser.findElement(by.id('password')).sendKeys(password);
browser.findElement(by.tagName('form')).submit();
browser.wait(until.elementLocated(by.linkText('Dashboard')), TIMEOUT).then(function () { done(); });
});
it('displays correct clone url', checkCloneUrl);
it('can clone the url', cloneRepo);
it('can add and push a file', pushFile);
it('can restart app', function () { execSync('cloudron restart --app ' + app.id); });
xit('can login', loginOIDC.bind(null, username, password)); // no need to relogin since session persists
it('displays correct clone url', checkCloneUrl);
it('can clone the url', cloneRepo);
it('file exists in repo', fileExists);
it('backup app', function () { execSync('cloudron backup create --app ' + app.id, EXEC_ARGS); });
it('restore app', function () { execSync('cloudron restore --app ' + app.id, EXEC_ARGS); });
it('can login', loginOIDC.bind(null, username, password));
it('can get avatar', checkAvatar);
it('can clone the url', cloneRepo);
it('file exists in repo', function () { expect(fs.existsSync(repodir + '/newfile')).to.be(true); });
it('displays correct clone url', function (done) {
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame);
browser.findElement(by.id('repo-clone-ssh')).click();
browser.findElement(by.id('repo-clone-url')).getAttribute('value').then(function (cloneUrl) {
expect(cloneUrl).to.be('ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git');
done();
});
it('move to different location', async function () {
//browser.manage().deleteAllCookies(); // commented because of error "'Network.deleteCookie' wasn't found"
// ensure we don't hit NXDOMAIN in the mean time
await browser.get('about:blank');
execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, EXEC_ARGS);
});
it('can get app information', getAppInfo);
it('can login', loginOIDC.bind(null, username, password));
it('can get avatar', checkAvatar);
it('displays correct clone url', checkCloneUrl);
it('can clone the url', cloneRepo);
it('file exists in repo', function () { expect(fs.existsSync(repodir + '/newfile')).to.be(true); });
it('uninstall app', async function () {
// ensure we don't hit NXDOMAIN in the mean time
await browser.get('about:blank');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
it('can clone the url', function (done) {
var env = Object.create(process.env);
env.GIT_SSH = __dirname + '/git_ssh_wrapper.sh';
execSync('git clone ssh://git@' + app.fqdn + ':29418/' + username + '/' + reponame + '.git ' + repodir, { env: env });
expect(fs.existsSync(repodir + '/newfile')).to.be(true);
rimraf.sync(repodir);
done();
// No SSO
it('install app (no sso)', function () { execSync(`cloudron install --no-sso --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
it('can get app information', getAppInfo);
it('can admin login (no sso)', adminLogin);
it('can logout', logout);
it('uninstall app (no sso)', async function () {
await browser.get('about:blank');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
it('uninstall app', function () {
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
// test update
it('can install app', function () { execSync(`cloudron install --appstore-id ${app.manifest.id} --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
// check if the _first_ login via email succeeds
it('can login via email', function (done) {
execSync('cloudron install --new --wait --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
var inspect = JSON.parse(execSync('cloudron inspect'));
it('can get app information', getAppInfo);
it('can login', loginOIDC.bind(null, username, password));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
it('can add public key', addPublicKey);
it('can create repo', createRepo);
it('can clone the url', cloneRepo);
it('can add and push a file', pushFile);
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
expect(app).to.be.an('object');
it('can update', function () { execSync('cloudron update --app ' + app.id, EXEC_ARGS); });
it('can get app information', getAppInfo);
browser.get('https://' + app.fqdn + '/user/login');
browser.findElement(by.id('user_name')).sendKeys(email);
browser.findElement(by.id('password')).sendKeys(password);
browser.findElement(by.tagName('form')).submit();
browser.wait(until.elementLocated(by.linkText('Dashboard')), TIMEOUT).then(function () {
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
done();
});
it('can admin login', adminLogin);
it('can send mail', sendMail);
it('can logout', logout);
it('can login', loginOIDC.bind(null, username, password));
it('can get avatar', checkAvatar);
it('can clone the url', cloneRepo);
it('file exists in cloned repo', fileExists);
it('uninstall app', async function () {
// ensure we don't hit NXDOMAIN in the mean time
await browser.get('about:blank');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
});