Compare commits

...

384 commits

Author SHA1 Message Date
Package Updates
d0d4b89f12 Update package version to 1.35.3 2025-04-08 09:27:03 +00:00
Renovate Bot
16253c0192 chore(deps): update dependency go-gitea/gitea to v1.23.7
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.6 | 1.23.7 |
2025-04-08 07:45:24 +00:00
Package Updates
c9ba138d8a Update package version to 1.35.2 2025-03-25 07:58:30 +00:00
Renovate Bot
7337ff8517 chore(deps): update dependency go-gitea/gitea to v1.23.6
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.5 | 1.23.6 |
2025-03-25 07:13:13 +00:00
Package Updates
94f2007015 Update package version to 1.35.1 2025-03-21 12:09:25 +00:00
Ian Fijolek
1110ee23e2 And port number 2025-03-21 12:51:33 +01:00
Ian Fijolek
ccaa24df33 Found another location 2025-03-20 19:33:57 +00:00
Ian Fijolek
9c4f201845 Fix hard coded mysql hostname 2025-03-20 19:31:55 +00:00
Package Updates
2f0edb0cb4 Update package version to 1.35.0 2025-03-05 15:36:24 +00:00
Girish Ramakrishnan
217b6ad97d need to create path 2025-03-05 15:58:05 +01:00
Girish Ramakrishnan
cb0adb4d95 use pipx to install pip binaries 2025-03-05 15:46:19 +01:00
Girish Ramakrishnan
574bb07847 git user must be enabled 2025-03-05 14:13:26 +01:00
Girish Ramakrishnan
d259e03bee Update base image to 5.0.0 2025-03-05 14:12:14 +01:00
Package Updates
edf51f882f Update package version to 1.34.4 2025-03-05 09:20:36 +00:00
Renovate Bot
96e8c6b370 chore(deps): update dependency go-gitea/gitea to v1.23.5
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.4 | 1.23.5 |
2025-03-05 08:10:46 +00:00
Package Updates
c0384ea5db Update package version to 1.34.3 2025-02-19 12:29:02 +00:00
Renovate Bot
ffc49beb18 chore(deps): update dependency go-gitea/gitea to v1.23.4
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.3 | 1.23.4 |
2025-02-19 12:16:25 +00:00
Package Updates
b51354ea67 Update package version to 1.34.2 2025-02-06 09:06:13 +00:00
Renovate Bot
3017db2ca3 chore(deps): update dependency go-gitea/gitea to v1.23.3
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.1 | 1.23.3 |
2025-02-06 08:50:59 +00:00
Package Updates
afc6c1a336 Update package version to 1.34.1 2025-01-10 09:17:06 +00:00
Renovate Bot
856e8ffded chore(deps): update dependency go-gitea/gitea to v1.23.1
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.23.0 | 1.23.1 |
2025-01-10 08:46:05 +00:00
Package Updates
0e8051524b Update package version to 1.34.0 2025-01-09 11:26:55 +00:00
Girish Ramakrishnan
343c4f4487 Fix tests 2025-01-09 12:17:46 +01:00
Renovate Bot
fa8b746489 chore(deps): update dependency go-gitea/gitea to v1.23.0
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.22.6 | 1.23.0 |
2025-01-09 08:44:12 +00:00
Package Updates
e703139dad Update package version to 1.33.6 2024-12-13 23:00:14 +00:00
Renovate Bot
038c2634f7 chore(deps): update dependency go-gitea/gitea to v1.22.6
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.22.5 | 1.22.6 |
2024-12-13 17:20:40 +00:00
Package Updates
506fc44188 Update package version to 1.33.5 2024-12-11 22:21:00 +00:00
Renovate Bot
b37adcbcba chore(deps): update dependency go-gitea/gitea to v1.22.5
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.22.4 | 1.22.5 |
2024-12-11 22:10:56 +00:00
Johannes Zellner
d5b80c9393 Mention why CLOUDRON_OIDC_PROVIDER_NAME is not supported 2024-12-09 12:25:51 +01:00
Johannes Zellner
e180f84aef use checklists in manifest 2024-12-09 12:24:46 +01:00
Package Updates
090c4c43a8 Update package version to 1.33.4 2024-11-26 04:08:17 +00:00
Renovate Bot
ce1c328a27 chore(deps): update dependency go-gitea/gitea to v1.22.4
| datasource      | package        | from   | to     |
| --------------- | -------------- | ------ | ------ |
| github-releases | go-gitea/gitea | 1.22.3 | 1.22.4 |
2024-11-26 02:34:19 +00:00
Girish Ramakrishnan
e76784cb8f Update renovate.json5 2024-11-04 17:10:01 +00:00
Girish Ramakrishnan
64d8d5b661 Add renovate.json5 2024-11-04 17:02:57 +00:00
Girish Ramakrishnan
bf30c8e13b Delete renovate.json 2024-11-04 16:56:47 +00:00
Girish Ramakrishnan
381562f347 Delete .gitlab-ci.yml 2024-11-04 08:37:59 +00:00
Girish Ramakrishnan
ffa9d52206 Version 1.33.3 2024-10-09 09:43:30 +02:00
Girish Ramakrishnan
7d0d52ceae change perms 2024-10-09 09:36:48 +02:00
Girish Ramakrishnan
f19465b3d6 Fix test 2024-10-09 09:28:39 +02:00
Girish Ramakrishnan
662cfae820 Update test packages 2024-10-09 09:19:11 +02:00
Renovate Bot
e365f033d1 chore(deps): update dependency go-gitea/gitea to v1.22.3 2024-10-09 07:14:02 +00:00
Renovate Bot
b8e5fcc22d chore(deps): add renovate.json 2024-10-09 07:13:02 +00:00
Girish Ramakrishnan
a176ab5f20 Add renovate 2024-10-09 07:11:32 +00:00
Girish Ramakrishnan
9b773524ce add ci files 2024-10-09 09:08:28 +02:00
Girish Ramakrishnan
9c4088e812 Version 1.33.2 2024-09-05 21:34:44 +02:00
Girish Ramakrishnan
c956c27334 Update test packages 2024-09-05 21:30:47 +02:00
Girish Ramakrishnan
75aa1f09a5 Update Gitea to 1.22.2 2024-09-05 21:29:09 +02:00
Johannes Zellner
9f363fb373 Bump version 2024-07-04 12:51:32 +02:00
Johannes Zellner
e06c3d5bb5 Update test deps 2024-07-04 12:25:11 +02:00
Johannes Zellner
aa7a6f9d69 Update to 1.22.1 2024-07-04 12:25:04 +02:00
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
20 changed files with 5762 additions and 431 deletions

View file

@ -1,50 +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
[1.0.1]
* Update Git to v2.7.4-0ubuntu1.2
* Fixes critical security issue that allows remote command execution in git
* https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-1000117.html
[1.0.2]
* Preserve SECRET_KEY across updates and restarts
[1.0.3]
* Update to version 1.1.4
[1.1.0]
* Update to version 1.2.0
* New logo!
* SECURITY: Sanitation fix from Gogs (#1461)
* Status-API
* Implement GPG api
* https://github.com/go-gitea/gitea/releases/tag/v1.2.0
[1.1.1]
* Update to version 1.2.1
* Fix PR, milestone and label functionality if issue unit is disabled (#2710) (#2714)
* Fix plain readme didn't render correctly on repo home page (#2705) (#2712)
* Fix so that user can still fork his own repository to his organizations (#2699) (#2707)
* Fix .netrc authentication (#2700) (#2708)
* Fix slice out of bounds error in mailer (#2479) (#2696)
[1.1.2]
* Update to version 1.2.2
* Add checks for commits with missing author and time (#2771) (#2785)
* Fix sending mail with a non-latin display name (#2559) (#2783)
* Sync MaxGitDiffLineCharacters with conf/app.ini (#2779) (#2780)
* Update vendor git (#2765) (#2772)
* Fix emojify image URL (#2769) (#2773)

1762
CHANGELOG.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -4,14 +4,20 @@
"author": "Gitea developers",
"description": "file://DESCRIPTION.md",
"tagline": "A painless self-hosted Git Service",
"version": "1.1.2",
"healthCheckPath": "/healthcheck",
"version": "1.35.3",
"upstreamVersion": "1.23.7",
"healthCheckPath": "/explore",
"httpPort": 3000,
"memoryLimit": 536870912,
"addons": {
"mysql": { },
"sendmail": { },
"localstorage": { },
"ldap": { }
"mysql": {},
"sendmail": {
"supportsDisplayName": true
},
"localstorage": {},
"oidc": {
"loginRedirectUri": "/user/oauth2/cloudron/callback"
}
},
"tcpPorts": {
"SSH_PORT": {
@ -20,18 +26,35 @@
"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",
"checklist": {
"change-default-password": {
"message": "Change the default admin password"
}
},
"minBoxVersion": "8.1.0",
"forumUrl": "https://forum.cloudron.io/category/19/gitea",
"documentationUrl": "https://docs.cloudron.io/apps/gitea/"
}

View file

@ -1,5 +1,3 @@
This app packages Gitea <upstream>1.2.2</upstream>
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab.
### Purpose

View file

@ -1,22 +1,27 @@
FROM cloudron/base:0.10.0
ENV VERSION 1.2.2
FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
RUN apt-get update && \
apt-get install -y openssh-server git && \
apt-get install -y openssh-server git asciidoctor pandoc pipx && \
rm -rf /etc/ssh_host_* && \
rm -r /var/cache/apt /var/lib/apt/lists
# pipx --global does not work, not sure why
RUN PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install jupyter docutils --include-deps
ADD supervisor/ /etc/supervisor/conf.d/
RUN adduser --disabled-login --gecos 'Gitea' git
# by default, git account is created as inactive which prevents login via openssh
# https://github.com/gitlabhq/gitlabhq/issues/5304
RUN passwd -d git
RUN useradd --comment "Gogs" --create-home --shell /bin/bash git
RUN passwd -d git # by default, git account is created as inactive which prevents login via openssh. this disables password for account
WORKDIR /home/git
RUN mkdir -p /home/git/gitea
## TODO: use redis as well
RUN curl -L https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64 -o /home/git/gitea/gitea \
# for autosign feature
ENV GNUPGHOME="/app/data/gnupg"
# renovate: datasource=github-releases depName=go-gitea/gitea versioning=semver extractVersion=^v(?<version>.+)$
ARG GITEA_VERSION=1.23.7
RUN mkdir -p /home/git/gitea && \
curl -L https://github.com/go-gitea/gitea/releases/download/v${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64 -o /home/git/gitea/gitea \
&& chmod +x /home/git/gitea/gitea
# setup config paths
@ -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,8 @@
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:
* 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.
**Username**: root<br/>
**Password**: changeme<br/>
<sso>
Use the `Local` authentication source for logging in as admin.
</sso>

View file

@ -48,23 +48,31 @@ ENABLED = true
; APP_DATA_PATH/attachments
PATH =
[oauth2_client]
ENABLE_AUTO_REGISTRATION = true
USERNAME = sub
UPDATE_AVATAR = false
ACCOUNT_LINKING = auto
[mailer]
ENABLED = true
; those settings are protected and can't be modified
HOST = ##MAIL_SERVER:##MAIL_PORT
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
@ -95,3 +103,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

4
renovate.json5 Normal file
View file

@ -0,0 +1,4 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>devops/renovator//default.renovate.json5"]
}

37
sshd_config Normal file
View file

@ -0,0 +1,37 @@
Port 29418
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
HostKey /app/data/sshd/ssh_host_rsa_key
HostKey /app/data/sshd/ssh_host_ecdsa_key
HostKey /app/data/sshd/ssh_host_ed25519_key
LogLevel INFO
# no reverse DNS lookup
UseDNS no
UsePAM no
AllowAgentForwarding no
AllowTcpForwarding no
PrintMotd no
PrintLastLog no
LoginGraceTime 120
StrictModes yes
PubkeyAuthentication yes
PermitUserEnvironment yes
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
HostbasedAuthentication no
AllowUsers git
Banner none
Subsystem sftp /usr/lib/ssh/sftp-server
AcceptEnv GIT_PROTOCOL LANG LC_*

101
start.sh
View file

@ -2,29 +2,50 @@
set -eu -o pipefail
mkdir -p /run/gitea/tmp/uploads
mkdir -p /run/gitea/tmp/uploads /run/sshd /run/gitea/sessions
setup_ldap_source() {
# CLOUDRON_OIDC_PROVIDER_NAME not supported as it will be used in rest route!
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"${CLOUDRON_MYSQL_HOST}" -P"${CLOUDRON_MYSQL_PORT}" --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"${CLOUDRON_MYSQL_HOST}" -P"${CLOUDRON_MYSQL_PORT}" --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 +71,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
fi
if [ "$(crudini --get /app/data/app.ini security SECRET_KEY)" == "##SECRET_KEY" ]; then
echo "Generating new SECRET_KEY"
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"
@ -87,22 +101,25 @@ 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 SKIP_VERIFY "true"
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"
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

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

3593
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": "^135.0.0",
"expect.js": "^0.3.1",
"mocha": "^11.1.0",
"selenium-webdriver": "^4.31.0",
"superagent": "^10.2.0"
}
}

View file

@ -1,267 +1,214 @@
#!/usr/bin/env node
/* jslint node:true */
/* global it:false */
/* global xit:false */
/* global describe:false */
/* global before:false */
/* global after:false */
/* jshint esversion: 8 */
/* global it, xit, describe, before, after, afterEach */
'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 = parseInt(process.env.TIMEOUT, 10) || 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 = process.env.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;
done();
const repodir = '/tmp/testrepo';
const reponame = 'testrepo';
const username = process.env.USERNAME;
const password = process.env.PASSWORD;
before(function () {
const chromeOptions = new Options().windowSize({ width: 1280, height: 1024 });
if (process.env.CI) chromeOptions.addArguments('no-sandbox', 'disable-dev-shm-usage', 'headless');
browser = new Builder().forBrowser('chrome').setChromeOptions(chromeOptions).build();
if (!fs.existsSync('./screenshots')) fs.mkdirSync('./screenshots');
});
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(); });
}
afterEach(async function () {
if (!process.env.CI || !app) return;
const currentUrl = await browser.getCurrentUrl();
if (!currentUrl.includes(app.domain)) return;
expect(this.currentTest.title).to.be.a('string');
const screenshotData = await browser.takeScreenshot();
fs.writeFileSync(`./screenshots/${new Date().getTime()}-${this.currentTest.title.replaceAll(' ', '_')}.png`, screenshotData, 'base64');
});
function getAppInfo() {
var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
const inspect = JSON.parse(execSync('cloudron inspect'));
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 () {
if (app.manifest.version === '1.0.3') {
return browser.wait(until.elementLocated(by.xpath('//p[contains(text(),"updated successfully")]')), TIMEOUT);
} else {
return browser.wait(until.elementLocated(by.xpath('//p[contains(text(),"Your avatar setting has been updated.")]')), TIMEOUT);
}
}).then(function () {
done();
});
async function waitForElement(elem) {
await browser.wait(until.elementLocated(elem), TIMEOUT);
await browser.wait(until.elementIsVisible(browser.findElement(elem)), TIMEOUT);
}
function checkAvatar(done) {
return 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 sleep(millis) {
return new Promise(resolve => setTimeout(resolve, millis));
}
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 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 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 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 addPublicKey(done) {
var publicKey = fs.readFileSync(__dirname + '/id_rsa.pub', 'utf8');
async function login(username, password) {
await browser.get('https://' + app.fqdn + '/user/login');
var sshPage;
if (app.manifest.version === '1.0.3') {
sshPage = 'https://' + app.fqdn + '/user/settings/ssh';
} else {
sshPage = 'https://' + app.fqdn + '/user/settings/keys';
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, alreadyAuthenticated = true) {
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 (!alreadyAuthenticated) {
await waitForElement(By.id('inputUsername'));
await browser.findElement(By.id('inputUsername')).sendKeys(username);
await browser.findElement(By.id('inputPassword')).sendKeys(password);
await browser.sleep(2000);
await browser.findElement(By.id('loginSubmitButton')).click();
await browser.sleep(2000);
}
browser.get(sshPage).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 () {
var button = browser.findElement(by.xpath('//button[contains(text(), "Add Key")]'));
return browser.executeScript('arguments[0].scrollIntoView(false)', button);
}).then(function () {
return browser.findElement(by.xpath('//button[contains(text(), "Add Key")]')).click();
}).then(function () {
if (app.manifest.version === '1.0.3') {
return browser.wait(until.elementLocated(by.xpath('//p[contains(text(), "added successfully!")]')), TIMEOUT);
} else {
return browser.wait(until.elementLocated(by.xpath('//p[contains(text(), "has been added.")]')), TIMEOUT);
}
}).then(function () {
done();
});
await waitForElement(By.xpath('//img[contains(@class, "avatar")]'));
}
function createRepo(done) {
var getRepoPage;
if (app.manifest.version === '1.0.3') {
getRepoPage = 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);
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() {
const publicKey = fs.readFileSync(__dirname + '/id_ed25519.pub', 'utf8');
execSync(`chmod g-rw,o-rw ${__dirname}/id_ed25519`); // ssh will complain about perms later
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 createRepo() {
await browser.get(`https://${app.fqdn}/repo/create`);
await browser.wait(until.elementLocated(By.id('repo_name')));
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;
});
} else {
getRepoPage = browser.get('https://' + app.fqdn + '/repo/create');
}
getRepoPage.then(function () {
return browser.findElement(by.id('repo_name')).sendKeys(reponame);
}).then(function () {
var button = browser.findElement(by.xpath('//button[contains(text(), "Create Repository")]'));
return browser.executeScript('arguments[0].scrollIntoView(true)', button);
}).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();
});
}, 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();
});
}
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`);
await browser.sleep(3000);
const button = await browser.findElement(By.xpath('//button[contains(., "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(., "Send")]')).click();
await browser.wait(until.elementLocated(By.xpath('//p[contains(., "A testing email has been sent")]')), TIMEOUT);
}
it('can login', function (done) {
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' });
});
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', loginOIDC.bind(null, username, password, false));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
@ -269,76 +216,61 @@ return done();
it('can create repo', createRepo);
it('displays correct clone url', checkCloneUrl);
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 login', login);
it('displays correct clone url', checkCloneUrl);
xit('can login', loginOIDC.bind(null, username, password)); // no need to relogin since session persists
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('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('restore app', function () {
execSync('cloudron restore --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('can login', login);
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('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', 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', 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', loginOIDC.bind(null, username, password));
it('can set avatar', setAvatar);
it('can get avatar', checkAvatar);
it('can add public key', addPublicKey);
@ -346,15 +278,21 @@ return done();
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', 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', 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);
});
});