Moritz
6774893412
add env ENABLE_AUTO_UPDATE as label to enable/disable the auto update process
continuous-integration/drone/pr Build was killed
Details
2023-01-31 16:12:02 +01:00
moritz
ebb86391af
add a label to signal that a deploy is a chaos deploy ( !265 )
...
continuous-integration/drone/push Build is failing
Details
Resolves coop-cloud/organising#390 by adding the following label `coop-cloud.${STACK_NAME}.chaos=true` (according to the version label).
This is required for the auto updater coop-cloud/organising#236 (comment)
Co-authored-by: Moritz <moritz.m@local-it.org>
Reviewed-on: #265
2023-01-31 15:06:35 +00:00
moritz
50db39424c
add a label to signal that a deploy is connected with a recipe ( !264 )
...
continuous-integration/drone/push Build is failing
Details
Resolves coop-cloud/organising#391 by adding the following label `coop-cloud.${STACK_NAME}.recipe=${RECIPE}` (according to the version label).
This is required for the auto updater coop-cloud/organising#236 (comment)
Co-authored-by: Moritz <moritz.m@local-it.org>
Reviewed-on: #264
2023-01-31 14:35:43 +00:00
moritz
ca1ea32c46
Expose all env vars to `app` container. ( !263 )
...
continuous-integration/drone/push Build is failing
Details
Resolves coop-cloud/organising#393 and is required for the auto updater coop-cloud/organising#236 (comment)
Co-authored-by: Moritz <moritz.m@local-it.org>
Reviewed-on: #263
2023-01-31 14:13:43 +00:00
Moritz
32851d4d99
fix: always fetch all repository tags
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/push Build is failing
Details
2023-01-31 11:52:15 +01:00
decentral1se
c47aa49373
fix: improved missing context message
continuous-integration/drone/push Build is failing
Details
2023-01-24 10:48:53 +01:00
decentral1se
b089109c94
fix: more robust docker context problem handling
...
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/push Build is failing
Details
See coop-cloud/organising#325
See coop-cloud/organising#340
2023-01-23 14:56:34 +01:00
decentral1se
27e0708ac7
fix: don't delete server dir on cleanup if not empty
...
Part of coop-cloud/organising#325 .
2023-01-23 13:56:27 +01:00
decentral1se
521570224b
Merge branch 'filter-servers-by-recipe'
continuous-integration/drone/push Build is failing
Details
2023-01-23 09:33:31 +01:00
decentral1se
54646650c7
fix!: disable traefik linting when DOMAIN isn't present
...
continuous-integration/drone/push Build is failing
Details
Also reformats the linting output to be more readable.
Closes coop-cloud/organising#319 .
2023-01-23 08:31:00 +00:00
decentral1se
903aac9d7a
feat: recipe fetch command
...
continuous-integration/drone/pr Build was killed
Details
continuous-integration/drone/push Build was killed
Details
Also may have rooted out another go-git cloning bug 🙄
Closes coop-cloud/organising#365
2023-01-23 09:26:53 +01:00
decentral1se
49865c6a97
feat: app services command
...
continuous-integration/drone/push Build was killed
Details
Closes coop-cloud/organising#372
2023-01-23 08:25:17 +00:00
decentral1se
a694c8c20e
feat: filter server by recipe
...
Closes coop-cloud/organising#363
2023-01-23 00:54:22 +01:00
decentral1se
32de2ee5de
fix: ensure catalogue is clean/up-to-date
...
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/push Build is failing
Details
Closes coop-cloud/organising#367
2023-01-22 17:52:36 +01:00
decentral1se
6fe5aed408
fix!: remove digest handling
...
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/push Build is failing
Details
Closes coop-cloud/organising#379
2023-01-22 08:54:13 +01:00
decentral1se
03041b88d0
chore: gofmt
continuous-integration/drone/push Build is failing
Details
2023-01-21 23:26:23 +01:00
3wc
4f055096e9
chore: fix Drone build, ignore auto-recipes-catalogue-json
continuous-integration/drone/push Build is failing
Details
2023-01-15 18:16:53 -08:00
3wc
1403eac72c
fix: parse "Status" field during `catalogue generate`
2023-01-15 17:10:45 -08:00
Cassowary
a6e23938eb
Add tests to jsontable.
...
- Test major functionality of jsontable
- Fix bug discovered in testing.
2023-01-15 17:10:36 -08:00
Cassowary
cae0d9ef79
Introduce a JSON output table mechanic
...
- Create JSONTable as a proxy/extension to tablewriter which can also output JSON.
- Implement machine readable output for `server list` and `recipe list`
2023-01-12 21:15:14 +00:00
3wc
b204b289d1
fix: disable progress bar with machine-readable output
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/push Build is passing
Details
2022-12-16 10:20:51 -08:00
moritz
e788ac21f6
fix: keep abra working if recipe catalogue is offline ( !235 )
...
continuous-integration/drone/push Build is passing
Details
Co-authored-by: Moritz <moritz.m@local-it.org>
Reviewed-on: #235
2022-12-13 14:42:45 +00:00
3wc
a21d431541
fix: don't panic() 😅
continuous-integration/drone/push Build is passing
Details
2022-11-24 17:33:59 +00:00
3wc
8fad34e430
fix: switch back to replacing <recipe>.example.com
...
Fixes #355
2022-11-24 17:33:59 +00:00
decentral1se
14187449a5
fix: fork passgen
...
continuous-integration/drone/push Build is passing
Details
See coop-cloud/organising#358
2022-11-14 15:18:54 +01:00
decentral1se
e41caa891d
fix: dont check ip on server when it is local
...
continuous-integration/drone/push Build is passing
Details
Closes coop-cloud/organising#334 .
2022-08-14 22:20:17 +02:00
decentral1se
42a6818ff4
fix: app cmd parsing, usage & tests
...
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/pr Build is passing
Details
Note: the integration tests don't work due to ValidateApp still
attempting to validate the host key for the test app which doesn't
exist. This will be fixed in a future commit.
2022-08-14 16:18:58 +02:00
Franz Heinzmann (Frando)
8458e61d17
fix: branch checking logic
...
See https://github.com/go-git/go-git/issues/518 for why this is needed.
2022-08-11 17:49:22 +02:00
decentral1se
49f79dbd45
fix!: new catalogue URL
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/push Build is passing
Details
2022-05-03 17:08:52 +02:00
decentral1se
cbd924060f
fix: better local changes message
continuous-integration/drone/push Build is passing
Details
2022-04-19 10:29:05 +02:00
decentral1se
b27acb2f61
feat: backup/restore [ci skip]
...
continuous-integration/drone/pr Build is passing
Details
See coop-cloud/organising#30 .
2022-04-03 18:24:09 +02:00
decentral1se
323f4467c8
fix: filtering requires case-by-case handling
...
continuous-integration/drone/pr Build was killed
Details
continuous-integration/drone/push Build was killed
Details
See https://github.com/moby/moby/issues/32985 .
2022-03-30 16:25:38 +02:00
decentral1se
6aa23a76a1
fix: more precise filtering
...
continuous-integration/drone/push Build is passing
Details
Closes coop-cloud/organising#305 .
2022-03-27 19:30:36 +00:00
decentral1se
338360096c
feat: pass domain to new app envs
...
continuous-integration/drone/push Build is passing
Details
See coop-cloud/organising#304 .
2022-03-27 21:06:48 +02:00
knoflook
f432bfdd23
fix: warn when no repo on git
continuous-integration/drone/push Build is failing
Details
2022-03-18 10:13:24 +01:00
decentral1se
c66695d55e
fix: return err not logrus + new lines
2022-03-12 17:02:04 +01:00
decentral1se
262009701e
fix: guard against concurrent write errors
2022-03-12 16:59:45 +01:00
decentral1se
d3e127e5c8
fix: retain backwards compat with TYPE/RECIPE change
continuous-integration/drone/push Build is passing
Details
2022-03-11 19:37:50 +01:00
decentral1se
e9cfb076c6
fix: strip length modifiers
...
continuous-integration/drone/push Build is passing
Details
See coop-cloud/organising#297 .
2022-03-11 16:40:10 +01:00
decentral1se
b295958c17
fix: handle all container registries
...
See coop-cloud/organising#258
This fixes also how we read the digest of the image. I think it was
wrong before. Some registries restrict reading this info and we now just
default to "unknown" for that case.
This also appears to bring a wave of new dependencies due to the generic
handling logic of containers/... package. The abra binary is now 1mb
larger.
The catalogue generation is now slower unfortunately. But it is more
robust.
The generic logic looks in ~/.docker/config.json for log in details, so
you don't have to pass those in manually on the CLI anymore. We just
read those defaults. You can "docker login" to get credentials setup in
that file. Since most folks won't generate the catalogue, this seems
fine for now.
2022-02-21 08:46:30 +00:00
decentral1se
2fbdcfb958
refactor: try the meta for default branch too
...
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Sometimes the Branch(...) call gets confused with state in the
repository. Its more robust to use the default value we get from gitea.
See coop-cloud/organising#299 .
2022-02-20 18:07:49 +01:00
decentral1se
09ac74d205
fix: check out default branch from tags
...
continuous-integration/drone/push Build is passing
Details
Also fix error handling to match function signatures.
2022-02-18 11:17:43 +01:00
decentral1se
e056d8dc44
fix: de-dupe dns resolver logging, more concise [ci skip]
2022-02-14 18:06:06 +01:00
decentral1se
6b2a0011af
fix: remove dupe logging on catalogue reading [ci skip]
2022-02-14 17:37:25 +01:00
decentral1se
46fca7cfa7
docs: less ambig wording [ci skip]
2022-02-14 17:35:42 +01:00
decentral1se
82d560a946
fix: prompt for input on app cp
continuous-integration/drone/push Build is passing
Details
2022-02-14 17:10:53 +01:00
decentral1se
0557284461
fix: use new repo name
continuous-integration/drone/push Build is passing
Details
2022-02-09 08:58:51 +00:00
decentral1se
bfeda40e34
fix: catch more ssh failure modes with help
continuous-integration/drone/push Build is passing
Details
2022-02-03 13:43:11 +01:00
decentral1se
58e98f490d
refactor!: type -> recipes
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/push Build is passing
Details
2022-01-27 12:06:32 +01:00
decentral1se
a23124aede
feat: auto strip domain names to avoid runtime limits
continuous-integration/drone/push Build is passing
Details
2022-01-27 10:33:21 +00:00
decentral1se
c7062e0494
fix: initial subcmd completion
...
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Broken by migration to v1 API.
2022-01-20 11:42:04 +01:00
decentral1se
13e582349c
fix: correctly override with ~/.ssh/config if failing to connect
continuous-integration/drone/push Build is passing
Details
2022-01-19 13:28:57 +01:00
decentral1se
b9ec41647b
fix: when upgrading, skip over bad tags, don't error out
continuous-integration/drone/push Build is passing
Details
2022-01-19 10:40:55 +01:00
decentral1se
f9a2c1d58f
refactor: put StripTagMeta into formatter package
...
Avoid circular import.
2022-01-19 10:40:14 +01:00
decentral1se
0e688f1407
refactor!: migrate to urfave/cli v1
...
continuous-integration/drone/push Build is passing
Details
Better flexible flags handling.
2022-01-18 14:38:20 +01:00
decentral1se
7733637767
fix: ensure catalogue cloned for catalogue reliant commands
continuous-integration/drone/push Build is passing
Details
2022-01-18 11:19:33 +01:00
decentral1se
fc2d83d203
fix: better error message for missing server
2022-01-17 22:04:11 +01:00
decentral1se
d7cf11b876
fix: further fixes for gracefully handling missing tag
...
continuous-integration/drone/push Build is passing
Details
Follows 1b37d2d5f5
.
2022-01-05 17:58:15 +01:00
decentral1se
74dfb12fd6
refactor: centralise tag meta stripping
2022-01-05 17:32:33 +01:00
decentral1se
66d5453248
docs: recommend more helper commands for deploy timeout
2022-01-03 16:33:28 +01:00
decentral1se
ba9abcb0d7
fix: increase converge timeout
2022-01-03 16:33:18 +01:00
decentral1se
7a0d18ceb6
fix: show unknown insteaf of empty for missing version
continuous-integration/drone/push Build is passing
Details
2022-01-01 17:23:21 +01:00
decentral1se
8992050409
docs: dont metion git explicitly in user messages
2022-01-01 17:23:04 +01:00
decentral1se
abd094387f
fix: use scale for restarting
...
The other approach wasn't working. Duplicating containers on restart.
You'd end up with 2 containers per restart...
2022-01-01 17:22:35 +01:00
decentral1se
a556ca625b
fix: handle StackName / Name correctly
2022-01-01 17:22:19 +01:00
decentral1se
1b7836009f
test: spec out check tests [ci skip]
2021-12-31 17:19:30 +01:00
decentral1se
eb3509ab3f
refactor: drop uneccessary structs
continuous-integration/drone/push Build is passing
Details
2021-12-31 17:12:09 +01:00
decentral1se
ce96269be0
fix: more fixed for dry mode, this time tested :)
...
Follows 299276c383
.
2021-12-31 13:37:03 +01:00
decentral1se
866cdd1f29
feat: service name in ps output
continuous-integration/drone/push Build is passing
Details
2021-12-31 12:59:31 +01:00
decentral1se
95d385c420
fix: GetService & handling missing services
2021-12-31 12:49:31 +01:00
decentral1se
930ff68bb2
refactor: drop unused function
continuous-integration/drone/push Build is passing
Details
2021-12-30 00:42:37 +01:00
decentral1se
62441acf03
refactor: use SmallSHA
2021-12-30 00:41:21 +01:00
decentral1se
5cacd09a04
refactor: remove old/non-urgen/resolved FIXMEs
2021-12-28 01:35:40 +01:00
decentral1se
6a98024a2b
refactor: drop old/upstream TODOs
2021-12-28 01:31:50 +01:00
decentral1se
f5d2d3adf6
refactor: formatter gets own package
2021-12-28 01:24:23 +01:00
decentral1se
0aa37fcee8
refactor!: simplifying publish logic
continuous-integration/drone/push Build is passing
Details
2021-12-27 19:56:27 +01:00
decentral1se
eb1b6be4c5
fix: auto-config ssh urls and push to them
continuous-integration/drone/push Build is passing
Details
2021-12-27 18:06:56 +01:00
decentral1se
b98397144a
fix: wording
2021-12-27 18:06:46 +01:00
decentral1se
4c186678b8
fix: clone https url by default
...
Catalogue package had to be merged into the recipe package due to too
many circular import errors. Also, use https url for cloning, assume
folks don't have ssh setup by default (the whole reason for the
refactor).
2021-12-27 16:45:56 +01:00
decentral1se
c13f438580
refactor: remove old code
2021-12-27 04:03:53 +01:00
decentral1se
9c281d8608
fix: flags for logging in
continuous-integration/drone/push Build is passing
Details
2021-12-27 03:27:05 +01:00
decentral1se
c5a74e9f6b
fix: template env files too
continuous-integration/drone/push Build is passing
Details
2021-12-26 04:38:34 +01:00
decentral1se
cdc08ae95a
fix: much hacking, maybe fixed catalogue generation
continuous-integration/drone/push Build is passing
Details
2021-12-26 04:02:40 +01:00
decentral1se
3f35510507
fix: runtime caching for catalogue generation
2021-12-26 04:01:02 +01:00
decentral1se
b0834925a3
fix: log in correctly
...
See #139 .
2021-12-26 03:44:29 +01:00
decentral1se
17340a79da
refactor: more local var
2021-12-26 00:14:48 +01:00
decentral1se
779c810521
refactor: less quotes, less verbose
2021-12-26 00:14:32 +01:00
decentral1se
9a1cf258a5
fix: check published version properly
...
Resulted in a refactor to a new lint package.
2021-12-26 00:00:19 +01:00
decentral1se
ba8138079f
fix: use one function for up-to-date checks
2021-12-25 23:45:52 +01:00
decentral1se
8735a8f0ea
feat: lint before deploy/upgrade/rollback
...
See coop-cloud/organising#254 .
2021-12-25 23:35:45 +01:00
decentral1se
a84a5bc320
feat: more robust linting
...
See coop-cloud/organising#254 .
2021-12-25 23:22:50 +01:00
decentral1se
e2c3bc35c3
fix: handle missing label
2021-12-25 17:02:47 +01:00
decentral1se
6937bfbb0d
fix: if no remotes, skip on
2021-12-25 16:56:21 +01:00
decentral1se
4283f130a2
refactor: apps -> recipes
2021-12-25 14:04:07 +01:00
decentral1se
3b5354b2a5
refactor: less quotes
continuous-integration/drone/push Build is passing
Details
2021-12-25 02:03:09 +01:00
decentral1se
14400d4ed8
fix: sync recipes from remotes
continuous-integration/drone/push Build is passing
Details
2021-12-24 16:06:29 +01:00
decentral1se
dddf84d92b
fix: avoid default value for idf
...
We could default to ~/.ssh/id_rsa but if that doesn't exist, then we'll
just be confusing people in the logs. Best is to just rely on the
ssh-agent which overrides this anyway. We will document this.
See coop-cloud/organising#277
2021-12-24 15:39:44 +01:00
decentral1se
fefb042716
fix: shorter timeout on deploy
continuous-integration/drone/push Build is passing
Details
2021-12-24 02:26:02 +01:00
decentral1se
ab8db8df64
feat: deploy --no-converge-checks & finish app errors
2021-12-24 02:23:46 +01:00
decentral1se
e839f100df
fix: move that back, still wrong but less wrong
2021-12-24 01:32:42 +01:00
decentral1se
41a757b7ed
fix: only show when success is for sure
2021-12-24 00:44:50 +01:00
decentral1se
4b4298caf1
fix: better wording
2021-12-24 00:44:49 +01:00
decentral1se
8e8c241fdf
refactor: less quotes
2021-12-24 00:44:49 +01:00
decentral1se
9b8ff1ddcd
fix: get branch is now more robust
2021-12-24 00:44:44 +01:00
decentral1se
fc29ca6fce
refactor: less quotes
2021-12-24 00:25:45 +01:00
decentral1se
014d32112e
fix: ensure tags & commits are pushed
continuous-integration/drone/push Build is passing
Details
2021-12-23 02:24:43 +01:00
decentral1se
a7894cbda9
fix: better explanation
2021-12-23 02:10:57 +01:00
decentral1se
0362928840
fix!: parse ttl correctly
2021-12-23 01:41:12 +01:00
decentral1se
7a5aa1b005
test: make them work again
continuous-integration/drone/push Build is passing
Details
2021-12-23 01:06:56 +01:00
decentral1se
a07e71f7df
fix: grand ssh, provisioning, perms refactor
...
continuous-integration/drone/push Build is failing
Details
See coop-cloud/organising#280 .
See coop-cloud/organising#273 .
2021-12-22 20:08:15 +01:00
decentral1se
ec7223146b
docs: better timeout error
2021-12-21 23:48:32 +01:00
decentral1se
fa45264ea0
refactor: the grand recipe release refactor
2021-12-21 19:25:44 +01:00
decentral1se
2b1cc9f6dd
docs: less quotes, more clarity on init
2021-12-21 02:28:14 +01:00
decentral1se
fc3742212c
fix: more reliable syncing
2021-12-21 01:48:37 +01:00
decentral1se
fccbd7c7d7
chore: style lines
2021-12-21 01:48:21 +01:00
decentral1se
ae9e66c319
docs: less quotes, different quotes
2021-12-20 01:05:51 +01:00
decentral1se
8d499c0810
fix: find local only apps
2021-12-20 00:50:09 +01:00
decentral1se
0a903f041f
refactor: less quotes
2021-12-20 00:49:36 +01:00
decentral1se
bf82bc9c7f
feat: add dryflag, implement push for catalogue generate
2021-12-19 23:59:40 +01:00
decentral1se
5113db1612
refactor: centralise git commit machinery
2021-12-19 23:51:03 +01:00
decentral1se
88d4984248
docs: wording
2021-12-19 23:29:05 +01:00
decentral1se
4c66e44b3a
fix: use new recipes.json path
2021-12-19 23:17:46 +01:00
decentral1se
033bad3d10
fix: handle empty image meta
2021-12-19 23:14:43 +01:00
decentral1se
a750344653
refactor: better wording
2021-12-19 23:14:29 +01:00
decentral1se
f5caf5587a
refactor: fix log style and add recipe context
2021-12-19 23:08:03 +01:00
decentral1se
fdc9e8b5fd
refactor: improved log messages and less quotes
2021-12-19 23:02:58 +01:00
decentral1se
75edcabb23
fix: show progress on meta reading
2021-12-19 22:57:38 +01:00
decentral1se
fa0a63c11d
refactor: ensure type, drop comment
2021-12-19 22:45:08 +01:00
decentral1se
3d3eefb2fe
fix: bail out definitely on that error
...
See coop-cloud/organising#278 .
2021-12-19 22:44:19 +01:00
decentral1se
b8e2d1de67
refactor: move function into web package
2021-12-19 15:57:00 +01:00
decentral1se
3b7a8e6498
docs: add missing docstrings
2021-12-19 15:56:59 +01:00
decentral1se
8215bb455b
fix: warn if secrets still exist
continuous-integration/drone/push Build is passing
Details
2021-12-13 12:29:26 +01:00
decentral1se
d087a60e09
Revert "fix: dont throw away changes"
...
continuous-integration/drone/push Build is passing
Details
This reverts commit dd0f328a65
.
Part of coop-cloud/organising#282 .
2021-12-12 02:04:13 +01:00
decentral1se
48e16c414c
fix: use correct error format
continuous-integration/drone/push Build is passing
Details
2021-12-12 01:56:43 +01:00
decentral1se
f3e55e5023
fix: support registry login details
continuous-integration/drone/push Build is passing
Details
2021-12-12 01:52:28 +01:00
decentral1se
ae6adace50
refactor: autocomplete package
continuous-integration/drone/push Build is passing
Details
2021-12-12 00:17:39 +01:00
decentral1se
32dcddb631
fix: select containers if we find multiple
2021-12-12 00:04:37 +01:00
decentral1se
3dbd343600
fix: dont double append root path
continuous-integration/drone/push Build is passing
Details
2021-12-11 20:24:38 +01:00
decentral1se
8393f4b134
fix: log discovered paths
2021-12-11 20:24:29 +01:00
decentral1se
8e56607cc9
fix: use default
2021-12-11 20:13:55 +01:00
decentral1se
85a543afac
fix: maybe more robust gitignore checks
continuous-integration/drone/push Build is passing
Details
2021-12-11 20:11:59 +01:00
decentral1se
665396b679
fix: join path correctly
continuous-integration/drone/push Build is passing
Details
2021-12-11 20:01:30 +01:00
decentral1se
870c561fee
Revert "Revert "fix: include ignored files""
...
This reverts commit 9be78bc5fa
.
Attempting to fix this once again.
2021-12-11 19:53:35 +01:00
decentral1se
3fb43ffa2c
Revert "fix: match exact on filtering" [ci skip]
...
This reverts commit 2bc2f8630b
.
This breaks other stuff. Reverting!
2021-12-09 14:12:16 +01:00
decentral1se
2bc2f8630b
fix: match exact on filtering
continuous-integration/drone/push Build is passing
Details
2021-12-06 01:26:04 +01:00
decentral1se
2db5378418
fix: dont add .git dirs
...
Closes coop-cloud/organising#276 .
2021-12-05 01:30:23 +01:00
decentral1se
7d8f3f1fab
fix: less loose permissions, less +x
...
Closes coop-cloud/organising#283 .
2021-12-05 01:18:31 +01:00
knoflook
9be78bc5fa
Revert "fix: include ignored files"
...
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This reverts commit aea5cc69c3
.
2021-12-03 11:39:56 +01:00
decentral1se
962f566228
fix: go on with missing tag
...
continuous-integration/drone/push Build is passing
Details
Closes coop-cloud/organising#264 .
2021-11-26 21:34:21 +01:00
decentral1se
748d607ddc
fix: better converge output
...
continuous-integration/drone/push Build is passing
Details
Closes coop-cloud/organising#263 .
2021-11-26 21:24:15 +01:00