1
0
mirror of https://git.cloudron.io/cloudron/gitea-app synced 2025-09-24 14:07:45 +00:00

Compare commits

...

295 Commits

Author SHA1 Message Date
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
15 changed files with 4171 additions and 307 deletions

View File

@@ -1,15 +0,0 @@
[0.1.0]
* Initial package (forked from Gogs app)
[0.1.1]
* Removed reference to Gogs
[0.1.2]
* Updated description
[0.1.3]
* Updated to version 1.1.2
[1.0.0]
* Update to version 1.1.3

1232
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,12 +4,14 @@
"author": "Gitea developers",
"description": "file://DESCRIPTION.md",
"tagline": "A painless self-hosted Git Service",
"version": "1.0.0",
"healthCheckPath": "/healthcheck",
"version": "1.29.0",
"upstreamVersion": "1.20.0",
"healthCheckPath": "/explore",
"httpPort": 3000,
"memoryLimit": 536870912,
"addons": {
"mysql": { },
"sendmail": { },
"sendmail": { "supportsDisplayName": true },
"localstorage": { },
"ldap": { }
},
@@ -20,18 +22,22 @@
"defaultValue": 29418
}
},
"manifestVersion": 1,
"manifestVersion": 2,
"website": "https://gitea.io",
"contactEmail": "apps@cloudron.io",
"icon": "file://logo.png",
"optionalSso": true,
"mediaLinks": [
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/1.png",
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/2.png",
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/3.png",
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/4.png",
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/5.png"
"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.3.0",
"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](https://blog.gitea.io/2016/12/welcome-to-gitea/) blog post.
This app packages Gitea <upstream>1.1.3</upstream>
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab.
### Purpose

View File

@@ -1,11 +1,10 @@
FROM cloudron/base:0.10.0
ENV VERSION 1.1.3
FROM cloudron/base:4.0.0@sha256:31b195ed0662bdb06a6e8a5ddbedb6f191ce92e8bee04c03fb02dd4e9d0286df
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.20.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 edit `/app/data/app.ini` and add 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

@@ -64,7 +64,8 @@ SKIP_VERIFY = true
; 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
@@ -95,3 +96,32 @@ 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

103
start.sh
View File

@@ -2,32 +2,63 @@
set -eu -o pipefail
mkdir -p /run/gitea/tmp/uploads
mkdir -p /run/gitea/tmp/uploads /run/sshd /run/gitea/sessions
setup_ldap_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"
sleep 1
done
echo "==> Setup LDAP source"
# Get the existing LDAP source status. This allows the user to disable LDAP
# Note that this method is deprecated since this app now supports optionalSso
ldap_status=$(mysql -u"${CLOUDRON_MYSQL_USERNAME}" -p"${CLOUDRON_MYSQL_PASSWORD}" -h mysql --database="${CLOUDRON_MYSQL_DATABASE}" -N -B -e "select is_active from login_source WHERE name='cloudron';")
[[ -z "${ldap_status}" ]] && ldap_status="1"
now=$(date +%s)
# 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 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}"
if 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,2,'cloudron',${ldap_status},'{\"Name\":\"cloudron\",\"Host\":\"${CLOUDRON_LDAP_SERVER}\",\"Port\":${CLOUDRON_LDAP_PORT},\"UseSSL\":false,\"SkipVerify\":true,\"BindDN\":\"${CLOUDRON_LDAP_BIND_DN}\",\"BindPassword\":\"${CLOUDRON_LDAP_BIND_PASSWORD}\",\"UserBase\":\"${CLOUDRON_LDAP_USERS_BASE_DN}\",\"AttributeUsername\":\"username\",\"AttributeName\":\"displayname\",\"AttributeSurname\":\"\",\"AttributeMail\":\"mail\",\"Filter\":\"(\\\\u007C(mail=%[1]s)(username=%[1]s))\"}','${now}','${now}');"; then
echo "==> LDAP Authentication was setup with activation status ${ldap_status}"
else
echo "Failed to setup LDAP authentication"
echo "==> Failed to setup LDAP authentication"
exit 1
fi
}
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
echo "==> Gitea is up, setting up auth"
if [[ -n "${CLOUDRON_LDAP_SERVER:-}" ]]; then
setup_ldap_source
fi
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
}
# SSH_PORT can be unset to disable SSH
disable_ssh="false"
if [[ -z "${SSH_PORT:-}" ]]; then
@@ -50,30 +81,28 @@ 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
cp /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
# create default user config file
if ! [ -f /app/data/app.ini ]; then
cp /home/git/app.ini.template /app/data/app.ini
echo "==> Generating new SECRET_KEY"
crudini --set "/app/data/app.ini" security SECRET_KEY $(pwgen -1 -s)
fi
# 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 "${MYSQL_HOST}:${MYSQL_PORT}"
crudini --set "/run/gitea/app.ini" database NAME "${MYSQL_DATABASE}"
crudini --set "/run/gitea/app.ini" database USER "${MYSQL_USERNAME}"
crudini --set "/run/gitea/app.ini" database PASSWD "${MYSQL_PASSWORD}"
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 "${APP_DOMAIN}"
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"
@@ -82,23 +111,23 @@ 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 HOST "${MAIL_SMTP_SERVER}:${MAIL_SMTP_PORT}"
crudini --set "/run/gitea/app.ini" mailer USER "${MAIL_SMTP_USERNAME}"
crudini --set "/run/gitea/app.ini" mailer PASSWD "${MAIL_SMTP_PASSWORD}"
crudini --set "/run/gitea/app.ini" mailer FROM "${MAIL_FROM}"
crudini --set "/run/gitea/app.ini" mailer HOST "${CLOUDRON_MAIL_SMTP_SERVER}:${CLOUDRON_MAIL_SMTPS_PORT}"
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 SKIP_VERIFY "true"
crudini --set "/run/gitea/app.ini" security SECRET_KEY $(pwgen -1 -s)
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"
mkdir -p /app/data/repository /app/data/ssh
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

2560
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": "^114.0.2",
"expect.js": "^0.3.1",
"mocha": "^10.2.0",
"selenium-webdriver": "^4.10.0",
"superagent": "^8.0.9"
}
}

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,228 +9,181 @@
'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 TIMEOUT = parseInt(process.env.TIMEOUT, 10) || 5000;
var EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' };
var LOCATION = 'test';
var SSH_PORT = 29420;
var app;
var browser;
var repodir = '/tmp/testrepo';
var app, reponame = 'testrepo';
var reponame = 'testrepo';
var username = process.env.USERNAME;
var password = process.env.PASSWORD;
var TIMEOUT = parseInt(process.env.TIMEOUT, 10) || 5000;
var email, token;
var email = process.env.EMAIL;
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'));
var seleniumJar= require('selenium-server-standalone-jar');
var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
server = new SeleniumServer(seleniumJar.path, { port: 4444 });
server.start();
done();
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 getAppInfo() {
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');
}
function setAvatar(done) {
browser.get('https://' + app.fqdn + '/user/settings/avatar').then(function () {
return browser.findElement(by.xpath('//input[@type="file" and @name="avatar"]')).sendKeys(path.resolve(__dirname, '../logo.png'));
}).then(function () {
return browser.findElement(by.xpath('//button[contains(text(), "Update Avatar Setting")]')).click();
}).then(function () {
browser.wait(until.elementLocated(by.xpath('//p[contains(text(),"updated successfully")]')), TIMEOUT).then(function () { done(); });
});
function sleep(millis) {
return new Promise(resolve => setTimeout(resolve, millis));
}
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();
});
async function setAvatar() {
await browser.get('https://' + app.fqdn + '/user/settings');
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);
}
function editFile(done) {
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame + '/_edit/master/newfile').then(function () {
var cm = browser.findElement(by.xpath('//div[contains(@class,"CodeMirror")]'));
var text = 'yo';
return browser.executeScript('arguments[0].CodeMirror.setValue("' + text + '");', cm);
}).then(function () {
return browser.findElement(by.xpath('//input[@name="commit_summary"]')).sendKeys('Dummy edit');
}).then(function () {
return browser.findElement(by.xpath('//button[contains(text(), "Commit Changes")]')).click();
}).then(function () {
waitForUrl('https://' + app.fqdn + '/' + username + '/' + reponame + '/src/master/newfile', done);
});
async function checkAvatar() {
await browser.get(`https://${app.fqdn}/${username}`);
const avatarSrc = await browser.findElement(By.xpath('//div[@id="profile-avatar"]/a/img')).getAttribute('src');
const response = await superagent.get(avatarSrc);
expect(response.statusCode).to.equal(200);
}
function login(done) {
browser.get('https://' + app.fqdn + '/user/login').then(function () {
return browser.findElement(by.id('user_name')).sendKeys(username);
}).then(function () {
return browser.findElement(by.id('password')).sendKeys(password);
}).then(function () {
return browser.findElement(by.tagName('form')).submit();
}).then(function () {
return browser.wait(until.elementLocated(by.linkText('Dashboard')), TIMEOUT);
}).then(function () {
done();
});
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);
}
function addPublicKey(done) {
async function adminLogin() {
await login('root', 'changeme');
}
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_rsa.pub', 'utf8');
browser.get('https://' + app.fqdn + '/user/settings/ssh').then(function () {
return browser.findElement(by.xpath('//div[text()="Add Key"]')).click();
}).then(function () {
return browser.findElement(by.id('ssh-key-title')).sendKeys('testkey');
}).then(function () {
return browser.findElement(by.id('ssh-key-content')).sendKeys(publicKey.trim()); // #3480
}).then(function () {
return browser.findElement(by.xpath('//button[contains(text(), "Add Key")]')).click();
}).then(function () {
return browser.wait(until.elementLocated(by.xpath('//p[contains(text(), "added successfully!")]')), TIMEOUT);
}).then(function () {
done();
});
const sshPage = 'https://' + app.fqdn + '/user/settings/keys';
await browser.get(sshPage);
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")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(text(), "has been added.")]')), TIMEOUT);
}
function createRepo(done) {
browser.get('https://' + app.fqdn).then(function () {
return browser.findElement(by.linkText('New Repository')).click();
}).then(function () {
return browser.wait(until.elementLocated(by.xpath('//*[contains(text(), "New Repository")]')), TIMEOUT);
}).then(function () {
return browser.findElement(by.id('repo_name')).sendKeys(reponame);
}).then(function () {
return browser.findElement(by.id('auto-init')).click();
}).then(function () {
return browser.findElement(by.xpath('//button[contains(text(), "Create Repository")]')).click();
}).then(function () {
browser.wait(function () {
return browser.getCurrentUrl().then(function (url) {
return url === 'https://' + app.fqdn + '/' + username + '/' + reponame;
});
}, TIMEOUT);
}).then(function () {
done();
});
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);
}
function checkCloneUrl(done) {
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame).then(function () {
return browser.findElement(by.id('repo-clone-ssh')).click();
}).then(function () {
return 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();
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(done) {
rimraf.sync(repodir);
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 });
}
function pushFile(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 });
}
function fileExists() {
expect(fs.existsSync(repodir + '/newfile')).to.be(true);
}
xit('build app', function () {
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
async function sendMail() {
await browser.get(`https://${app.fqdn}/admin/config`);
it('can login', function (done) {
var inspect = JSON.parse(execSync('cloudron inspect'));
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);
}
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' });
});
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 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);
done();
});
});
it('can admin login', adminLogin);
it('can send mail', sendMail);
it('can logout', logout);
it('can login', login);
it('can login', login.bind(null, username, password));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
@@ -243,69 +196,60 @@ describe('Application life cycle test', function () {
it('can clone the url', cloneRepo);
it('can add and push a file', pushFile);
it('can edit file', editFile);
it('can restart app', function (done) {
execSync('cloudron restart --wait');
done();
});
it('can restart app', function () { execSync('cloudron restart --app ' + app.id); });
it('can clone the url', checkCloneUrl);
xit('can login', login.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, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('restore app', function () {
execSync('cloudron restore --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
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', login.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('move to different location', function () {
browser.manage().deleteAllCookies();
execSync('cloudron configure --wait --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('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');
it('can login', login);
execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, EXEC_ARGS);
});
it('can get app information', getAppInfo);
it('can login', login.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', function () {
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
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);
});
// 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'));
// No SSO
it('install app (no sso)', function () { execSync(`cloudron install --no-sso --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
expect(app).to.be.an('object');
it('can get app information', getAppInfo);
it('can admin login (no sso)', adminLogin);
it('can logout', logout);
login(function (error) {
if (error) return done(error);
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
done();
});
it('uninstall app (no sso)', async function () {
await browser.get('about:blank');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
// test update
it('can install app', function () {
execSync('cloudron install --new --wait --appstore-id ' + app.manifest.id + ' --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('can install app', function () { execSync(`cloudron install --appstore-id ${app.manifest.id} --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
it('can get app information', getAppInfo);
it('can login', login);
it('can login', login.bind(null, username, password));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
it('can add public key', addPublicKey);
@@ -313,15 +257,21 @@ describe('Application life cycle test', function () {
it('can clone the url', cloneRepo);
it('can add and push a file', pushFile);
it('can update', function () {
execSync('cloudron install --wait --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('can update', function () { execSync('cloudron update --app ' + app.id, 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', login.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', function () {
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
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);
});
});