Compare commits

...

529 Commits
v1.1.4 ... main

Author SHA1 Message Date
renovate[bot]
53d324c747
chore(deps): lock file maintenance (#716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-01 13:19:36 +02:00
renovate[bot]
acb91fe39b
fix(deps): update dependency zipp to v3.19.1 (#717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-01 13:18:51 +02:00
renovate[bot]
433b8ce2aa
fix(deps): update dependency zipp to v3.19.0 (#714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-30 20:23:20 +02:00
renovate[bot]
724e14c741 chore(deps): update devdeps non-major 2024-05-27 04:34:22 +00:00
renovate[bot]
c5d50cf47a
fix(deps): update dependency docker to v7.1.0 (#712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-24 09:23:34 +02:00
renovate[bot]
ae9a16c898 chore(docker): update python:3.12-alpine docker digest to 5365725 2024-05-24 04:41:11 +00:00
renovate[bot]
635cd51a17
chore(deps): lock file maintenance (#707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 09:37:14 +02:00
renovate[bot]
77ca9f62d2
fix(deps): update dependency zipp to v3.18.2 (#709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 09:36:16 +02:00
renovate[bot]
40e2f72fb0
chore(deps): update quay.io/thegeeklab/hugo docker tag to v0.125.7 (#708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 15:06:43 +02:00
renovate[bot]
5a4a9dc879 chore(deps): update dependency ruff to v0.4.4 2024-05-13 04:16:36 +00:00
renovate[bot]
0a8780c381
chore(deps): lock file maintenance (#705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 12:15:13 +02:00
renovate[bot]
c0b496943f chore(deps): update dependency ruff to v0.4.3 2024-05-06 04:32:58 +00:00
renovate[bot]
393887fbb5
fix(deps): update dependency jsonschema to v4.22.0 (#703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-01 12:36:25 +02:00
renovate[bot]
6555f4add6
chore(deps): lock file maintenance (#699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 10:28:19 +02:00
renovate[bot]
eee7a5a1ff chore(deps): update devdeps non-major 2024-04-29 05:01:06 +00:00
renovate[bot]
9f31bfdf9e
fix(deps): update dependency websocket_client to v1.8.0 (#701)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-24 08:55:03 +02:00
renovate[bot]
9596da32c9 chore(deps): update dependency ruff to v0.4.1 2024-04-22 03:38:41 +00:00
renovate[bot]
d15499b120 chore(deps): update dependency ruff to v0.3.7 2024-04-15 03:13:34 +00:00
renovate[bot]
da587cdaf1
chore(deps): lock file maintenance (#686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 08:54:56 +02:00
renovate[bot]
2e78717804
fix(deps): update dependency idna to v3.7 [security] (#697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 08:54:49 +02:00
renovate[bot]
7e2c68c8fe chore(docker): update python:3.12-alpine docker digest to ef09762 2024-04-11 03:15:43 +00:00
renovate[bot]
5a98f7127d chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.45.0 2024-04-08 06:26:20 +00:00
renovate[bot]
9701519a85 chore(deps): update dependency ruff to v0.3.5 2024-04-08 05:27:50 +00:00
renovate[bot]
01293f3634 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.44.3 2024-04-01 04:59:23 +00:00
renovate[bot]
cbddcedb62
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v4 (#691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 08:56:27 +01:00
renovate[bot]
4be97eb542 chore(docker): update python:3.12-alpine docker digest to c7eb5c9 2024-03-26 04:30:21 +00:00
renovate[bot]
3e644aa33d
chore(deps): update dependency pytest-cov to v5 (#688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-25 08:34:23 +01:00
renovate[bot]
a86f86e3a1 chore(deps): update devdeps non-major 2024-03-25 04:48:50 +00:00
renovate[bot]
95e7ee4471
chore(deps): update quay.io/thegeeklab/hugo docker tag to v0.124.1 (#687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 08:48:24 +01:00
renovate[bot]
73d739831a chore(deps): update dependency ruff to v0.3.3 2024-03-18 03:40:02 +00:00
renovate[bot]
44599113ab chore(docker): update python:3.12-alpine docker digest to 25a82f6 2024-03-17 03:32:01 +00:00
renovate[bot]
1b33fc3b74
fix(deps): update dependency zipp to v3.18.1 (#683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-16 12:21:58 +01:00
renovate[bot]
83a32d14c6
fix(deps): update dependency zipp to v3.18.0 (#682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 08:34:16 +01:00
63ca6e6bdb
ci: fix deprecated ruff command 2024-03-12 20:52:55 +01:00
renovate[bot]
1e557bd253
chore(deps): lock file maintenance (#681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 09:39:36 +01:00
renovate[bot]
32da9eb537
chore(deps): update devdeps non-major (#680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2024-03-11 09:39:29 +01:00
renovate[bot]
1d19939b68 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.44.2 2024-03-11 03:38:10 +00:00
renovate[bot]
233b29a8cd
chore(deps): lock file maintenance (#677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-07 11:05:20 +01:00
renovate[bot]
90876dc452
fix(deps): update dependency environs to v11 (#678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-07 11:04:49 +01:00
renovate[bot]
9d2503fb30 chore(deps): update devdeps non-major 2024-03-04 03:26:08 +00:00
renovate[bot]
ec6ff19057
fix(deps): update dependency python-dateutil to v2.9.0.post0 (#675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-02 14:49:18 +01:00
renovate[bot]
fc31bd26c2
chore(deps): lock file maintenance (#673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 10:43:40 +01:00
renovate[bot]
8d9c9a5f5f chore(deps): update dependency pytest to v8.0.2 2024-02-26 03:43:17 +00:00
renovate[bot]
6a80f83587 chore(deps): update devdeps non-major 2024-02-19 04:32:20 +00:00
e261307149
[skip ci] revert renovate automerge config 2024-02-15 12:23:09 +01:00
renovate[bot]
f69a97b61c
chore(deps): update quay.io/thegeeklab/hugo docker tag to v0.122.0 (#671)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-11 21:47:37 +01:00
84a3d303ed
enable renovate on automerge branches 2024-02-09 23:08:32 +01:00
renovate[bot]
24a8388cb1 chore(docker): update python:3.12-alpine docker digest to 1a05012 2024-02-09 06:11:13 +00:00
renovate[bot]
3a47080078
fix(deps): update dependency ruamel.yaml to v0.18.6 (#669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-07 22:36:52 +01:00
7dbd1158c6
chore: bump ruff to v0.2.1 (#668) 2024-02-06 09:34:40 +01:00
renovate[bot]
536752a83e
fix(deps): update dependency certifi to v2024 (#667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-03 14:04:32 +01:00
renovate[bot]
f334c0da1e
chore(deps): update dependency pytest to v8 (#665)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 09:05:12 +01:00
renovate[bot]
fc02a0071a chore(docker): update python:3.12-alpine docker digest to 14cfc61 2024-01-29 10:49:01 +00:00
renovate[bot]
9ce45bf75b
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v3 (#664)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 11:28:49 +01:00
renovate[bot]
9a5c025d7c chore(deps): update dependency ruff to v0.1.14 2024-01-22 03:08:44 +00:00
renovate[bot]
95e5f2ac4a
fix(deps): update dependency jsonschema to v4.21.1 (#662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-20 15:51:39 +01:00
renovate[bot]
48e90b3fa8 chore(docker): update python:3.12-alpine docker digest to 801b54e 2024-01-20 02:17:35 +00:00
renovate[bot]
72f6b0e758 chore(docker): update python:3.12-alpine docker digest to 4a156f7 2024-01-19 07:11:22 +00:00
renovate[bot]
b684cb042f
fix(deps): update dependency jsonschema to v4.21.0 (#659)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-18 10:21:53 +01:00
renovate[bot]
e280fd4395 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.44.1 2024-01-16 00:18:09 +00:00
renovate[bot]
824b850e57
fix(deps): update dependency anyconfig to v0.14.0 (#656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 21:55:52 +01:00
renovate[bot]
5fb5fbb2e5
chore(deps): update dependency ruff to v0.1.13 (#657)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2024-01-15 20:38:53 +01:00
renovate[bot]
fc20bb4de0
fix(deps): update dependency environs to v10.3.0 (#655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-12 08:30:15 +01:00
renovate[bot]
df1c82beac
fix(deps): update dependency environs to v10.2.0 (#654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-10 08:38:45 +01:00
renovate[bot]
c81a2b7dca
chore(deps): lock file maintenance (#644)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-09 15:36:03 +01:00
renovate[bot]
5e7b78b181
fix(deps): update dependency docker to v7 (#640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-09 15:35:53 +01:00
renovate[bot]
f957a5c41d
fix(deps): update dependency environs to v10.1.0 (#653)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-09 15:03:24 +01:00
renovate[bot]
194a793cb2 chore(deps): update dependency ruff to v0.1.11 2024-01-08 05:01:20 +00:00
renovate[bot]
85a945b4ed
chore(deps): update quay.io/thegeeklab/hugo docker tag to v0.121.2 (#651)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-07 20:42:13 +01:00
renovate[bot]
bf8e7c5256 chore(deps): update dependency pytest to v7.4.4 2024-01-01 03:51:52 +00:00
renovate[bot]
7a7df50721
fix(deps): update dependency environs to v10 (#645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-27 11:08:05 +01:00
renovate[bot]
535969d581 chore(deps): update dependency ruff to v0.1.9 2023-12-25 03:41:52 +00:00
3eebffb06a
disable renovate for python test matrix in ci 2023-12-24 00:03:57 +01:00
525483e99c
use list style synatx and cleanup (#647) 2023-12-23 23:25:22 +01:00
renovate[bot]
ea0468cc8d chore(deps): update dependency ruff to v0.1.8 2023-12-18 03:40:56 +00:00
5063ba7d6b
cleanup unused env vars in ci 2023-12-17 14:08:01 +01:00
renovate[bot]
3ea1adfe03
fix(deps): update dependency pathspec to v0.12.1 (#642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-12 08:55:02 +01:00
renovate[bot]
ea56dc4f41 chore(deps): update dependency ruff to v0.1.7 2023-12-11 04:57:00 +00:00
renovate[bot]
e0f99929c1 chore(docker): update python:3.12-alpine docker digest to c793b92 2023-12-09 09:48:01 +00:00
renovate[bot]
0a2257fb13
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v2 (#639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 09:50:02 +01:00
b1e15928ad
ci: exclude dockerhub from linkcheck due to rate limiting 2023-12-07 09:08:28 +01:00
renovate[bot]
f386910970 chore(docker): update python:3.12-alpine docker digest to 09f18c1 2023-12-04 23:17:59 +00:00
renovate[bot]
91fbaf9d9d
chore(deps): lock file maintenance (#636)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 21:18:50 +01:00
renovate[bot]
a4643c714a
fix(deps): update dependency idna to v3.6 (#635)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 21:18:37 +01:00
renovate[bot]
d7b1253555
fix(deps): update dependency websocket_client to v1.7.0 (#638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 21:07:27 +01:00
1c7b43fff0
fix settings for required status checks 2023-12-04 21:01:52 +01:00
renovate[bot]
d325e16548
fix(deps): update dependency idna to v3.5 (#634)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-25 14:26:25 +01:00
renovate[bot]
7a7118aa75
chore(deps): lock file maintenance (#629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 09:01:07 +01:00
renovate[bot]
042feaa792
fix(deps): update dependency jsonschema to v4.20.0 (#630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 09:00:41 +01:00
renovate[bot]
39bca2ebf9 chore(deps): update dependency ruff to v0.1.6 2023-11-20 04:44:32 +00:00
renovate[bot]
03437632ff
fix(deps): update dependency certifi to v2023.11.17 (#632)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-18 14:09:40 +01:00
renovate[bot]
9b6e622a84
fix(deps): update dependency dateparser to v1.2.0 (#631)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 19:22:52 +01:00
renovate[bot]
7ac907ea02 chore(deps): update dependency ruff to v0.1.5 2023-11-13 04:51:04 +00:00
renovate[bot]
4f6d92bbcc
chore(deps): lock file maintenance (#625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 14:48:56 +01:00
347e074e5b
fix: replace deprecated ruamel.yaml.safe_load (#627) 2023-11-12 14:48:48 +01:00
12f2428e9f
chore: drop yapf and favor of the ruff formatter (#626) 2023-11-10 14:50:56 +01:00
renovate[bot]
2a3e1612f8 chore(deps): update dependency ruff to v0.1.4 2023-11-06 03:53:54 +00:00
renovate[bot]
8a28ecefc6
chore(deps): lock file maintenance (#616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 22:28:33 +01:00
71365ef471
ci: cleanup matrix build name (#623) 2023-11-04 16:24:29 +01:00
renovate[bot]
ce3d0acfcd
fix(deps): update dependency ruamel.yaml to v0.18.5 (#622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 16:03:17 +01:00
renovate[bot]
c51f8d1578
fix(deps): update dependency ruamel.yaml to v0.18.3 (#617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 20:43:16 +01:00
renovate[bot]
d27a1a974f
fix(deps): update dependency jsonschema to v4.19.2 (#621)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 20:07:57 +01:00
renovate[bot]
5ac3434045 chore(deps): update devdeps non-major 2023-10-30 04:33:50 +00:00
renovate[bot]
c976506e5a chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.44.0 2023-10-29 09:21:21 +00:00
renovate[bot]
e1fab9e27e chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.43.0 2023-10-27 15:45:18 +00:00
renovate[bot]
fed37cc7d0 chore(deps): update devdeps non-major 2023-10-23 04:22:59 +00:00
renovate[bot]
b82fdfbeed chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.42.0 2023-10-21 18:34:47 +00:00
renovate[bot]
06f21389bb
fix(deps): update dependency ruamel.yaml to v0.17.40 (#613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-21 15:33:50 +02:00
renovate[bot]
54954fab7b chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.41.3 2023-10-20 12:45:37 +00:00
renovate[bot]
56e140e146
fix(deps): update dependency ruamel.yaml to v0.17.39 (#610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-20 08:58:56 +02:00
renovate[bot]
f314885f99
chore(deps): lock file maintenance (#611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-19 22:32:12 +02:00
renovate[bot]
985adf4614 chore(docker): update python:3.12-alpine docker digest to a5d1738 2023-10-19 15:16:44 +00:00
renovate[bot]
ee06eff3f2 chore(docker): update python:3.12-alpine docker digest to a4029bd 2023-10-19 06:41:42 +00:00
12cc05e53e
ci: fix changelog generation 2023-10-18 13:59:26 +02:00
b581e501da
chore: replace linkcheck by lychee (#607) 2023-10-16 21:34:26 +02:00
e91f10ae14
chore: replace git-chglog by git-sv (#606) 2023-10-16 15:42:46 +02:00
renovate[bot]
dd299ecf5c
chore(deps): lock file maintenance (#603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 14:28:52 +02:00
ea4bf4a218
feat: add support for python 3.12 (#605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 14:15:38 +02:00
4988cac525
fix: remove deprecated distutils (#604) 2023-10-16 12:11:13 +02:00
renovate[bot]
7b82bbf871 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.41.2 2023-10-11 01:28:27 +00:00
renovate[bot]
3c6dcda7a6
chore(deps): lock file maintenance (#601)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 14:56:21 +02:00
renovate[bot]
a75380dcab
fix(deps): update dependency ruamel.yaml to v0.17.35 (#598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 14:56:13 +02:00
renovate[bot]
3ea31f660b
fix(deps): update dependency websocket_client to v1.6.4 (#599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 14:41:11 +02:00
renovate[bot]
9bc9ef4d45 chore(deps): update dependency ruff to v0.0.292 2023-10-09 03:22:53 +00:00
renovate[bot]
0ef523ceb7 chore(docker): update python:3.11-alpine docker digest to 3e73c0b 2023-10-03 13:39:41 +00:00
renovate[bot]
2bebea17fd
chore(deps): lock file maintenance (#594)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-02 11:46:56 +02:00
renovate[bot]
43c1180bee
fix(deps): update dependency ruamel.yaml to v0.17.33 (#592)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-02 11:14:15 +02:00
renovate[bot]
39c8ce5c2e chore(docker): update python:3.11-alpine docker digest to cd311c6 2023-09-29 18:07:11 +00:00
renovate[bot]
fcee5e7f6f
fix(deps): update dependency jsonschema to v4.19.1 (#589)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 15:15:46 +02:00
renovate[bot]
7ffd2d6ca7
chore(deps): lock file maintenance (#591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 13:47:15 +02:00
renovate[bot]
a97d20c6ff
fix(deps): update dependency zipp to v3.17.0 (#588)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 13:46:58 +02:00
8f4b694d7e
ci: use secret for s3 endpoint 2023-09-26 21:40:32 +02:00
renovate[bot]
15bface557
chore(deps): update devdeps non-major (#590)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-25 10:05:10 +02:00
88cf97ee86
docs: drop codecov badge 2023-09-25 09:27:02 +02:00
renovate[bot]
a4e893b5dd
chore(deps): lock file maintenance (#581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-18 08:45:47 +02:00
renovate[bot]
fe27327da5
fix(deps): update dependency websocket_client to v1.6.3 (#586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-18 08:45:39 +02:00
renovate[bot]
544c0bf25b chore(deps): update dependency ruff to v0.0.290 2023-09-18 04:32:51 +00:00
renovate[bot]
ff118d656a chore(deps): update dependency pytest to v7.4.2 2023-09-11 04:41:20 +00:00
renovate[bot]
cca9765fa2 chore(deps): update devdeps non-major 2023-09-04 04:51:54 +00:00
renovate[bot]
aa1b914f6b chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.41.1 2023-09-04 02:08:07 +00:00
renovate[bot]
a265caa3ca chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.41.0 2023-09-01 04:13:21 +00:00
renovate[bot]
5f2594710f chore(deps): update dependency ruff to v0.0.286 2023-08-28 03:34:59 +00:00
renovate[bot]
16e6aec457 chore(docker): update python:3.11-alpine docker digest to 5d769f9 2023-08-26 09:47:36 +00:00
7c1bab90c9
fix: use poetry-dynamic-versioning backend wrapper 2023-08-25 00:28:39 +02:00
4f6b8880c4
add back pytest to ci 2023-08-24 23:53:26 +02:00
renovate[bot]
f0b927edd2
chore(deps): lock file maintenance (#575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 23:30:31 +02:00
renovate[bot]
bb651f9e10
fix(deps): update dependency websocket_client to v1.6.2 (#577)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 23:24:22 +02:00
9b2094d0f2
ci: migrate to woodpecker (#578) 2023-08-24 22:56:04 +02:00
renovate[bot]
034100a706 chore(deps): update dependency ruff to v0.0.285 2023-08-21 04:55:14 +00:00
renovate[bot]
b6c0253a04 chore(deps): update dependency ruff to v0.0.284 2023-08-14 03:37:02 +00:00
renovate[bot]
cae751f84a chore(docker): update python:3.11-alpine docker digest to 603975e 2023-08-09 13:04:49 +00:00
renovate[bot]
e7622ecf28 chore(docker): update python:3.11-alpine docker digest to 4352dc7 2023-08-09 06:48:26 +00:00
renovate[bot]
69c1ddecb6
fix(deps): update dependency jsonschema to v4.19.0 (#570)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-09 07:34:32 +02:00
renovate[bot]
81de219b8a
chore(deps): lock file maintenance (#569)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-09 07:34:03 +02:00
renovate[bot]
304c54cdaa chore(docker): update python:3.11-alpine docker digest to bd16cc5 2023-08-08 11:14:17 +00:00
renovate[bot]
3562868a44 chore(deps): update dependency ruff to v0.0.282 2023-08-07 05:09:28 +00:00
renovate[bot]
0b9ce24909
fix(deps): update dependency jsonschema to v4.18.6 (#567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-05 15:50:19 +02:00
renovate[bot]
6397347f6e
fix(deps): update dependency jsonschema to v4.18.5 (#566)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 22:00:18 +02:00
renovate[bot]
53db01a050
chore(deps): lock file maintenance (#565)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 10:47:11 +02:00
renovate[bot]
4a3ffc823b
fix(deps): update dependency pathspec to v0.11.2 (#564)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 10:44:28 +02:00
renovate[bot]
88ddece439 chore(deps): update dependency ruff to v0.0.280 2023-07-24 04:05:17 +00:00
renovate[bot]
b4fcf55bad
fix(deps): update dependency jsonschema to v4.18.4 (#554)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-23 13:48:14 +02:00
renovate[bot]
eb600badab
fix(deps): update dependency zipp to v3.16.2 (#555)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-23 13:36:31 +02:00
00d3334ec8
chore: drop support for python 3.7 (#562)
BREAKING CHANGE: The support for Python 3.7 was removed.
2023-07-23 13:14:45 +02:00
renovate[bot]
f8c0ffc313
fix(deps): update dependency certifi to v2023.7.22 (#561)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-23 10:01:59 +02:00
renovate[bot]
5a14273f81
chore(deps): lock file maintenance (#546)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-19 10:38:06 +02:00
renovate[bot]
08c0bce852
chore(deps): update dependency ruff to v0.0.278 (#560)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2023-07-19 10:36:03 +02:00
renovate[bot]
f8cc44c8c8 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.40.1 2023-07-12 12:42:03 +00:00
renovate[bot]
8dd1af4c8c chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.40.0 2023-07-11 23:23:17 +00:00
5ac47c0af6
ci: bump hugo to v0.115.2 (#558) 2023-07-11 21:29:37 +02:00
renovate[bot]
330045634e chore(deps): update dependency ruff to v0.0.277 2023-07-10 04:52:23 +00:00
renovate[bot]
9a36af321b chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.7 2023-07-03 11:17:34 +00:00
renovate[bot]
e77b94a096 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.6 2023-06-28 22:58:07 +00:00
renovate[bot]
8e12d9d38d
chore(deps): update devdeps non-major (#551)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2023-06-28 10:10:26 +02:00
renovate[bot]
62b2865424
fix(deps): update dependency websocket_client to v1.6.1 (#550)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-28 07:53:47 +02:00
renovate[bot]
ce31cb7109 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.5 2023-06-23 12:41:47 +00:00
b99be1f3a5
ci: bump hugo to v0.114.0 (#549) 2023-06-23 11:13:55 +02:00
9d81d2fd66
docs: replace socialmedia image (#547) 2023-06-20 14:23:50 +02:00
renovate[bot]
2258638555 chore(deps): update dependency pytest-mock to v3.11.1 2023-06-19 04:13:29 +00:00
renovate[bot]
59dbc8daef
fix(deps): update dependency ruamel.yaml to v0.17.32 (#543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-17 17:22:06 +02:00
renovate[bot]
aa20b9aa32
fix(deps): update dependency websocket_client to v1.6.0 (#544)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-17 15:22:40 +02:00
renovate[bot]
c1a372ebd0 chore(docker): update python:3.11-alpine docker digest to 25df32b 2023-06-15 16:38:45 +00:00
renovate[bot]
2ecdb5ce2c
chore(deps): lock file maintenance (#541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-15 09:20:17 +02:00
renovate[bot]
983911a58b
chore(deps): update devdeps non-major (#540)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2023-06-15 09:20:09 +02:00
renovate[bot]
b88a8fe280
fix(deps): update dependency websocket_client to v1.5.3 (#539)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-10 15:33:57 +02:00
renovate[bot]
758888ef93 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.4 2023-06-09 11:23:13 +00:00
renovate[bot]
28baf4f9bc chore(docker): update python:3.11-alpine docker digest to 995c7fc 2023-06-08 03:25:54 +00:00
renovate[bot]
f27e44e979 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.3 2023-06-05 18:22:10 +00:00
renovate[bot]
69761af054
fix(deps): update dependency ruamel.yaml to v0.17.31 (#533)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-05 10:35:56 +02:00
renovate[bot]
352bd11129
chore(deps): lock file maintenance (#535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-05 10:06:36 +02:00
renovate[bot]
b048c76870
fix(deps): update dependency docker to v6.1.3 (#534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-05 10:06:19 +02:00
renovate[bot]
fb8d7d835d chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.2 2023-05-29 12:28:00 +00:00
renovate[bot]
6f2ed5ca86
fix(deps): update dependency ruamel.yaml to v0.17.28 (#529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-29 12:23:43 +02:00
renovate[bot]
92eb995799
chore(deps): lock file maintenance (#531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-29 12:07:44 +02:00
renovate[bot]
c3c2cec106
fix(deps): update dependency websocket_client to v1.5.2 (#526)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-29 12:07:19 +02:00
renovate[bot]
82036df6ab
chore(deps): update devdeps non-major (#524) 2023-05-29 11:35:27 +02:00
renovate[bot]
5c457a3715
fix(deps): update dependency requests to v2.31.0 [security] (#528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-28 23:10:05 +02:00
renovate[bot]
68cfc83503
chore(deps): lock file maintenance (#525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-28 15:28:55 +02:00
renovate[bot]
3630fdc4e2
fix(deps): update dependency certifi to v2023 (#520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-28 15:28:41 +02:00
7b2270d4f1
chore: remove poetry experimental.new-installer flag (#530) 2023-05-28 15:18:52 +02:00
renovate[bot]
f198a21b70
fix(deps): update dependency docker to v6.1.2 (#519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-14 19:48:05 +02:00
renovate[bot]
a3b539953f
chore(deps): lock file maintenance (#506)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-14 18:56:44 +02:00
renovate[bot]
4de34d58f5
fix(deps): update dependency requests to v2.30.0 (#518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-14 18:55:38 +02:00
renovate[bot]
839765c19d
fix(deps): update dependency ruamel.yaml to v0.17.26 (#513)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-13 11:11:54 +02:00
renovate[bot]
cafb48dd8c chore(docker): update python:3.11-alpine docker digest to 4e8e9a5 2023-05-12 19:26:32 +00:00
renovate[bot]
c09cbcecd5 chore(docker): update python:3.11-alpine docker digest to 2f2dadb 2023-05-12 08:02:20 +00:00
renovate[bot]
afcd209277 chore(deps): update dependency ruff to v0.0.265 2023-05-08 08:06:07 +00:00
renovate[bot]
3ff50a673f chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.1 2023-05-04 16:15:45 +00:00
renovate[bot]
7865d4bfe3 chore(docker): update python:3.11-alpine docker digest to 7210235 2023-05-03 23:27:41 +00:00
renovate[bot]
32eb2fcaed chore(docker): update python:3.11-alpine docker digest to 06a3f7b 2023-05-03 14:19:14 +00:00
7695d32d61
fix bare url in contribution file (#515) 2023-05-03 09:36:55 +02:00
renovate[bot]
3b4e4f042a chore(deps): update dependency ruff to v0.0.263 2023-05-01 04:36:48 +00:00
renovate[bot]
ffa9f1de98
fix(deps): update dependency requests to v2.29.0 (#511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-27 08:46:50 +02:00
renovate[bot]
222fdb9a24 chore(deps): update devdeps non-major 2023-04-24 05:43:03 +00:00
renovate[bot]
b26ea42ad0 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.39.0 2023-04-20 03:21:34 +00:00
renovate[bot]
beb4a34349 chore(deps): update dependency pytest to v7.3.1 2023-04-17 17:40:38 +00:00
5b55a2585c
ci: switch to new codecov uploader (#508) 2023-04-17 16:22:23 +02:00
renovate[bot]
9232d91088 chore(deps): update devdeps non-major 2023-04-10 04:43:37 +00:00
renovate[bot]
ae7d326db0 chore(docker): update python:3.11-alpine docker digest to 507818d 2023-04-08 02:25:54 +00:00
renovate[bot]
ffc99756d9 chore(docker): update python:3.11-alpine docker digest to 5405826 2023-04-06 10:01:41 +00:00
renovate[bot]
f453268586 chore(docker): update python:3.11-alpine docker digest to 4b4078a 2023-03-30 08:05:07 +00:00
renovate[bot]
e186b101f9 chore(docker): update python:3.11-alpine docker digest to 4d53bc4 2023-03-30 01:51:21 +00:00
renovate[bot]
61ff009407 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.38.1 2023-03-27 22:11:45 +00:00
renovate[bot]
1d71983c0a
chore(deps): lock file maintenance (#499) 2023-03-27 21:09:09 +02:00
renovate[bot]
f4a3917675
fix(deps): update dependency dateparser to v1.1.8 (#496) 2023-03-27 21:08:55 +02:00
renovate[bot]
1d3d472507 chore(docker): update python:3.11-alpine docker digest to 8af856d 2023-03-27 14:04:31 +00:00
renovate[bot]
99437083fc
chore(deps): update dependency ruff to v0.0.259 (#498) 2023-03-27 13:15:09 +02:00
renovate[bot]
f6039d90b8 chore(docker): update python:3.11-alpine docker digest to 506eed4 2023-03-23 19:52:15 +00:00
renovate[bot]
711acd985c
fix(deps): update dependency pathspec to v0.11.1 (#493) 2023-03-20 11:00:25 +01:00
renovate[bot]
b4caa60b51
chore(deps): lock file maintenance (#489) 2023-03-20 10:37:06 +01:00
renovate[bot]
f268028c67
chore(deps): update dependency ruff to v0.0.257 (#494) 2023-03-20 10:34:08 +01:00
renovate[bot]
088bcebfb0 chore(docker): update python:3.11-alpine docker digest to 741e650 2023-03-14 18:27:47 +00:00
6c97a93bc4
chore: exclude ruff linter rule UP038 (#490) 2023-03-07 14:21:44 +01:00
renovate[bot]
3f8f86351b chore(deps): update devdependencies (non-major) 2023-03-06 05:06:31 +00:00
renovate[bot]
913b5aab01 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.38.0 2023-03-05 00:51:31 +00:00
renovate[bot]
445e0e9435
fix(deps): update dependency zipp to v3.15.0 (#484) 2023-02-27 09:33:21 +01:00
renovate[bot]
005a44842e
fix(deps): update dependency python-json-logger to v2.0.7 (#482) 2023-02-27 09:21:42 +01:00
renovate[bot]
83e3c0a158
chore(deps): update dependency ruff to v0.0.252 (#485) 2023-02-27 09:02:39 +01:00
renovate[bot]
5e163ba5b5 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.37.5 2023-02-27 04:54:22 +00:00
renovate[bot]
baa8dbe240 chore(docker): update python:3.11-alpine docker digest to 1a5c146 2023-02-25 11:32:46 +00:00
renovate[bot]
1c1bc5fe32
fix(deps): update dependency python-json-logger to v2.0.6 (#478) 2023-02-18 14:34:38 +01:00
renovate[bot]
4cc8f89505
fix(deps): update dependency zipp to v3.14.0 (#481) 2023-02-18 14:25:13 +01:00
renovate[bot]
7480d76db5 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.37.4 2023-02-17 15:41:09 +00:00
renovate[bot]
20c43043c7 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.37.3 2023-02-16 16:41:47 +00:00
9073896721
refctor: migrate flake8 to ruff python linter (#477) 2023-02-12 14:46:35 +01:00
renovate[bot]
bff68cb9bd chore(docker): update python:3.11-alpine docker digest to 8463061 2023-02-11 19:07:50 +00:00
renovate[bot]
4ed5285d63 chore(docker): update python:3.11-alpine docker digest to dbc4bbe 2023-02-11 10:38:24 +00:00
renovate[bot]
80a953e930
fix(deps): update dependency zipp to v3.13.0 (#474) 2023-02-09 19:50:25 +01:00
5c92916f51
ci: bump container build plugin to drone-docker-buildx:23 (#473) 2023-02-09 19:42:09 +01:00
renovate[bot]
fd4eb05830 chore(docker): update python:3.11-alpine docker digest to deb0f63 2023-02-09 09:43:17 +00:00
6a2454d081
fix drone-matrix template (#471) 2023-02-08 21:57:33 +01:00
renovate[bot]
6d4ff66b3f
fix(deps): update dependency websocket_client to v1.5.1 (#469) 2023-02-08 12:11:52 +01:00
renovate[bot]
ca1db20838
fix(deps): update dependency zipp to v3.12.1 (#470) 2023-02-08 10:03:12 +01:00
renovate[bot]
ef35312edf chore(docker): update python:3.11-alpine docker digest to d8b0703 2023-02-04 11:25:08 +00:00
renovate[bot]
33d4d8cea3
fix(deps): update dependency dateparser to v1.1.7 (#467) 2023-02-02 21:33:45 +01:00
renovate[bot]
cf5af9f34f
fix(deps): update dependency pathspec to v0.11.0 (#464) 2023-02-02 12:21:23 +01:00
renovate[bot]
fbcc0e3dfa
fix(deps): update dependency websocket_client to v1.5.0 (#465) 2023-02-02 10:24:27 +01:00
renovate[bot]
6bbc993e48
chore(deps): lock file maintenance (#462) 2023-02-02 09:22:59 +01:00
renovate[bot]
4bc7375c13
fix(deps): update dependency zipp to v3.12.0 (#466) 2023-02-02 09:16:06 +01:00
renovate[bot]
98c740fb90 chore(docker): update python:3.11-alpine docker digest to ca1298a 2023-01-24 11:25:33 +00:00
renovate[bot]
31994c8c06 chore(deps): update devdependencies (non-major) 2023-01-23 05:52:37 +00:00
renovate[bot]
9346326e0b chore(docker): update python:3.11-alpine docker digest to 625383c 2023-01-18 13:11:59 +00:00
renovate[bot]
6f7e3cf889
fix(deps): update dependency dateparser to v1.1.6 (#457) 2023-01-16 09:46:17 +01:00
renovate[bot]
82d21e5b07
fix(deps): update dependency requests to v2.28.2 (#458) 2023-01-16 09:33:43 +01:00
8135f73ee2
refactor: use buildx for multiarch container builds (#459) 2023-01-16 09:10:35 +01:00
renovate[bot]
fa1d245f12 chore(docker): update docker digests 2023-01-10 05:19:59 +00:00
renovate[bot]
ff722181f9
chore(deps): lock file maintenance (#448) 2023-01-09 21:17:32 +01:00
renovate[bot]
1219aaa1c7 chore(deps): update dependency pydocstyle to v6.2.3 2023-01-09 03:36:22 +00:00
renovate[bot]
6929c94a3a chore(docker): update docker digests 2023-01-08 18:29:30 +00:00
8b8e3eafae
chore: remove support for arm32 (#454)
BREAKING CHANGE: We dropped the arm32 platform support and builds.
2023-01-08 16:12:23 +01:00
renovate[bot]
a3d1ee6d2a
chore(deps): update dependency flake8-isort to v6 (#450) 2023-01-03 14:52:39 +01:00
renovate[bot]
fcaf3e47d0
fix(deps): update dependency dateparser to v1.1.5 (#452) 2023-01-03 14:08:40 +01:00
renovate[bot]
55248a7199 chore(deps): update devdependencies (non-major) 2022-12-26 03:52:06 +00:00
renovate[bot]
522941a6e3 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.37.1 2022-12-21 20:29:48 +00:00
renovate[bot]
354d0ad8a7 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.37.0 2022-12-12 00:12:29 +00:00
renovate[bot]
825068c98d
fix(deps): update dependency pathspec to v0.10.3 (#446) 2022-12-11 12:42:21 +01:00
renovate[bot]
9e0e4d3bfa
chore(deps): lock file maintenance (#433) 2022-12-09 22:45:43 +01:00
renovate[bot]
26a4ca5601
chore(docker): update docker digests (#443) 2022-12-09 22:45:31 +01:00
renovate[bot]
a6973289bf
fix(deps): update dependency certifi to v2022.12.7 [security] (#444) 2022-12-09 22:14:08 +01:00
renovate[bot]
65af002494
fix(deps): update dependency zipp to v3.11.0 (#438) 2022-12-04 19:05:50 +01:00
renovate[bot]
1f15102098
fix(deps): update dependency jsonschema to v4.17.3 (#440) 2022-12-04 18:21:08 +01:00
renovate[bot]
9cd7526026 chore(docker): update docker digests 2022-11-30 04:40:48 +00:00
renovate[bot]
0d85108bc1 chore(deps): update dependency flake8-logging-format to v0.9.0 2022-11-28 03:34:14 +00:00
82ec4f3138
ci: use python311 base image on ci (#437) 2022-11-24 21:35:40 +01:00
renovate[bot]
2d27816802
fix(deps): update dependency dateparser to v1.1.4 (#434) 2022-11-24 15:10:22 +01:00
renovate[bot]
edddd5ea30
fix(deps): update dependency jsonschema to v4.17.1 (#435) 2022-11-24 10:46:24 +01:00
renovate[bot]
b3eb7c6659 chore(deps): update dependency flake8-isort to v5.0.3 2022-11-21 04:26:04 +00:00
renovate[bot]
62a6ecb92a
chore(deps): lock file maintenance (#425) 2022-11-17 21:40:02 +01:00
renovate[bot]
4d55cab3f0
fix(deps): update dependency pathspec to v0.10.2 (#429) 2022-11-17 21:39:48 +01:00
renovate[bot]
52241caf28 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.36.1 2022-11-17 00:26:29 +00:00
renovate[bot]
c823004049 chore(docker): update docker digests 2022-11-16 12:24:14 +00:00
renovate[bot]
b4442b9a95 chore(docker): update docker digests 2022-11-12 15:30:23 +00:00
renovate[bot]
c4dd01eb1a chore(docker): update docker digests 2022-11-11 16:08:02 +00:00
renovate[bot]
1347dbe794 chore(docker): update docker digests 2022-11-11 06:11:43 +00:00
renovate[bot]
6d66189180 chore(deps): update dependency flake8-builtins to v2.0.1 2022-11-07 04:47:47 +00:00
renovate[bot]
3a9eec8eb9
fix(deps): update dependency docker to v6.0.1 (#419) 2022-11-05 14:09:44 +01:00
renovate[bot]
fa86bb6aea
fix(deps): update dependency dateparser to v1.1.3 (#420) 2022-11-05 09:20:25 +01:00
104f38790b
chore: bump hugo to v0.105.0 (#423) 2022-11-05 09:20:01 +01:00
renovate[bot]
85c9bfe492
fix(deps): update dependency websocket_client to v1.4.2 (#421) 2022-11-05 07:46:30 +01:00
198c08f684
ci: refactor broken link check (#422) 2022-11-04 12:58:11 +01:00
renovate[bot]
45c5213b61 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.36.0 2022-11-03 18:49:54 +00:00
06a9dd3772
ci: add test step for python 11 (#417) 2022-11-02 13:01:40 +01:00
renovate[bot]
07f0d1b83e
fix(deps): update dependency jsonschema to v4.17.0 (#416) 2022-11-02 10:01:58 +01:00
renovate[bot]
54dac885be
chore(deps): lock file maintenance (#415) 2022-11-02 09:11:24 +01:00
renovate[bot]
31ae49ed2c chore(deps): update dependency pytest to v7.2.0 2022-10-31 05:36:22 +00:00
renovate[bot]
f15a5beb16
fix(deps): update dependency dateparser to v1.1.2 (#405) 2022-10-26 09:26:43 +02:00
renovate[bot]
6b2043486b
fix(deps): update dependency zipp to v3.10.0 (#407) 2022-10-26 08:40:52 +02:00
renovate[bot]
b3003266b6
chore(deps): update arm64v8/python docker tag to v3.11 (#411) 2022-10-26 08:40:43 +02:00
renovate[bot]
ce62684262
chore(deps): update arm32v7/python docker tag to v3.11 (#412) 2022-10-26 08:40:37 +02:00
renovate[bot]
fa83c61dd6 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.8 2022-10-26 02:12:23 +00:00
renovate[bot]
1c74385b2c
chore(deps): lock file maintenance (#403) 2022-10-25 21:33:21 +02:00
renovate[bot]
9772d31eeb
chore(deps): update python docker tag to v3.11 (#409) 2022-10-25 21:33:04 +02:00
renovate[bot]
1f941b38bc
fix(deps): update dependency colorama to v0.4.6 (#410) 2022-10-25 21:32:50 +02:00
renovate[bot]
2fcdec3888 chore(docker): update docker digests 2022-10-25 13:50:17 +00:00
renovate[bot]
119308d609 chore(docker): update docker digests 2022-10-21 00:44:44 +00:00
renovate[bot]
e3522464ce chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.7 2022-10-17 10:59:35 +00:00
renovate[bot]
3d2b4189a2
chore(deps): lock file maintenance (#402) 2022-10-11 21:03:05 +02:00
renovate[bot]
0e7ee6e916 chore(deps): update devdependencies (non-major) 2022-10-10 03:08:18 +00:00
renovate[bot]
f0e9769c96
fix(deps): update dependency zipp to v3.9.0 (#399) 2022-10-09 21:15:49 +02:00
renovate[bot]
696cfebd23
chore(deps): update dependency flake8-builtins to v2 (#397) 2022-10-09 16:30:40 +02:00
renovate[bot]
456093413c
chore(deps): update dependency flake8-pep3101 to v2 (#398) 2022-10-09 13:40:09 +02:00
renovate[bot]
ab87570886
chore(deps): update dependency flake8-isort to v5 (#400) 2022-10-09 11:35:21 +02:00
renovate[bot]
f3ed88edd9 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.6 2022-10-04 13:18:55 +00:00
renovate[bot]
0c1c0626d7
chore(deps): update dependency pytest-cov to v4 (#395) 2022-09-29 08:54:27 +02:00
renovate[bot]
a67deea0ac chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.5 2022-09-28 12:47:35 +00:00
renovate[bot]
f0c6a52006
chore(deps): lock file maintenance (#393) 2022-09-28 08:40:51 +02:00
renovate[bot]
8df41f515d
fix(deps): update dependency certifi to v2022.9.24 (#391) 2022-09-28 08:40:40 +02:00
renovate[bot]
dd97930c20 chore(deps): update dependency flake8-eradicate to v1.4.0 2022-09-26 05:15:19 +00:00
renovate[bot]
e9793ca648 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.4 2022-09-23 22:47:10 +00:00
renovate[bot]
1a306faca2
fix(deps): update dependency idna to v3.4 (#388) 2022-09-19 09:07:12 +02:00
renovate[bot]
cf80327e73
chore(deps): lock file maintenance (#389) 2022-09-19 09:06:05 +02:00
renovate[bot]
30b7370b4e
fix(deps): update dependency certifi to v2022.9.14 (#387) 2022-09-15 09:44:55 +02:00
renovate[bot]
23656f2a94 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.3 2022-09-12 17:03:39 +00:00
renovate[bot]
3353a10578
chore(docker): update docker digests (#383) 2022-09-12 10:26:15 +02:00
renovate[bot]
f4b28177c4
fix(deps): update dependency jsonschema to v4.16.0 (#384) 2022-09-12 10:26:04 +02:00
renovate[bot]
0c511f6f1f
fix(deps): update dependency certifi to v2022.6.15.1 (#385) 2022-09-12 09:23:47 +02:00
renovate[bot]
60200964d3
fix(deps): update dependency websocket_client to v1.4.1 (#379) 2022-09-06 09:26:10 +02:00
renovate[bot]
9a213d2afd
fix(deps): update dependency jsonschema to v4.15.0 (#377) 2022-09-06 08:39:59 +02:00
renovate[bot]
effb7d6df8 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.2 2022-09-05 22:44:41 +00:00
renovate[bot]
50c379fb82
chore(deps): lock file maintenance (#381) 2022-09-05 20:40:14 +02:00
renovate[bot]
954cef5635
fix(deps): update dependency pathspec to v0.10.1 (#376) 2022-09-05 20:37:36 +02:00
renovate[bot]
1b3840f654 chore(deps): update dependency pytest to v7.1.3 2022-09-05 06:42:32 +00:00
renovate[bot]
69059b1492 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.1 2022-09-02 14:13:44 +00:00
renovate[bot]
5b4bde8a7c chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.35.0 2022-08-30 15:12:29 +00:00
renovate[bot]
2d7d473b31
chore(deps): lock file maintenance (#374) 2022-08-29 21:46:40 +02:00
renovate[bot]
478ba06a96
fix(deps): update dependency websocket_client to v1.4.0 (#373) 2022-08-29 21:18:59 +02:00
renovate[bot]
99b8ad5ac9 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.34.2 2022-08-23 02:02:26 +00:00
renovate[bot]
67e431c5c3
chore(deps): lock file maintenance (#347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-22 10:01:27 +02:00
renovate[bot]
a68018500b
fix(deps): update dependency jsonschema to v4.14.0 (#370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-22 09:59:48 +02:00
renovate[bot]
f667915ef4
chore(deps): update dependency flake8 to v5 (#353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-22 08:40:14 +02:00
renovate[bot]
81c7bbd881
chore(deps): update devdependencies (non-major) (#366) 2022-08-22 00:08:31 +02:00
renovate[bot]
9e066f0099
fix(deps): update dependency jsonschema to v4.13.0 (#369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-19 22:26:38 +02:00
renovate[bot]
31bad7357e
fix(deps): update dependency docker to v6 (#368) 2022-08-19 12:01:18 +02:00
renovate[bot]
ac13339ddc
fix(deps): update dependency jsonschema to v4.12.1 (#367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-18 21:58:48 +02:00
renovate[bot]
64ffb12722 chore(docker): update docker digests 2022-08-11 05:34:16 +00:00
renovate[bot]
8cceb71ad1 chore(docker): update docker digests to 3fe6aa2 2022-08-10 12:43:03 +00:00
renovate[bot]
9b15c1b3e3 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.34.1 2022-08-08 22:45:22 +00:00
renovate[bot]
f9ea8a959b chore(deps): update dependency flake8-isort to v4.2.0 2022-08-08 05:17:11 +00:00
renovate[bot]
0d8f854db0 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.34.0 2022-08-04 23:54:49 +00:00
renovate[bot]
4e0a346dd6 chore(docker): update python digest to 4543fd9 2022-08-03 23:49:25 +00:00
renovate[bot]
3d06abfc94
fix(deps): update dependency jsonschema to v4.9.1 (#359) 2022-08-03 20:17:46 +02:00
renovate[bot]
b3ea853840 chore(docker): update docker digests to 4fd92f2 2022-08-03 15:17:57 +00:00
renovate[bot]
86fcb17237 chore(docker): update python digest to ffc9076 2022-08-03 05:59:57 +00:00
renovate[bot]
2388ca8c48 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.33.2 2022-08-02 04:22:16 +00:00
renovate[bot]
826a949d0e
fix(deps): update dependency jsonschema to v4.9.0 (#354) 2022-08-01 21:16:12 +02:00
renovate[bot]
083307b673 chore(deps): update dependency flake8-isort to v4.1.2.post0 2022-08-01 03:19:23 +00:00
renovate[bot]
d2e60c36c9
fix(deps): update dependency jsonschema to v4.8.0 (#352) 2022-07-30 21:43:09 +02:00
renovate[bot]
c03ad419aa chore(docker): update docker digests to dcc75b5 2022-07-27 17:36:47 +00:00
renovate[bot]
46caa3d2d0 chore(docker): update docker digests to fe93ef5 2022-07-27 05:37:16 +00:00
9f1c0c39d2
ci: switch to thegeeklab/drone-s3-sync plugin 2022-07-26 14:47:52 +02:00
4eac4e6035
[skip ci] adjust repo config 2022-07-21 09:51:00 +02:00
renovate[bot]
12317162c4 chore(docker): update docker digests to 8042f9a 2022-07-19 12:38:10 +00:00
renovate[bot]
83304370c0 chore(docker): update docker digests to 5e8298e 2022-07-19 05:41:06 +00:00
renovate[bot]
433af8a364 chore(deps): update dependency pep8-naming to v0.13.1 2022-07-18 02:08:19 +00:00
renovate[bot]
789fad25ad chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.33.1 2022-07-17 22:07:11 +00:00
30adbcf2e2
ci: switch alpine-tools image 2022-07-17 20:54:35 +02:00
renovate[bot]
7e26330409 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.33.0 2022-07-15 19:48:22 +00:00
8d1642db90
docs: fix spelling in readme 2022-07-15 08:50:09 +02:00
renovate[bot]
5da9cad46f
fix(deps): update dependency python-json-logger to v2.0.4 (#342) 2022-07-13 12:25:24 +02:00
renovate[bot]
d168316802
fix(deps): update dependency jsonschema to v4.7.2 (#339) 2022-07-13 10:30:57 +02:00
renovate[bot]
d8a1766ad5
fix(deps): update dependency zipp to v3.8.1 (#343) 2022-07-13 08:58:07 +02:00
renovate[bot]
0e2014dbd2
chore(deps): lock file maintenance (#334) 2022-07-11 13:29:00 +02:00
renovate[bot]
877edacc05
fix(deps): update dependency python-json-logger to v2.0.3 (#340) 2022-07-11 10:49:19 +02:00
renovate[bot]
adcff64901
fix(deps): update dependency nested-lookup to v0.2.25 (#338) 2022-07-11 08:48:23 +02:00
renovate[bot]
112fb4561a chore(deps): update dependency pytest-mock to v3.8.2 2022-07-11 05:21:42 +00:00
renovate[bot]
2053091beb
fix(deps): update dependency requests to v2.28.1 (#337) 2022-06-29 21:04:51 +02:00
renovate[bot]
405d444812
fix(deps): update dependency jsonschema to v4.6.1 (#336) 2022-06-29 08:57:19 +02:00
renovate[bot]
e43c8e55fc chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.32.4 2022-06-27 14:54:53 +00:00
renovate[bot]
d2e8dcb887 chore(deps): update dependency pytest-mock to v3.8.1 2022-06-27 05:38:51 +00:00
renovate[bot]
6950924a3e
chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.32.3 (#332) 2022-06-22 10:02:07 +02:00
renovate[bot]
b4bb4a6b03
fix(deps): update dependency websocket_client to v1.3.3 (#331) 2022-06-20 21:04:42 +02:00
renovate[bot]
b88532308c
chore(deps): lock file maintenance (#330) 2022-06-20 10:25:19 +02:00
renovate[bot]
d7e23976f0
fix(deps): update dependency colorama to v0.4.5 (#329) 2022-06-20 08:53:27 +02:00
renovate[bot]
31e1985f70
fix(deps): update dependency requests to v2.28.0 (#325) 2022-06-19 23:35:17 +02:00
renovate[bot]
dbce4d72c8
chore(deps): lock file maintenance (#323) 2022-06-19 14:55:04 +02:00
renovate[bot]
99e6d7cef8
fix(deps): update dependency certifi to v2022.6.15 (#328) 2022-06-19 14:54:46 +02:00
Renovate Bot
c394ac85d4 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.32.2 2022-06-12 17:12:02 +00:00
Renovate Bot
fcdeb0eb98 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.32.1 2022-06-11 02:08:56 +00:00
Renovate Bot
fe131bfb04 chore(docker): update docker digests to 22fb80b 2022-06-08 03:12:28 +00:00
Renovate Bot
f2c6073f24 chore(deps): update dependency pep8-naming to v0.13.0 2022-06-06 05:57:59 +00:00
Renovate Bot
d316266174 chore(docker): update docker digests to 7467540 2022-06-03 05:39:54 +00:00
renovate[bot]
649dc4eca1
chore(deps): lock file maintenance (#314) 2022-06-02 14:04:47 +02:00
renovate[bot]
4379e29dac
fix(deps): update dependency jsonschema to v4.6.0 (#320) 2022-06-02 14:04:36 +02:00
Renovate Bot
21576991a5 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.32.0 2022-06-02 02:56:38 +00:00
Renovate Bot
c07e22f62f chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.31.0 2022-05-30 23:49:54 +00:00
Renovate Bot
f4ccdc2324 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.30.2 2022-05-26 17:50:52 +00:00
Renovate Bot
cda55122f2 chore(docker): update docker digests to 4051162 2022-05-26 04:04:35 +00:00
Renovate Bot
cf7b43f7e4 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.30.1 2022-05-24 12:36:52 +00:00
Renovate Bot
648e9961b8 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.30.0 2022-05-23 01:34:10 +00:00
Renovate Bot
29fdc2c6ea chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.6 2022-05-21 19:03:28 +00:00
renovate[bot]
753795636e
fix(deps): update dependency certifi to v2022 (#310) 2022-05-21 13:20:55 +02:00
renovate[bot]
041f29eb58
chore(deps): lock file maintenance (#307) 2022-05-20 17:09:35 +02:00
13a0f35cd5
ci: switch to linkchecker (#311) 2022-05-20 16:25:12 +02:00
Renovate Bot
a942d85542 chore(docker): update docker digests to b1c7b16 2022-05-18 13:11:26 +00:00
Renovate Bot
b4c7b3f2d2 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.5 2022-05-12 19:02:22 +00:00
Renovate Bot
d21b4ef7b1 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.4 2022-05-07 11:18:16 +00:00
renovate[bot]
d3147dc3f2
chore(deps): lock file maintenance (#303) 2022-05-06 16:45:03 +02:00
renovate[bot]
8b7797ed1a
fix(deps): update dependency jsonschema to v4.5.1 (#305) 2022-05-06 16:44:03 +02:00
Renovate Bot
5d65ea8dd3 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.3 2022-05-02 23:48:16 +00:00
4dfe569d7c
update to hugo:0.97.3 in ci 2022-05-02 22:07:14 +02:00
e23f3462d8
docs: fix hugo hint shortcode 2022-05-02 21:51:52 +02:00
Renovate Bot
1d3294acee chore(deps): update devdependencies (non-major) 2022-05-02 04:16:01 +00:00
Renovate Bot
88e81b827d chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.2 2022-04-30 14:37:54 +00:00
Renovate Bot
d31a978097 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.1 2022-04-28 13:27:46 +00:00
Renovate Bot
36a55225bc chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.29.0 2022-04-23 17:49:28 +00:00
renovate[bot]
74192442bd
chore(deps): lock file maintenance [security] (#298) 2022-04-23 14:25:39 +02:00
Renovate Bot
91079cf6d5 chore(docker): update docker digests to 032fd45 2022-04-21 01:04:57 +00:00
5228cc6393
chore: adjust yapf dict formatting to avoid line breaks (#289) 2022-04-20 21:03:47 +02:00
Renovate Bot
412a331879 chore(docker): update docker digests to 49d6cf8 2022-04-14 23:00:54 +00:00
Renovate Bot
02b2755cbb chore(docker): update docker digests to 31f39ec 2022-04-14 14:44:14 +00:00
Renovate Bot
334febbfd7 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.28.0 2022-04-11 14:18:47 +00:00
Renovate Bot
24c851d4c4 chore(docker): update docker digests to 3703b9d 2022-04-07 20:50:39 +00:00
Renovate Bot
87eef8597a chore(docker): update docker digests to e619558 2022-04-05 23:33:37 +00:00
Renovate Bot
87221f5268 chore(docker): update docker digests to 0822e90 2022-04-05 15:20:24 +00:00
renovate[bot]
f739352312
fix(deps): update dependency anyconfig to v0.13.0 (#287) 2022-04-04 10:13:00 +02:00
renovate[bot]
55ff80562d
fix(deps): update dependency zipp to v3.8.0 (#288) 2022-04-04 09:04:29 +02:00
renovate[bot]
37c8e003e0
chore(deps): lock file maintenance (#282) 2022-03-31 20:51:41 +02:00
renovate[bot]
5a24e940ae
fix(deps): update dependency websocket_client to v1.3.2 (#284) 2022-03-31 20:51:30 +02:00
Renovate Bot
dfa1a95dda chore(docker): update docker digests to b927a8a 2022-03-30 19:04:28 +00:00
Renovate Bot
25f6f8b7c2 chore(docker): update docker digests to 289e6ba 2022-03-30 00:26:20 +00:00
Renovate Bot
a4df85fd00 chore(docker): update python digest to bbf8cad 2022-03-29 12:36:38 +00:00
Renovate Bot
880a7ffd89 chore(docker): update docker digests to dfdc8ff 2022-03-25 11:19:11 +00:00
Renovate Bot
5dc9ddb32a chore(docker): update docker digests to 87eded0 2022-03-24 12:31:41 +00:00
Renovate Bot
ea7584ddb3 chore(docker): update docker digests to 7393522 2022-03-24 05:52:32 +00:00
Renovate Bot
426c9d976f chore(docker): update python digest to 9b00807 2022-03-23 23:32:08 +00:00
Renovate Bot
ead57f5924 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.5 2022-03-21 14:20:44 +00:00
renovate[bot]
bcd3753a3c
chore(deps): lock file maintenance (#270) 2022-03-21 08:52:31 +01:00
renovate[bot]
8a659c33bf
fix(deps): update dependency dateparser to v1.1.1 (#275)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-03-21 08:52:19 +01:00
Renovate Bot
1c8e72ca0a chore(deps): update devdependencies (non-major) 2022-03-21 04:36:03 +00:00
Renovate Bot
eb47e30856 chore(docker): update docker digests to 9a1e361 2022-03-18 17:33:37 +00:00
Renovate Bot
9943311515 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.4 2022-03-14 13:15:24 +00:00
Renovate Bot
38c3bc2348 chore(deps): update dependency pytest to v7.1.0 2022-03-14 03:11:49 +00:00
Renovate Bot
44d40a45fd chore(docker): update docker digests to bdf7490 2022-03-08 12:35:46 +00:00
Renovate Bot
27d7003039 chore(deps): update dependency bandit to v1.7.4 2022-03-07 03:09:23 +00:00
de4ec94d1f
ci: update hugo to v0.93.2 2022-03-05 16:57:05 +01:00
renovate[bot]
dc17262c54
chore(deps): lock file maintenance (#262) 2022-02-28 09:03:41 +01:00
renovate[bot]
7e2c30fd27
fix(deps): update dependency websocket_client to v1.3.1 (#265) 2022-02-28 09:03:30 +01:00
Renovate Bot
94068ce963 chore(deps): update dependency bandit to v1.7.3 2022-02-28 03:16:56 +00:00
Renovate Bot
4d56b45802 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.3 2022-02-26 19:29:08 +00:00
Renovate Bot
4f95cf9de0 chore(docker): update docker digests to 9871be3 2022-02-26 12:57:33 +00:00
Renovate Bot
06a8e3a0bf chore(docker): update docker digests to 1a3046e 2022-02-24 09:43:22 +00:00
Renovate Bot
415ea92069 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.2 2022-02-21 11:29:21 +00:00
Renovate Bot
2476fccf42 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.1 2022-02-18 23:07:52 +00:00
renovate[bot]
1ca4a29ed4
chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.27.0 (#260) 2022-02-18 12:10:00 +01:00
Renovate Bot
8081f64912 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.26.3 2022-02-15 00:24:09 +00:00
renovate[bot]
db3481778b
chore(deps): lock file maintenance (#253) 2022-02-14 21:34:08 +01:00
renovate[bot]
703460ebeb
fix(deps): update dependency ruamel.yaml to v0.17.21 (#256) 2022-02-14 21:33:09 +01:00
Renovate Bot
4014972c67 chore(docker): update docker digests to c1a3d00 2022-02-14 10:48:47 +00:00
Renovate Bot
a2e5c83b06 chore(deps): update dependency pytest to v7.0.1 2022-02-14 02:53:34 +00:00
Renovate Bot
2fa962da30 chore(deps): update dependency tomli to v2.0.1 2022-02-08 13:57:12 +00:00
Renovate Bot
e0ff861fda chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.26.1 2022-02-07 17:53:10 +00:00
renovate[bot]
7e34443aa8
chore(deps): update dependency pytest to v7 (#251) 2022-02-07 13:47:38 +01:00
8a1e7b3d9d
fix: add toml to dev dependencies as yapf requirement (#252) 2022-02-05 15:01:42 +01:00
Renovate Bot
ca2718eb8e chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.25.2 2022-02-03 15:15:09 +00:00
renovate[bot]
c608f88029
chore(deps): lock file maintenance (#248) 2022-02-01 09:19:36 +01:00
renovate[bot]
9986c7f8a0
fix(deps): update dependency environs to v9.5.0 (#247) 2022-02-01 09:17:22 +01:00
Renovate Bot
1e5cd0a1d0 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.25.1 2022-01-31 22:34:36 +00:00
renovate[bot]
a6e2419686
chore(deps): lock file maintenance (#241) 2022-01-29 13:32:01 +01:00
renovate[bot]
8c58faa9c6
fix(deps): update dependency jsonschema to v4.4.0 (#239) 2022-01-29 13:31:24 +01:00
Renovate Bot
a422994504 chore(deps): update dependency pytest-mock to v3.7.0 2022-01-28 13:14:02 +00:00
Renovate Bot
74f968e350 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.25.0 2022-01-27 23:10:36 +00:00
Renovate Bot
e241b27b1c chore(deps): update dependency bandit to v1.7.2 2022-01-26 03:21:05 +00:00
Renovate Bot
cad3250a28 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.24.1 2022-01-23 23:27:00 +00:00
Renovate Bot
1ebc7e59f9 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.24.0 2022-01-23 16:02:57 +00:00
Renovate Bot
c1d33705bd chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.23.0 2022-01-13 00:36:06 +00:00
renovate[bot]
b2ebd70fdc
chore(deps): lock file maintenance (#238) 2022-01-10 09:09:55 +01:00
renovate[bot]
36b42a48ba
fix(deps): update dependency ruamel.yaml to v0.17.20 (#224) 2022-01-09 22:40:44 +01:00
17ce2e3dd0
chore: add build deps to Dockerfile (#237) 2022-01-09 22:08:26 +01:00
Renovate Bot
3e00615252 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.22.2 2022-01-09 01:53:29 +00:00
Renovate Bot
c2e88a6598 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.22.1 2022-01-08 20:04:40 +00:00
Renovate Bot
3579de4e48 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.22.0 2022-01-08 14:54:03 +00:00
renovate[bot]
12ec9de43c
fix(deps): update dependency zipp to v3.7.0 (#226) 2022-01-08 13:45:32 +01:00
renovate[bot]
f7b9737972
chore(deps): lock file maintenance (#231) 2022-01-08 12:55:25 +01:00
renovate[bot]
d636bd71ac
fix(deps): update dependency requests to v2.27.1 (#229) 2022-01-08 12:55:10 +01:00
renovate[bot]
20460593f4
fix(deps): update dependency environs to v9.4.0 (#230) 2022-01-07 16:18:46 +01:00
renovate[bot]
697ac4564b
chore(docker): update docker digests (#232) 2022-01-07 16:18:39 +01:00
renovate[bot]
0e98b18d64
chore(deps): lock file maintenance (#228) 2022-01-07 14:12:49 +01:00
renovate[bot]
3c906c4183
fix(deps): update dependency jsonschema to v4.3.3 (#227) 2022-01-07 13:54:51 +01:00
Renovate Bot
5401fac46c chore(deps): update dependency yapf to v0.32.0 2021-12-26 09:52:29 +00:00
renovate[bot]
93674694ea
fix(deps): update dependency jsonschema to v4.3.2 (#223) 2021-12-21 16:58:43 +01:00
312bcc3097
chore: fix clean target in makefile 2021-12-21 10:48:14 +01:00
b639d88f5f
sign drone config 2021-12-21 10:24:55 +01:00
48f58efb56
chore: end of the year maintenance 2021-12-21 10:15:41 +01:00
renovate[bot]
ed9a3ebf80
fix(deps): update dependency jsonschema to v4.3.1 (#222) 2021-12-17 09:12:51 +01:00
renovate[bot]
968f608c4f
chore(deps): lock file maintenance (#218) 2021-12-16 12:49:45 +01:00
renovate[bot]
8ccf573757
fix(deps): update dependency jsonschema to v4.3.0 (#221) 2021-12-16 12:48:59 +01:00
renovate[bot]
787aaffbb6
chore(deps): update dependency tomli to v2 (#220) 2021-12-14 09:37:30 +01:00
Renovate Bot
34367d58a9 chore(deps): update dependency tomli to v1.2.3 2021-12-14 03:05:21 +00:00
Renovate Bot
0a3367dfc1 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.21.2 2021-12-12 15:12:55 +00:00
e112187056
chore: adjust changelog template to link to prs instead of issues (#216) 2021-12-12 14:34:11 +01:00
renovate[bot]
bbc0cd4092
chore(deps): lock file maintenance (#214) 2021-12-12 12:21:14 +01:00
renovate[bot]
c8e16750c4
fix(deps): update dependency websocket_client to v1.2.3 (#215) 2021-12-12 12:21:04 +01:00
Renovate Bot
f3308f8855 chore(docker): update docker digests 2021-11-28 14:19:10 +00:00
renovate[bot]
df78993628
chore(deps): lock file maintenance (#211) 2021-11-28 14:07:05 +01:00
Renovate Bot
4a74f12c63 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.21.1 2021-11-24 10:57:14 +00:00
Renovate Bot
6d2642ca76 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.21.0 2021-11-16 10:43:33 +00:00
renovate[bot]
d9e3c138be
chore(deps): lock file maintenance (#208) 2021-11-15 09:39:21 +01:00
renovate[bot]
f062a72777
fix(deps): update dependency environs to v9.3.5 (#209) 2021-11-15 09:38:48 +01:00
Renovate Bot
a750dbebed chore(deps): update dependency bandit to v1.7.1 2021-11-12 14:22:50 +00:00
renovate[bot]
458c1f96b1
fix(deps): update dependency nested-lookup to v0.2.23 (#206) 2021-11-10 09:06:11 +01:00
renovate[bot]
c140cbbd44
chore(deps): lock file maintenance (#204) 2021-11-09 20:15:32 +01:00
renovate[bot]
abc4909688
fix(deps): update dependency jsonschema to v4.2.1 (#202) 2021-11-09 20:15:20 +01:00
Renovate Bot
1d4693805b chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.20.1 2021-11-08 12:36:19 +00:00
Renovate Bot
163e397acd chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.20.0 2021-11-07 23:42:51 +00:00
Renovate Bot
68ae951953 chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.19.4 2021-11-03 11:17:46 +00:00
renovate[bot]
87f7e30333
chore(deps): lock file maintenance (#196) 2021-11-03 08:50:47 +01:00
renovate[bot]
47d6f7c9aa
fix(deps): update dependency ruamel.yaml to v0.17.17 (#199) 2021-11-03 08:50:10 +01:00
Renovate Bot
f9d5cba70f chore(deps): update dependency thegeeklab/hugo-geekdoc to v0.19.3 2021-10-30 23:37:13 +00:00
Renovate Bot
0385625cc3 chore(deps): update dependency tomli to v1.2.2 2021-10-25 12:15:14 +00:00
42 changed files with 1798 additions and 2741 deletions

View File

@ -1,23 +0,0 @@
# Changelog
{{ range .Versions -}}
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ (regexReplaceAll "(Co-\\w*-by.*)" .Subject "") | trim }}
{{ end }}
{{- end -}}
{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

View File

@ -1,25 +0,0 @@
style: github
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: https://github.com/thegeeklab/docker-tidy
options:
commit_groups:
title_maps:
feat: Features
fix: Bug Fixes
perf: Performance Improvements
refactor: Code Refactoring
chore: Others
test: Testing
ci: CI Pipeline
docs: Documentation
header:
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
pattern_maps:
- Type
- Scope
- Subject
notes:
keywords:
- BREAKING CHANGE

View File

@ -1,512 +0,0 @@
local PythonVersion(pyversion='3.7') = {
name: 'python' + std.strReplace(pyversion, '.', '') + '-pytest',
image: 'python:' + pyversion,
environment: {
PY_COLORS: 1,
},
commands: [
'pip install poetry poetry-dynamic-versioning -qq',
'poetry config experimental.new-installer false',
'poetry install',
'poetry run pytest dockertidy --cov=dockertidy --cov-append --no-cov-on-fail',
'poetry version',
'poetry run docker-tidy --help',
],
depends_on: [
'fetch',
],
};
local PipelineLint = {
kind: 'pipeline',
name: 'lint',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'yapf',
image: 'python:3.10',
environment: {
PY_COLORS: 1,
},
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry config experimental.new-installer false',
'poetry install',
'poetry run yapf -dr ./dockertidy',
],
},
{
name: 'flake8',
image: 'python:3.10',
environment: {
PY_COLORS: 1,
},
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry config experimental.new-installer false',
'poetry install',
'poetry run flake8 ./dockertidy',
],
},
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineTest = {
kind: 'pipeline',
name: 'test',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'fetch',
image: 'python:3.10',
commands: [
'git fetch -tq',
],
},
PythonVersion(pyversion='3.7'),
PythonVersion(pyversion='3.8'),
PythonVersion(pyversion='3.9'),
PythonVersion(pyversion='3.10'),
{
name: 'codecov',
image: 'python:3.10',
environment: {
PY_COLORS: 1,
CODECOV_TOKEN: { from_secret: 'codecov_token' },
},
commands: [
'pip install codecov -qq',
'codecov --required -X gcov',
],
depends_on: [
'python37-pytest',
'python38-pytest',
'python39-pytest',
'python310-pytest',
],
},
],
depends_on: [
'lint',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineSecurity = {
kind: 'pipeline',
name: 'security',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'bandit',
image: 'python:3.10',
environment: {
PY_COLORS: 1,
},
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry config experimental.new-installer false',
'poetry install',
'poetry run bandit -r ./dockertidy -x ./dockertidy/test',
],
},
],
depends_on: [
'test',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineBuildPackage = {
kind: 'pipeline',
name: 'build-package',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'build',
image: 'python:3.10',
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry build',
],
},
{
name: 'checksum',
image: 'alpine',
commands: [
'cd dist/ && sha256sum * > ../sha256sum.txt',
],
},
{
name: 'changelog-generate',
image: 'thegeeklab/git-chglog',
commands: [
'git fetch -tq',
'git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased}',
],
},
{
name: 'changelog-format',
image: 'thegeeklab/alpine-tools',
commands: [
'prettier CHANGELOG.md',
'prettier -w CHANGELOG.md',
],
},
{
name: 'publish-github',
image: 'plugins/github-release',
settings: {
overwrite: true,
api_key: { from_secret: 'github_token' },
files: ['dist/*', 'sha256sum.txt'],
title: '${DRONE_TAG}',
note: 'CHANGELOG.md',
},
when: {
ref: ['refs/tags/**'],
},
},
{
name: 'publish-pypi',
image: 'python:3.10',
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry publish -n',
],
environment: {
POETRY_HTTP_BASIC_PYPI_USERNAME: { from_secret: 'pypi_username' },
POETRY_HTTP_BASIC_PYPI_PASSWORD: { from_secret: 'pypi_password' },
},
when: {
ref: ['refs/tags/**'],
},
},
],
depends_on: [
'security',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineBuildContainer(arch='amd64') = {
local build = if arch == 'arm' then [{
name: 'build',
image: 'python:3.10-alpine',
commands: [
'apk add -Uq --no-cache build-base openssl-dev libffi-dev musl-dev python3-dev git cargo',
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry build',
],
environment: {
CARGO_NET_GIT_FETCH_WITH_CLI: true,
},
}] else [{
name: 'build',
image: 'python:3.10',
commands: [
'git fetch -tq',
'pip install poetry poetry-dynamic-versioning -qq',
'poetry build',
],
}],
kind: 'pipeline',
name: 'build-container-' + arch,
platform: {
os: 'linux',
arch: arch,
},
steps: build + [
{
name: 'dryrun',
image: 'thegeeklab/drone-docker:19',
settings: {
dry_run: true,
dockerfile: 'docker/Dockerfile.' + arch,
repo: 'thegeeklab/${DRONE_REPO_NAME}',
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
depends_on: ['build'],
when: {
ref: ['refs/pull/**'],
},
},
{
name: 'publish-dockerhub',
image: 'thegeeklab/drone-docker:19',
settings: {
auto_tag: true,
auto_tag_suffix: arch,
dockerfile: 'docker/Dockerfile.' + arch,
repo: 'thegeeklab/${DRONE_REPO_NAME}',
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
when: {
ref: ['refs/heads/main', 'refs/tags/**'],
},
depends_on: ['dryrun'],
},
{
name: 'publish-quay',
image: 'thegeeklab/drone-docker:19',
settings: {
auto_tag: true,
auto_tag_suffix: arch,
dockerfile: 'docker/Dockerfile.' + arch,
registry: 'quay.io',
repo: 'quay.io/thegeeklab/${DRONE_REPO_NAME}',
username: { from_secret: 'quay_username' },
password: { from_secret: 'quay_password' },
},
when: {
ref: ['refs/heads/main', 'refs/tags/**'],
},
depends_on: ['dryrun'],
},
],
depends_on: [
'security',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineDocs = {
kind: 'pipeline',
name: 'docs',
platform: {
os: 'linux',
arch: 'amd64',
},
concurrency: {
limit: 1,
},
steps: [
{
name: 'assets',
image: 'thegeeklab/alpine-tools',
commands: [
'make doc',
],
},
{
name: 'markdownlint',
image: 'thegeeklab/markdownlint-cli',
commands: [
"markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md'",
],
},
{
name: 'spellcheck',
image: 'node:lts-alpine',
commands: [
'npm install -g spellchecker-cli',
"spellchecker --files 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions",
],
environment: {
FORCE_COLOR: true,
NPM_CONFIG_LOGLEVEL: 'error',
},
},
{
name: 'testbuild',
image: 'thegeeklab/hugo:0.83.1',
commands: [
'hugo -s docs/ -b http://localhost/',
],
},
{
name: 'link-validation',
image: 'thegeeklab/link-validator',
commands: [
'link-validator -ro',
],
environment: {
LINK_VALIDATOR_BASE_DIR: 'docs/public',
},
},
{
name: 'build',
image: 'thegeeklab/hugo:0.83.1',
commands: [
'hugo -s docs/',
],
},
{
name: 'beautify',
image: 'node:lts-alpine',
commands: [
'npm install -g js-beautify',
"html-beautify -r -f 'docs/public/**/*.html'",
],
environment: {
FORCE_COLOR: true,
NPM_CONFIG_LOGLEVEL: 'error',
},
},
{
name: 'publish',
image: 'plugins/s3-sync',
settings: {
access_key: { from_secret: 's3_access_key' },
bucket: 'geekdocs',
delete: true,
endpoint: 'https://sp.rknet.org',
path_style: true,
secret_key: { from_secret: 's3_secret_access_key' },
source: 'docs/public/',
strip_prefix: 'docs/public/',
target: '/${DRONE_REPO_NAME}',
},
when: {
ref: ['refs/heads/main', 'refs/tags/**'],
},
},
],
depends_on: [
'build-package',
'build-container-amd64',
'build-container-arm64',
'build-container-arm',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineNotifications = {
kind: 'pipeline',
name: 'notifications',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
image: 'plugins/manifest',
name: 'manifest-dockerhub',
settings: {
ignore_missing: true,
auto_tag: true,
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
spec: 'docker/manifest.tmpl',
},
when: {
status: ['success'],
},
},
{
image: 'plugins/manifest',
name: 'manifest-quay',
settings: {
ignore_missing: true,
auto_tag: true,
username: { from_secret: 'quay_username' },
password: { from_secret: 'quay_password' },
spec: 'docker/manifest-quay.tmpl',
},
when: {
status: ['success'],
},
},
{
name: 'pushrm-dockerhub',
pull: 'always',
image: 'chko/docker-pushrm:1',
environment: {
DOCKER_PASS: {
from_secret: 'docker_password',
},
DOCKER_USER: {
from_secret: 'docker_username',
},
PUSHRM_FILE: 'README.md',
PUSHRM_SHORT: 'Keep docker hosts tidy',
PUSHRM_TARGET: 'thegeeklab/${DRONE_REPO_NAME}',
},
when: {
status: ['success'],
},
},
{
name: 'pushrm-quay',
pull: 'always',
image: 'chko/docker-pushrm:1',
environment: {
APIKEY__QUAY_IO: {
from_secret: 'quay_token',
},
PUSHRM_FILE: 'README.md',
PUSHRM_TARGET: 'quay.io/thegeeklab/${DRONE_REPO_NAME}',
},
when: {
status: ['success'],
},
},
{
name: 'matrix',
image: 'thegeeklab/drone-matrix',
settings: {
homeserver: { from_secret: 'matrix_homeserver' },
roomid: { from_secret: 'matrix_roomid' },
template: 'Status: **{{ build.Status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}<br/> Message: {{ commit.Message.Title }}',
username: { from_secret: 'matrix_username' },
password: { from_secret: 'matrix_password' },
},
when: {
status: ['success', 'failure'],
},
},
],
depends_on: [
'docs',
],
trigger: {
ref: ['refs/heads/main', 'refs/tags/**'],
status: ['success', 'failure'],
},
};
[
PipelineLint,
PipelineTest,
PipelineSecurity,
PipelineBuildPackage,
PipelineBuildContainer(arch='amd64'),
PipelineBuildContainer(arch='arm64'),
PipelineBuildContainer(arch='arm'),
PipelineDocs,
PipelineNotifications,
]

View File

@ -1,654 +0,0 @@
---
kind: pipeline
name: lint
platform:
os: linux
arch: amd64
steps:
- name: yapf
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run yapf -dr ./dockertidy
environment:
PY_COLORS: 1
- name: flake8
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run flake8 ./dockertidy
environment:
PY_COLORS: 1
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
---
kind: pipeline
name: test
platform:
os: linux
arch: amd64
steps:
- name: fetch
image: python:3.10
commands:
- git fetch -tq
- name: python37-pytest
image: python:3.7
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run pytest dockertidy --cov=dockertidy --cov-append --no-cov-on-fail
- poetry version
- poetry run docker-tidy --help
environment:
PY_COLORS: 1
depends_on:
- fetch
- name: python38-pytest
image: python:3.8
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run pytest dockertidy --cov=dockertidy --cov-append --no-cov-on-fail
- poetry version
- poetry run docker-tidy --help
environment:
PY_COLORS: 1
depends_on:
- fetch
- name: python39-pytest
image: python:3.9
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run pytest dockertidy --cov=dockertidy --cov-append --no-cov-on-fail
- poetry version
- poetry run docker-tidy --help
environment:
PY_COLORS: 1
depends_on:
- fetch
- name: python310-pytest
image: python:3.10
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run pytest dockertidy --cov=dockertidy --cov-append --no-cov-on-fail
- poetry version
- poetry run docker-tidy --help
environment:
PY_COLORS: 1
depends_on:
- fetch
- name: codecov
image: python:3.10
commands:
- pip install codecov -qq
- codecov --required -X gcov
environment:
CODECOV_TOKEN:
from_secret: codecov_token
PY_COLORS: 1
depends_on:
- python37-pytest
- python38-pytest
- python39-pytest
- python310-pytest
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- lint
---
kind: pipeline
name: security
platform:
os: linux
arch: amd64
steps:
- name: bandit
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry config experimental.new-installer false
- poetry install
- poetry run bandit -r ./dockertidy -x ./dockertidy/test
environment:
PY_COLORS: 1
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- test
---
kind: pipeline
name: build-package
platform:
os: linux
arch: amd64
steps:
- name: build
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: checksum
image: alpine
commands:
- cd dist/ && sha256sum * > ../sha256sum.txt
- name: changelog-generate
image: thegeeklab/git-chglog
commands:
- git fetch -tq
- git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased}
- name: changelog-format
image: thegeeklab/alpine-tools
commands:
- prettier CHANGELOG.md
- prettier -w CHANGELOG.md
- name: publish-github
image: plugins/github-release
settings:
api_key:
from_secret: github_token
files:
- dist/*
- sha256sum.txt
note: CHANGELOG.md
overwrite: true
title: ${DRONE_TAG}
when:
ref:
- refs/tags/**
- name: publish-pypi
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry publish -n
environment:
POETRY_HTTP_BASIC_PYPI_PASSWORD:
from_secret: pypi_password
POETRY_HTTP_BASIC_PYPI_USERNAME:
from_secret: pypi_username
when:
ref:
- refs/tags/**
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: dryrun
image: thegeeklab/drone-docker:19
settings:
dockerfile: docker/Dockerfile.amd64
dry_run: true
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: amd64
dockerfile: docker/Dockerfile.amd64
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: amd64
dockerfile: docker/Dockerfile.amd64
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-arm64
platform:
os: linux
arch: arm64
steps:
- name: build
image: python:3.10
commands:
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: dryrun
image: thegeeklab/drone-docker:19
settings:
dockerfile: docker/Dockerfile.arm64
dry_run: true
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: arm64
dockerfile: docker/Dockerfile.arm64
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: arm64
dockerfile: docker/Dockerfile.arm64
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-arm
platform:
os: linux
arch: arm
steps:
- name: build
image: python:3.10-alpine
commands:
- apk add -Uq --no-cache build-base openssl-dev libffi-dev musl-dev python3-dev git cargo
- git fetch -tq
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
environment:
CARGO_NET_GIT_FETCH_WITH_CLI: true
- name: dryrun
image: thegeeklab/drone-docker:19
settings:
dockerfile: docker/Dockerfile.arm
dry_run: true
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: arm
dockerfile: docker/Dockerfile.arm
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: thegeeklab/drone-docker:19
settings:
auto_tag: true
auto_tag_suffix: arm
dockerfile: docker/Dockerfile.arm
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/main
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: docs
platform:
os: linux
arch: amd64
concurrency:
limit: 1
steps:
- name: assets
image: thegeeklab/alpine-tools
commands:
- make doc
- name: markdownlint
image: thegeeklab/markdownlint-cli
commands:
- markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md'
- name: spellcheck
image: node:lts-alpine
commands:
- npm install -g spellchecker-cli
- spellchecker --files 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions
environment:
FORCE_COLOR: true
NPM_CONFIG_LOGLEVEL: error
- name: testbuild
image: thegeeklab/hugo:0.83.1
commands:
- hugo -s docs/ -b http://localhost/
- name: link-validation
image: thegeeklab/link-validator
commands:
- link-validator -ro
environment:
LINK_VALIDATOR_BASE_DIR: docs/public
- name: build
image: thegeeklab/hugo:0.83.1
commands:
- hugo -s docs/
- name: beautify
image: node:lts-alpine
commands:
- npm install -g js-beautify
- html-beautify -r -f 'docs/public/**/*.html'
environment:
FORCE_COLOR: true
NPM_CONFIG_LOGLEVEL: error
- name: publish
image: plugins/s3-sync
settings:
access_key:
from_secret: s3_access_key
bucket: geekdocs
delete: true
endpoint: https://sp.rknet.org
path_style: true
secret_key:
from_secret: s3_secret_access_key
source: docs/public/
strip_prefix: docs/public/
target: /${DRONE_REPO_NAME}
when:
ref:
- refs/heads/main
- refs/tags/**
trigger:
ref:
- refs/heads/main
- refs/tags/**
- refs/pull/**
depends_on:
- build-package
- build-container-amd64
- build-container-arm64
- build-container-arm
---
kind: pipeline
name: notifications
platform:
os: linux
arch: amd64
steps:
- name: manifest-dockerhub
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
password:
from_secret: docker_password
spec: docker/manifest.tmpl
username:
from_secret: docker_username
when:
status:
- success
- name: manifest-quay
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
password:
from_secret: quay_password
spec: docker/manifest-quay.tmpl
username:
from_secret: quay_username
when:
status:
- success
- name: pushrm-dockerhub
pull: always
image: chko/docker-pushrm:1
environment:
DOCKER_PASS:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
PUSHRM_FILE: README.md
PUSHRM_SHORT: Keep docker hosts tidy
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
when:
status:
- success
- name: pushrm-quay
pull: always
image: chko/docker-pushrm:1
environment:
APIKEY__QUAY_IO:
from_secret: quay_token
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME}
when:
status:
- success
- name: matrix
image: thegeeklab/drone-matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
roomid:
from_secret: matrix_roomid
template: "Status: **{{ build.Status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}<br/> Message: {{ commit.Message.Title }}"
username:
from_secret: matrix_username
when:
status:
- success
- failure
trigger:
ref:
- refs/heads/main
- refs/tags/**
status:
- success
- failure
depends_on:
- docs
---
kind: signature
hmac: d173971d093a84521652b1be1c92ed997e3cbe0729d69db4c5a8a97e16e73df0
...

View File

@ -52,6 +52,11 @@ branches:
required_status_checks: required_status_checks:
strict: false strict: false
contexts: contexts:
- continuous-integration/drone/pr - ci/woodpecker/pr/lint
enforce_admins: null - ci/woodpecker/pr/test
- ci/woodpecker/pr/build-package
- ci/woodpecker/pr/build-container
- ci/woodpecker/pr/docs
enforce_admins: false
required_linear_history: true
restrictions: null restrictions: null

2
.gitignore vendored
View File

@ -106,7 +106,9 @@ pip-wheel-metadata
docs/themes/ docs/themes/
docs/public/ docs/public/
resources/_gen/ resources/_gen/
.hugo_build.lock
# Misc # Misc
.dockertidy* .dockertidy*
CHANGELOG.md CHANGELOG.md
.ruff_cache

47
.gitsv/config.yml Normal file
View File

@ -0,0 +1,47 @@
---
version: "1.1"
versioning:
update-major: []
update-minor: [feat]
update-patch: [fix, perf, refactor, chore, test, ci, docs]
tag:
pattern: "v%d.%d.%d"
release-notes:
sections:
- name: Features
commit-types: [feat]
section-type: commits
- name: Bug Fixes
commit-types: [fix]
section-type: commits
- name: Performance Improvements
commit-types: [perf]
section-type: commits
- name: Code Refactoring
commit-types: [refactor]
section-type: commits
- name: Others
commit-types: [chore]
section-type: commits
- name: Testing
commit-types: [test]
section-type: commits
- name: CI Pipeline
commit-types: [ci]
section-type: commits
- name: Documentation
commit-types: [docs]
section-type: commits
- name: Breaking Changes
section-type: breaking-changes
commit-message:
footer:
issue:
key: issue
add-value-prefix: "#"
issue:
regex: "#?[0-9]+"

1
.lycheeignore Normal file
View File

@ -0,0 +1 @@
https://hub.docker.com/r/thegeeklab/*

View File

@ -0,0 +1,73 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: build
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: dryrun
image: quay.io/thegeeklab/wp-docker-buildx:4
settings:
containerfile: Containerfile.multiarch
dry_run: true
platforms:
- linux/amd64
- linux/arm64
provenance: false
repo: ${CI_REPO}
when:
- event: [pull_request]
- name: publish-dockerhub
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile.multiarch
password:
from_secret: docker_password
platforms:
- linux/amd64
- linux/arm64
provenance: false
repo: ${CI_REPO}
username:
from_secret: docker_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- name: publish-quay
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile.multiarch
password:
from_secret: quay_password
platforms:
- linux/amd64
- linux/arm64
provenance: false
registry: quay.io
repo: quay.io/${CI_REPO}
username:
from_secret: quay_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
depends_on:
- lint
- test

View File

@ -0,0 +1,56 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: build
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: checksum
image: quay.io/thegeeklab/alpine-tools
commands:
- cd dist/ && sha256sum * > ../sha256sum.txt
- name: changelog
image: quay.io/thegeeklab/git-sv
commands:
- git sv current-version
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
- cat CHANGELOG.md
- name: publish-github
image: docker.io/plugins/github-release
settings:
api_key:
from_secret: github_token
files:
- dist/*
- sha256sum.txt
note: CHANGELOG.md
overwrite: true
title: ${CI_COMMIT_TAG}
when:
- event: [tag]
- name: publish-pypi
image: docker.io/library/python:3.12
secrets:
- source: pypi_password
target: POETRY_HTTP_BASIC_PYPI_PASSWORD
- source: pypi_username
target: POETRY_HTTP_BASIC_PYPI_USERNAME
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry publish -n
when:
- event: [tag]
depends_on:
- lint
- test

100
.woodpecker/docs.yml Normal file
View File

@ -0,0 +1,100 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: assets
image: quay.io/thegeeklab/alpine-tools
commands:
- make doc
- name: markdownlint
image: quay.io/thegeeklab/markdownlint-cli
group: test
commands:
- markdownlint 'README.md' 'CONTRIBUTING.md'
- name: spellcheck
image: quay.io/thegeeklab/alpine-tools
group: test
commands:
- spellchecker --files 'docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls
environment:
FORCE_COLOR: "true"
- name: link-validation
image: docker.io/lycheeverse/lychee
group: test
commands:
- lychee --no-progress --format detailed docs/content README.md
- name: build
image: quay.io/thegeeklab/hugo:0.125.7
commands:
- hugo --panicOnWarning -s docs/
- name: beautify
image: quay.io/thegeeklab/alpine-tools
commands:
- html-beautify -r -f 'docs/public/**/*.html'
environment:
FORCE_COLOR: "true"
- name: publish
image: quay.io/thegeeklab/wp-s3-action
settings:
access_key:
from_secret: s3_access_key
bucket: geekdocs
delete: true
endpoint:
from_secret: s3_endpoint
path_style: true
secret_key:
from_secret: s3_secret_access_key
source: docs/public/
strip_prefix: docs/public/
target: /${CI_REPO_NAME}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success, failure]
- name: pushrm-dockerhub
image: docker.io/chko/docker-pushrm:1
secrets:
- source: docker_password
target: DOCKER_PASS
- source: docker_username
target: DOCKER_USER
environment:
PUSHRM_FILE: README.md
PUSHRM_SHORT: Keep docker hosts tidy
PUSHRM_TARGET: ${CI_REPO}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
- name: pushrm-quay
image: docker.io/chko/docker-pushrm:1
secrets:
- source: quay_token
target: APIKEY__QUAY_IO
environment:
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/${CI_REPO}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
depends_on:
- build-package
- build-container

25
.woodpecker/lint.yml Normal file
View File

@ -0,0 +1,25 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: check-format
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry run ruff format --check --diff ./${CI_REPO_NAME//-/}
environment:
PY_COLORS: "1"
- name: check-coding
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry run ruff check ./${CI_REPO_NAME//-/}
environment:
PY_COLORS: "1"

26
.woodpecker/notify.yml Normal file
View File

@ -0,0 +1,26 @@
---
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
runs_on: [success, failure]
steps:
- name: matrix
image: quay.io/thegeeklab/wp-matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
roomid:
from_secret: matrix_roomid
username:
from_secret: matrix_username
when:
- status: [success, failure]
depends_on:
- docs

39
.woodpecker/test.yml Normal file
View File

@ -0,0 +1,39 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
variables:
- &pytest_base
group: pytest
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry run pytest --cov-append
- poetry version
- poetry run ${CI_REPO_NAME} --help
environment:
PY_COLORS: "1"
steps:
- name: python-312
image: docker.io/library/python:3.12
<<: *pytest_base
- name: python-311
image: docker.io/library/python:3.11
<<: *pytest_base
- name: python-310
image: docker.io/library/python:3.10
<<: *pytest_base
- name: python-39
image: docker.io/library/python:3.9
<<: *pytest_base
- name: python-38
image: docker.io/library/python:3.8
<<: *pytest_base

View File

@ -3,7 +3,7 @@
## Security ## Security
If you think you have found a **security issue**, please do not mention it in this repository. If you think you have found a **security issue**, please do not mention it in this repository.
Instead, send an email to security@thegeeklab.de with as many details as possible so it can be handled confidential. Instead, send an email to `security@thegeeklab.de` with as many details as possible so it can be handled confidential.
## Bug Reports and Feature Requests ## Bug Reports and Feature Requests

View File

@ -1,4 +1,4 @@
FROM python:3.10-alpine@sha256:c13a6cf74fb452f9eab9f1a521f3ff6d056d5bc51b1a29bfe4758fcb00135394 FROM python:3.12-alpine@sha256:5365725a6cd59b72a927628fdda9965103e3dc671676c89ef3ed8b8b0e22e812
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>" LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>" LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
@ -12,8 +12,7 @@ ENV TZ=UTC
ADD dist/docker_tidy-*.whl / ADD dist/docker_tidy-*.whl /
RUN \ RUN apk --update add --virtual .build-deps build-base libffi-dev openssl-dev && \
apk --update add --virtual .build-deps gcc g++ && \
pip install --upgrade --no-cache-dir pip && \ pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir $(find / -name "docker_tidy-*.whl") && \ pip install --no-cache-dir $(find / -name "docker_tidy-*.whl") && \
apk del .build-deps && \ apk del .build-deps && \

View File

@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier same "printed page" as the copyright notice for easier
identification within third-party archives. identification within third-party archives.
Copyright 2021 Robert Kaussow <mail@thegeeklab.de> Copyright 2022 Robert Kaussow <mail@thegeeklab.de>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
# renovate: datasource=github-releases depName=thegeeklab/hugo-geekdoc # renovate: datasource=github-releases depName=thegeeklab/hugo-geekdoc
THEME_VERSION := v0.19.2 THEME_VERSION := v0.45.0
THEME := hugo-geekdoc THEME := hugo-geekdoc
BASEDIR := docs BASEDIR := docs
THEMEDIR := $(BASEDIR)/themes THEMEDIR := $(BASEDIR)/themes
@ -17,4 +17,4 @@ doc-assets:
.PHONY: clean .PHONY: clean
clean: clean:
rm -rf $(THEMEDIR) && \ rm -rf $(THEMEDIR)

View File

@ -2,12 +2,11 @@
Keep docker hosts tidy Keep docker hosts tidy
[![Build Status](https://img.shields.io/drone/build/thegeeklab/docker-tidy?logo=drone&server=https%3A%2F%2Fdrone.thegeeklab.de)](https://drone.thegeeklab.de/thegeeklab/docker-tidy) [![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/docker-tidy/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/docker-tidy)
[![Docker Hub](https://img.shields.io/badge/docker-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/docker-tidy) [![Docker Hub](https://img.shields.io/badge/docker-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/docker-tidy)
[![Python Version](https://img.shields.io/pypi/pyversions/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![Python Version](https://img.shields.io/pypi/pyversions/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![PyPI Status](https://img.shields.io/pypi/status/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![PyPI Status](https://img.shields.io/pypi/status/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![PyPI Release](https://img.shields.io/pypi/v/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![PyPI Release](https://img.shields.io/pypi/v/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![Codecov](https://img.shields.io/codecov/c/github/thegeeklab/docker-tidy)](https://codecov.io/gh/thegeeklab/docker-tidy)
[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/graphs/contributors) [![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/graphs/contributors)
[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/docker-tidy) [![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/docker-tidy)
[![License: Apache-2.0](https://img.shields.io/github/license/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/blob/main/LICENSE) [![License: Apache-2.0](https://img.shields.io/github/license/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/blob/main/LICENSE)
@ -18,7 +17,7 @@ You can find the full documentation at [https://docker-tidy.geekdocs.de](https:/
## Contributors ## Contributors
Special thanks goes to all [contributors](https://github.com/thegeeklab/docker-tidy/graphs/contributors). If you would like to contribute, Special thanks to all [contributors](https://github.com/thegeeklab/docker-tidy/graphs/contributors). If you would like to contribute,
please see the [instructions](https://github.com/thegeeklab/docker-tidy/blob/main/CONTRIBUTING.md). please see the [instructions](https://github.com/thegeeklab/docker-tidy/blob/main/CONTRIBUTING.md).
## License ## License

View File

@ -1,27 +0,0 @@
FROM arm32v7/python:3.10-alpine@sha256:265f910efda896cd5b77fa115971ce29fc57bc0cb5ebc626358fcdd6d92ffac2
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.title="docker-tidy"
LABEL org.opencontainers.image.url="https://docker-tidy.geekdocs.de/"
LABEL org.opencontainers.image.source="https://github.com/thegeeklab/docker-tidy"
LABEL org.opencontainers.image.documentation="https://docker-tidy.geekdocs.de/"
ENV PY_COLORS=1
ENV TZ=UTC
ADD dist/docker_tidy-*.whl /
RUN \
apk --update add --virtual .build-deps gcc g++ && \
pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir $(find / -name "docker_tidy-*.whl") && \
apk del .build-deps && \
rm -f docker_tidy-*.whl && \
rm -rf /var/cache/apk/* && \
rm -rf /root/.cache/ && \
rm -rf /tmp/*
USER root
CMD []
ENTRYPOINT ["/usr/local/bin/docker-tidy", "gc"]

View File

@ -1,27 +0,0 @@
FROM arm64v8/python:3.10-alpine@sha256:31a946d193794be6fb888864b77118f4a0b70070ffb2fa5166a9f8f016884446
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.title="docker-tidy"
LABEL org.opencontainers.image.url="https://docker-tidy.geekdocs.de/"
LABEL org.opencontainers.image.source="https://github.com/thegeeklab/docker-tidy"
LABEL org.opencontainers.image.documentation="https://docker-tidy.geekdocs.de/"
ENV PY_COLORS=1
ENV TZ=UTC
ADD dist/docker_tidy-*.whl /
RUN \
apk --update add --virtual .build-deps gcc g++ && \
pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir $(find / -name "docker_tidy-*.whl") && \
apk del .build-deps && \
rm -f docker_tidy-*.whl && \
rm -rf /var/cache/apk/* && \
rm -rf /root/.cache/ && \
rm -rf /tmp/*
USER root
CMD []
ENTRYPOINT ["/usr/local/bin/docker-tidy", "gc"]

View File

@ -1,24 +0,0 @@
image: quay.io/thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
- image: quay.io/thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64
platform:
architecture: amd64
os: linux
- image: quay.io/thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64
platform:
architecture: arm64
os: linux
variant: v8
- image: quay.io/thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm
platform:
architecture: arm
os: linux
variant: v7

View File

@ -1,24 +0,0 @@
image: thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
- image: thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64
platform:
architecture: amd64
os: linux
- image: thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64
platform:
architecture: arm64
os: linux
variant: v8
- image: thegeeklab/docker-tidy:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm
platform:
architecture: arm
os: linux
variant: v7

View File

@ -2,10 +2,10 @@
"""Stop long running docker iamges.""" """Stop long running docker iamges."""
import dateutil.parser import dateutil.parser
import docker
import docker.errors import docker.errors
import requests.exceptions import requests.exceptions
import docker
from dockertidy.config import SingleConfig from dockertidy.config import SingleConfig
from dockertidy.logger import SingleLog from dockertidy.logger import SingleLog
from dockertidy.parser import timedelta from dockertidy.parser import timedelta
@ -45,9 +45,7 @@ class AutoStop:
) or (not prefix and self._has_been_running_since(container, max_run_time)): ) or (not prefix and self._has_been_running_since(container, max_run_time)):
self.logger.info( self.logger.info(
"Stopping container {id} {name}: running since {started}".format( "Stopping container {id} {name}: running since {started}".format(
id=container["Id"][:16], id=container["Id"][:16], name=name, started=container["State"]["StartedAt"]
name=name,
started=container["State"]["StartedAt"]
) )
) )
@ -58,12 +56,11 @@ class AutoStop:
try: try:
client.stop(cid) client.stop(cid)
except requests.exceptions.Timeout as e: except requests.exceptions.Timeout as e:
self.logger.warn("Failed to stop container {id}: {msg}".format(id=cid, msg=str(e))) self.logger.warning(f"Failed to stop container {cid}: {e!s}")
except docker.errors.APIError as e: except docker.errors.APIError as e:
self.logger.warn("Error stopping {id}: {msg}".format(id=cid, msg=str(e))) self.logger.warning(f"Error stopping {cid}: {e!s}")
def _build_container_matcher(self, prefixes): def _build_container_matcher(self, prefixes):
def matcher(name): def matcher(name):
return any(name.startswith(prefix) for prefix in prefixes) return any(name.startswith(prefix) for prefix in prefixes)
@ -89,4 +86,4 @@ class AutoStop:
self.stop_containers() self.stop_containers()
if not config["stop"]["max_run_time"]: if not config["stop"]["max_run_time"]:
self.logger.warn("Skipped, no arguments given") self.logger.warning("Skipped, no arguments given")

View File

@ -36,7 +36,7 @@ class DockerTidy:
action="store_true", action="store_true",
default=None, default=None,
dest="dry_run", dest="dry_run",
help="only log actions, don't stop anything" help="only log actions, don't stop anything",
) )
parser.add_argument( parser.add_argument(
"-t", "-t",
@ -44,7 +44,7 @@ class DockerTidy:
type=int, type=int,
dest="http_timeout", dest="http_timeout",
metavar="HTTP_TIMEOUT", metavar="HTTP_TIMEOUT",
help="HTTP timeout in seconds for making docker API calls" help="HTTP timeout in seconds for making docker API calls",
) )
parser.add_argument( parser.add_argument(
"-v", dest="logging.level", action="append_const", const=-1, help="increase log level" "-v", dest="logging.level", action="append_const", const=-1, help="increase log level"
@ -52,9 +52,7 @@ class DockerTidy:
parser.add_argument( parser.add_argument(
"-q", dest="logging.level", action="append_const", const=1, help="decrease log level" "-q", dest="logging.level", action="append_const", const=1, help="decrease log level"
) )
parser.add_argument( parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
"--version", action="version", version="%(prog)s {}".format(__version__)
)
subparsers = parser.add_subparsers(dest="command", help="sub-command help") subparsers = parser.add_subparsers(dest="command", help="sub-command help")
subparsers.required = True subparsers.required = True
@ -66,7 +64,7 @@ class DockerTidy:
dest="gc.max_container_age", dest="gc.max_container_age",
metavar="MAX_CONTAINER_AGE", metavar="MAX_CONTAINER_AGE",
help="maximum age for a container, containers older than this age " help="maximum age for a container, containers older than this age "
"will be removed (dateparser value)" "will be removed (dateparser value)",
) )
parser_gc.add_argument( parser_gc.add_argument(
"--max-image-age", "--max-image-age",
@ -74,13 +72,13 @@ class DockerTidy:
dest="gc.max_image_age", dest="gc.max_image_age",
metavar="MAX_IMAGE_AGE", metavar="MAX_IMAGE_AGE",
help="maxium age for an image, images older than this age will be " help="maxium age for an image, images older than this age will be "
"removed (dateparser value)" "removed (dateparser value)",
) )
parser_gc.add_argument( parser_gc.add_argument(
"--dangling-volumes", "--dangling-volumes",
action="store_true", action="store_true",
dest="gc.dangling_volumes", dest="gc.dangling_volumes",
help="dangling volumes will be removed" help="dangling volumes will be removed",
) )
parser_gc.add_argument( parser_gc.add_argument(
"--exclude-image", "--exclude-image",
@ -88,7 +86,7 @@ class DockerTidy:
type=str, type=str,
dest="gc.exclude_images", dest="gc.exclude_images",
metavar="EXCLUDE_IMAGE", metavar="EXCLUDE_IMAGE",
help="never remove images with this tag" help="never remove images with this tag",
) )
parser_gc.add_argument( parser_gc.add_argument(
"--exclude-container-label", "--exclude-container-label",
@ -96,8 +94,7 @@ class DockerTidy:
type=str, type=str,
dest="gc.exclude_container_labels", dest="gc.exclude_container_labels",
metavar="EXCLUDE_CONTAINER_LABEL", metavar="EXCLUDE_CONTAINER_LABEL",
help="never remove containers with this label key " help="never remove containers with this label key or label key=value",
"or label key=value"
) )
parser_stop = subparsers.add_parser( parser_stop = subparsers.add_parser(
@ -108,7 +105,7 @@ class DockerTidy:
type=timedelta_validator, type=timedelta_validator,
dest="stop.max_run_time", dest="stop.max_run_time",
metavar="MAX_RUN_TIME", metavar="MAX_RUN_TIME",
help="maximum time a container is allows to run (dateparser value)" help="maximum time a container is allows to run (dateparser value)",
) )
parser_stop.add_argument( parser_stop.add_argument(
"--prefix", "--prefix",
@ -116,7 +113,7 @@ class DockerTidy:
type=str, type=str,
dest="stop.prefix", dest="stop.prefix",
metavar="PREFIX", metavar="PREFIX",
help="only stop containers which match one of the prefix" help="only stop containers which match one of the prefix",
) )
return parser.parse_args().__dict__ return parser.parse_args().__dict__
@ -130,10 +127,10 @@ class DockerTidy:
try: try:
self.log.set_level(config.config["logging"]["level"]) self.log.set_level(config.config["logging"]["level"])
except ValueError as e: except ValueError as e:
self.log.sysexit_with_message("Can not set log level.\n{}".format(str(e))) self.log.sysexit_with_message(f"Can not set log level.\n{e!s}")
self.logger.info("Using config file {}".format(config.config_file)) self.logger.info(f"Using config file {config.config_file}")
self.logger.debug("Config dump: {}".format(config.config)) self.logger.debug(f"Config dump: {config.config}")
return config return config

View File

@ -13,15 +13,15 @@ from jsonschema._utils import format_as_index
import dockertidy.exception import dockertidy.exception
import dockertidy.parser import dockertidy.parser
from dockertidy.parser import env from dockertidy.parser import env
from dockertidy.utils import Singleton from dockertidy.utils import Singleton, dict_intersect
from dockertidy.utils import dict_intersect
config_dir = AppDirs("docker-tidy").user_config_dir config_dir = AppDirs("docker-tidy").user_config_dir
default_config_file = os.path.join(config_dir, "config.yml") default_config_file = os.path.join(config_dir, "config.yml")
class Config(): class Config:
"""Create an object with all necessary settings. """
Create an object with all necessary settings.
Settings are loade from multiple locations in defined order (last wins): Settings are loade from multiple locations in defined order (last wins):
- default settings defined by `self._get_defaults()` - default settings defined by `self._get_defaults()`
@ -36,77 +36,77 @@ class Config():
"config_file": { "config_file": {
"default": "", "default": "",
"env": "CONFIG_FILE", "env": "CONFIG_FILE",
"type": environs.Env().str "type": environs.Env().str,
}, },
"dry_run": { "dry_run": {
"default": False, "default": False,
"env": "DRY_RUN", "env": "DRY_RUN",
"file": True, "file": True,
"type": environs.Env().bool "type": environs.Env().bool,
}, },
"http_timeout": { "http_timeout": {
"default": 60, "default": 60,
"env": "HTTP_TIMEOUT", "env": "HTTP_TIMEOUT",
"file": True, "file": True,
"type": environs.Env().int "type": environs.Env().int,
}, },
"logging.level": { "logging.level": {
"default": "WARNING", "default": "WARNING",
"env": "LOG_LEVEL", "env": "LOG_LEVEL",
"file": True, "file": True,
"type": environs.Env().str "type": environs.Env().str,
}, },
"logging.json": { "logging.json": {
"default": False, "default": False,
"env": "LOG_JSON", "env": "LOG_JSON",
"file": True, "file": True,
"type": environs.Env().bool "type": environs.Env().bool,
}, },
"gc.max_container_age": { "gc.max_container_age": {
"default": "", "default": "",
"env": "GC_MAX_CONTAINER_AGE", "env": "GC_MAX_CONTAINER_AGE",
"file": True, "file": True,
"type": env.timedelta_validator "type": env.timedelta_validator,
}, },
"gc.max_image_age": { "gc.max_image_age": {
"default": "", "default": "",
"env": "GC_MAX_IMAGE_AGE", "env": "GC_MAX_IMAGE_AGE",
"file": True, "file": True,
"type": env.timedelta_validator "type": env.timedelta_validator,
}, },
"gc.dangling_volumes": { "gc.dangling_volumes": {
"default": False, "default": False,
"env": "GC_DANGLING_VOLUMES", "env": "GC_DANGLING_VOLUMES",
"file": True, "file": True,
"type": environs.Env().bool "type": environs.Env().bool,
}, },
"gc.exclude_images": { "gc.exclude_images": {
"default": [], "default": [],
"env": "GC_EXCLUDE_IMAGES", "env": "GC_EXCLUDE_IMAGES",
"file": True, "file": True,
"type": environs.Env().list "type": environs.Env().list,
}, },
"gc.exclude_container_labels": { "gc.exclude_container_labels": {
"default": [], "default": [],
"env": "GC_EXCLUDE_CONTAINER_LABELS", "env": "GC_EXCLUDE_CONTAINER_LABELS",
"file": True, "file": True,
"type": environs.Env().list "type": environs.Env().list,
}, },
"stop.max_run_time": { "stop.max_run_time": {
"default": "", "default": "",
"env": "STOP_MAX_RUN_TIME", "env": "STOP_MAX_RUN_TIME",
"file": True, "file": True,
"type": env.timedelta_validator "type": env.timedelta_validator,
}, },
"stop.prefix": { "stop.prefix": {
"default": [], "default": [],
"env": "STOP_PREFIX", "env": "STOP_PREFIX",
"file": True, "file": True,
"type": environs.Env().list "type": environs.Env().list,
}, },
} }
def __init__(self, args={}): def __init__(self, args=None):
""" """
Initialize a new settings class. Initialize a new settings class.
@ -115,7 +115,10 @@ class Config():
:returns: None :returns: None
""" """
self._args = args if args is None:
self._args = {}
else:
self._args = args
self._schema = None self._schema = None
self.config_file = default_config_file self.config_file = default_config_file
self.config = None self.config = None
@ -159,12 +162,12 @@ class Config():
value = item["type"](envname) value = item["type"](envname)
normalized = self._add_dict_branch(normalized, key.split("."), value) normalized = self._add_dict_branch(normalized, key.split("."), value)
except environs.EnvError as e: except environs.EnvError as e:
if '"{}" not set'.format(envname) in str(e): if f'"{envname}" not set' in str(e):
pass pass
else: else:
raise dockertidy.exception.ConfigError( raise dockertidy.exception.ConfigError(
"Unable to read environment variable", str(e) "Unable to read environment variable", str(e)
) ) from e
return normalized return normalized
@ -188,15 +191,15 @@ class Config():
source_files.append(os.path.join(os.getcwd(), ".dockertidy.yaml")) source_files.append(os.path.join(os.getcwd(), ".dockertidy.yaml"))
for config in [i for i in source_files if os.path.exists(i)]: for config in [i for i in source_files if os.path.exists(i)]:
with open(config, "r", encoding="utf8") as stream: with open(config, encoding="utf8") as stream:
s = stream.read() s = stream.read()
try: try:
normalized = ruamel.yaml.safe_load(s) normalized = ruamel.yaml.YAML(typ="safe", pure=True).load(s)
except (ruamel.yaml.composer.ComposerError, ruamel.yaml.scanner.ScannerError) as e: except (ruamel.yaml.composer.ComposerError, ruamel.yaml.scanner.ScannerError) as e:
message = "{} {}".format(e.context, e.problem) message = f"{e.context} {e.problem}"
raise dockertidy.exception.ConfigError( raise dockertidy.exception.ConfigError(
"Unable to read config file {}".format(config), message f"Unable to read config file {config}", message
) ) from e
if self._validate(normalized): if self._validate(normalized):
anyconfig.merge(files_raw, normalized, ac_merge=anyconfig.MS_DICTS) anyconfig.merge(files_raw, normalized, ac_merge=anyconfig.MS_DICTS)
@ -224,27 +227,26 @@ class Config():
if not os.path.isabs(path): if not os.path.isabs(path):
base = os.path.join(os.getcwd(), path) base = os.path.join(os.getcwd(), path)
return os.path.abspath(os.path.expanduser(os.path.expandvars(base))) return os.path.abspath(os.path.expanduser(os.path.expandvars(base)))
else:
return path return path
def _validate(self, config): def _validate(self, config):
try: try:
anyconfig.validate(config, self.schema, ac_schema_safe=False) anyconfig.validate(config, self.schema, ac_schema_safe=False)
except jsonschema.exceptions.ValidationError as e: except jsonschema.exceptions.ValidationError as e:
schema_error = "Failed validating '{validator}' in schema{schema}\n{message}".format( schema = format_as_index(list(e.relative_schema_path)[:-1])
validator=e.validator, schema_error = f"Failed validating '{e.validator}' in schema {schema}\n{e.message}"
schema=format_as_index(list(e.relative_schema_path)[:-1]), raise dockertidy.exception.ConfigError("Configuration error", schema_error) from e
message=e.message
)
raise dockertidy.exception.ConfigError("Configuration error", schema_error)
return True return True
def _add_dict_branch(self, tree, vector, value): def _add_dict_branch(self, tree, vector, value):
key = vector[0] key = vector[0]
tree[key] = value \ tree[key] = (
if len(vector) == 1 \ value
else self._add_dict_branch(tree[key] if key in tree else {}, vector[1:], value) if len(vector) == 1
else self._add_dict_branch(tree.get(key, {}), vector[1:], value)
)
return tree return tree

View File

@ -6,7 +6,7 @@ class TidyError(Exception):
"""Generic exception class for docker-tidy.""" """Generic exception class for docker-tidy."""
def __init__(self, msg, original_exception=""): def __init__(self, msg, original_exception=""):
super(TidyError, self).__init__("{msg}\n{org}".format(msg=msg, org=original_exception)) super().__init__(f"{msg}\n{original_exception}")
self.original_exception = original_exception self.original_exception = original_exception

View File

@ -5,10 +5,10 @@ import fnmatch
from collections import namedtuple from collections import namedtuple
import dateutil.parser import dateutil.parser
import docker
import docker.errors import docker.errors
import requests.exceptions import requests.exceptions
import docker
from dockertidy.config import SingleConfig from dockertidy.config import SingleConfig
from dockertidy.logger import SingleLog from dockertidy.logger import SingleLog
from dockertidy.parser import timedelta from dockertidy.parser import timedelta
@ -55,7 +55,8 @@ class GarbageCollector:
self.logger.info( self.logger.info(
"Removing container {} {} {}".format( "Removing container {} {} {}".format(
container["Id"][:16], container["Id"][:16],
container.get("Name", "").lstrip("/"), container["State"]["FinishedAt"] container.get("Name", "").lstrip("/"),
container["State"]["FinishedAt"],
) )
) )
@ -163,7 +164,6 @@ class GarbageCollector:
self._remove_image(image_summary, timedelta(config["gc"]["max_image_age"])) self._remove_image(image_summary, timedelta(config["gc"]["max_image_age"]))
def _filter_excluded_images(self, images, exclude_set): def _filter_excluded_images(self, images, exclude_set):
def include_image(image_summary): def include_image(image_summary):
image_tags = image_summary.get("RepoTags") image_tags = image_summary.get("RepoTags")
if self._no_image_tags(image_tags): if self._no_image_tags(image_tags):
@ -176,12 +176,11 @@ class GarbageCollector:
return filter(include_image, images) return filter(include_image, images)
def _filter_images_in_use(self, images, image_tags_in_use): def _filter_images_in_use(self, images, image_tags_in_use):
def get_tag_set(image_summary): def get_tag_set(image_summary):
image_tags = image_summary.get("RepoTags") image_tags = image_summary.get("RepoTags")
if self._no_image_tags(image_tags): if self._no_image_tags(image_tags):
# The repr of the image Id used by client.containers() # The repr of the image Id used by client.containers()
return set(["{id}:latest".format(id=image_summary["Id"][:12])]) return {"{id}:latest".format(id=image_summary["Id"][:12])}
return set(image_tags) return set(image_tags)
def image_not_in_use(image_summary): def image_not_in_use(image_summary):
@ -190,7 +189,6 @@ class GarbageCollector:
return filter(image_not_in_use, images) return filter(image_not_in_use, images)
def _filter_images_in_use_by_id(self, images, image_ids_in_use): def _filter_images_in_use_by_id(self, images, image_ids_in_use):
def image_not_in_use(image_summary): def image_not_in_use(image_summary):
return image_summary["Id"] not in image_ids_in_use return image_summary["Id"] not in image_ids_in_use
@ -210,9 +208,7 @@ class GarbageCollector:
if not image or not self._is_image_old(image, min_date): if not image or not self._is_image_old(image, min_date):
return return
self.logger.info( self.logger.info(f"Removing image {self._format_image(image, image_summary)}")
"Removing image {name}".format(name=self._format_image(image, image_summary))
)
if config["dry_run"]: if config["dry_run"]:
return return
@ -251,22 +247,13 @@ class GarbageCollector:
try: try:
return func(**kwargs) return func(**kwargs)
except requests.exceptions.Timeout as e: except requests.exceptions.Timeout as e:
params = ",".join("%s=%s" % item for item in kwargs.items()) # noqa params = ",".join("%s=%s" % item for item in kwargs.items()) # noqa:UP031
self.logger.warn( self.logger.warning(f"Failed to call {func.__name__} {params} {e!s}")
"Failed to call {name} {params} {msg}".format(
name=func.__name__, params=params, msg=str(e)
)
)
except docker.errors.APIError as e: except docker.errors.APIError as e:
params = ",".join("%s=%s" % item for item in kwargs.items()) # noqa params = ",".join("%s=%s" % item for item in kwargs.items()) # noqa:UP031
self.logger.warn( self.logger.warning(f"Error calling {func.__name__} {params} {e!s}")
"Error calling {name} {params} {msg}".format(
name=func.__name__, params=params, msg=str(e)
)
)
def _format_image(self, image, image_summary): def _format_image(self, image, image_summary):
def get_tags(): def get_tags():
tags = image_summary.get("RepoTags") tags = image_summary.get("RepoTags")
if not tags or tags == ["<none>:<none>"]: if not tags or tags == ["<none>:<none>"]:
@ -277,12 +264,11 @@ class GarbageCollector:
def _build_exclude_set(self): def _build_exclude_set(self):
config = self.config.config config = self.config.config
exclude_set = set(config["gc"]["exclude_images"])
def is_image_tag(line): def is_image_tag(line):
return line and not line.startswith("#") return line and not line.startswith("#")
return exclude_set return set(config["gc"]["exclude_images"])
def _format_exclude_labels(self): def _format_exclude_labels(self):
config = self.config.config config = self.config.config
@ -291,10 +277,7 @@ class GarbageCollector:
for exclude_label_arg in config["gc"]["exclude_container_labels"]: for exclude_label_arg in config["gc"]["exclude_container_labels"]:
split_exclude_label = exclude_label_arg.split("=", 1) split_exclude_label = exclude_label_arg.split("=", 1)
exclude_label_key = split_exclude_label[0] exclude_label_key = split_exclude_label[0]
if len(split_exclude_label) == 2: exclude_label_value = split_exclude_label[1] if len(split_exclude_label) == 2 else None
exclude_label_value = split_exclude_label[1]
else:
exclude_label_value = None
exclude_labels.append( exclude_labels.append(
self.ExcludeLabel( self.ExcludeLabel(
key=exclude_label_key, key=exclude_label_key,
@ -308,7 +291,7 @@ class GarbageCollector:
try: try:
return docker.APIClient(version="auto", timeout=config["http_timeout"]) return docker.APIClient(version="auto", timeout=config["http_timeout"])
except docker.errors.DockerException as e: except docker.errors.DockerException as e:
self.log.sysexit_with_message("Can't create docker client\n{}".format(e)) self.log.sysexit_with_message(f"Can't create docker client\n{e}")
def run(self): def run(self):
"""Garbage collector main method.""" """Garbage collector main method."""
@ -327,7 +310,8 @@ class GarbageCollector:
self.cleanup_volumes() self.cleanup_volumes()
if ( if (
not config["gc"]["max_container_age"] and not config["gc"]["max_image_age"] not config["gc"]["max_container_age"]
and not config["gc"]["max_image_age"]
and not config["gc"]["dangling_volumes"] and not config["gc"]["dangling_volumes"]
): ):
self.logger.warn("Skipped, no arguments given") self.logger.ing("Skipped, no arguments given")

View File

@ -8,8 +8,7 @@ import sys
import colorama import colorama
from pythonjsonlogger import jsonlogger from pythonjsonlogger import jsonlogger
from dockertidy.utils import Singleton from dockertidy.utils import Singleton, to_bool
from dockertidy.utils import to_bool
CONSOLE_FORMAT = "{}[%(levelname)s]{} %(message)s" CONSOLE_FORMAT = "{}[%(levelname)s]{} %(message)s"
JSON_FORMAT = "%(asctime)s %(levelname)s %(message)s" JSON_FORMAT = "%(asctime)s %(levelname)s %(message)s"
@ -26,7 +25,7 @@ def _should_do_markup():
colorama.init(autoreset=True, strip=not _should_do_markup()) colorama.init(autoreset=True, strip=not _should_do_markup())
class LogFilter(object): class LogFilter:
"""A custom log filter which excludes log messages above the logged level.""" """A custom log filter which excludes log messages above the logged level."""
def __init__(self, level): def __init__(self, level):
@ -47,15 +46,15 @@ class LogFilter(object):
class MultilineFormatter(logging.Formatter): class MultilineFormatter(logging.Formatter):
"""Logging Formatter to reset color after newline characters.""" """Logging Formatter to reset color after newline characters."""
def format(self, record): # noqa def format(self, record):
record.msg = record.msg.replace("\n", "\n{}... ".format(colorama.Style.RESET_ALL)) record.msg = record.msg.replace("\n", f"\n{colorama.Style.RESET_ALL}... ")
return logging.Formatter.format(self, record) return logging.Formatter.format(self, record)
class MultilineJsonFormatter(jsonlogger.JsonFormatter): class MultilineJsonFormatter(jsonlogger.JsonFormatter):
"""Logging Formatter to remove newline characters.""" """Logging Formatter to remove newline characters."""
def format(self, record): # noqa def format(self, record):
record.msg = record.msg.replace("\n", " ") record.msg = record.msg.replace("\n", " ")
return jsonlogger.JsonFormatter.format(self, record) return jsonlogger.JsonFormatter.format(self, record)
@ -63,11 +62,11 @@ class MultilineJsonFormatter(jsonlogger.JsonFormatter):
class Log: class Log:
"""Base logging object.""" """Base logging object."""
def __init__(self, level=logging.WARN, name="dockertidy", json=False): def __init__(self, level=logging.WARNING, name="dockertidy", json=False):
self.logger = logging.getLogger(name) self.logger = logging.getLogger(name)
self.logger.setLevel(level) self.logger.setLevel(level)
self.logger.addHandler(self._get_error_handler(json=json)) self.logger.addHandler(self._get_error_handler(json=json))
self.logger.addHandler(self._get_warn_handler(json=json)) self.logger.addHandler(self._get_warning_handler(json=json))
self.logger.addHandler(self._get_info_handler(json=json)) self.logger.addHandler(self._get_info_handler(json=json))
self.logger.addHandler(self._get_critical_handler(json=json)) self.logger.addHandler(self._get_critical_handler(json=json))
self.logger.addHandler(self._get_debug_handler(json=json)) self.logger.addHandler(self._get_debug_handler(json=json))
@ -88,13 +87,13 @@ class Log:
return handler return handler
def _get_warn_handler(self, json=False): def _get_warning_handler(self, json=False):
handler = logging.StreamHandler(sys.stdout) handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.WARN) handler.setLevel(logging.WARNING)
handler.addFilter(LogFilter(logging.WARN)) handler.addFilter(LogFilter(logging.WARNING))
handler.setFormatter( handler.setFormatter(
MultilineFormatter( MultilineFormatter(
self.warn(CONSOLE_FORMAT.format(colorama.Fore.YELLOW, colorama.Style.RESET_ALL)) self.warning(CONSOLE_FORMAT.format(colorama.Fore.YELLOW, colorama.Style.RESET_ALL))
) )
) )
@ -164,8 +163,8 @@ class Log:
"""Format error messages and return string.""" """Format error messages and return string."""
return msg return msg
def warn(self, msg): def warning(self, msg):
"""Format warn messages and return string.""" """Format warning messages and return string."""
return msg return msg
def info(self, msg): def info(self, msg):
@ -181,7 +180,7 @@ class Log:
:returns: string :returns: string
""" """
return "{}{}{}".format(color, msg, colorama.Style.RESET_ALL) return f"{color}{msg}{colorama.Style.RESET_ALL}"
def sysexit(self, code=1): def sysexit(self, code=1):
"""Exit running program with given exit code.""" """Exit running program with given exit code."""

View File

@ -10,7 +10,8 @@ env = environs.Env()
def timedelta_validator(value): def timedelta_validator(value):
"""Return the dateparser string for a time in the past. """
Return the dateparser string for a time in the past.
:param value: a string containing a time format supported by :param value: a string containing a time format supported by
mod:`dateparser` mod:`dateparser`
@ -19,13 +20,14 @@ def timedelta_validator(value):
return None return None
if not dateparser.parse(value): if not dateparser.parse(value):
raise ArgumentTypeError("'{}' is not a valid timedelta string".format(value)) raise ArgumentTypeError(f"'{value}' is not a valid timedelta string")
return value return value
def timedelta(value, dt_format=None): def timedelta(value, dt_format=None):
"""Return the :class:`datetime.datetime.DateTime` for a time in the past. """
Return the :class:`datetime.datetime.DateTime` for a time in the past.
:param value: a string containing a time format supported by :param value: a string containing a time format supported by
mod:`dateparser` mod:`dateparser`
@ -34,10 +36,7 @@ def timedelta(value, dt_format=None):
return None return None
timedelta = dateparser.parse( timedelta = dateparser.parse(
value, settings={ value, settings={"TO_TIMEZONE": "UTC", "RETURN_AS_TIMEZONE_AWARE": True}
"TO_TIMEZONE": "UTC",
"RETURN_AS_TIMEZONE_AWARE": True
}
) )
if dt_format: if dt_format:
@ -52,4 +51,4 @@ def timedelta_parser(value):
timedelta_validator(value) timedelta_validator(value)
return value return value
except ArgumentTypeError as e: except ArgumentTypeError as e:
raise environs.EnvError(e) raise environs.EnvError(e) from e

View File

@ -1,8 +1,8 @@
"""Test Autostop class.""" """Test Autostop class."""
import docker
import pytest import pytest
import docker
from dockertidy import autostop from dockertidy import autostop
pytest_plugins = [ pytest_plugins = [

View File

@ -1,9 +1,9 @@
"""Test GarbageCollector class.""" """Test GarbageCollector class."""
import docker
import pytest import pytest
import requests import requests
import docker
from dockertidy import garbage_collector from dockertidy import garbage_collector
pytest_plugins = [ pytest_plugins = [
@ -358,7 +358,7 @@ def test_api_call_with_timeout(mocker, gc):
gc._api_call(func, image=image) gc._api_call(func, image=image)
func.assert_called_once_with(image="abcd") func.assert_called_once_with(image="abcd")
mock_log.warn.assert_called_once_with("Failed to call remove_image " + "image=abcd msg") mock_log.warning.assert_called_once_with("Failed to call remove_image " + "image=abcd msg")
def test_api_call_with_api_error(mocker, gc): def test_api_call_with_api_error(mocker, gc):
@ -376,7 +376,7 @@ def test_api_call_with_api_error(mocker, gc):
gc._api_call(func, image=image) gc._api_call(func, image=image)
func.assert_called_once_with(image="abcd") func.assert_called_once_with(image="abcd")
mock_log.warn.assert_called_once_with( mock_log.warning.assert_called_once_with(
"Error calling remove_image image=abcd " "Error calling remove_image image=abcd "
'409 Client Error for dummy: Conflict ("failed")' '409 Client Error for dummy: Conflict ("failed")'
) )

View File

@ -1,7 +1,29 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Global utility methods and classes.""" """Global utility methods and classes."""
from distutils.util import strtobool
def strtobool(value):
"""Convert a string representation of truth to true or false."""
_map = {
"y": True,
"yes": True,
"t": True,
"true": True,
"on": True,
"1": True,
"n": False,
"no": False,
"f": False,
"false": False,
"off": False,
"0": False,
}
try:
return _map[str(value).lower()]
except KeyError as err:
raise ValueError(f'"{value}" is not a valid bool value') from err
def to_bool(string): def to_bool(string):
@ -20,8 +42,7 @@ class Singleton(type):
_instances = {} _instances = {}
def __call__(cls, *args, **kwargs): # noqa def __call__(cls, *args, **kwargs):
if cls not in cls._instances: if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls] return cls._instances[cls]

View File

@ -18,11 +18,16 @@ markup:
startLevel: 1 startLevel: 1
params: params:
description: >
Keep docker hosts tidy. docker-tidy is a tool to remove outdated and unused docker resources based on filters.
images:
- "socialmedia2.png"
geekdocMenuBundle: true geekdocMenuBundle: true
geekdocToC: 3 geekdocToC: 3
geekdocRepo: https://github.com/thegeeklab/docker-tidy geekdocRepo: https://github.com/thegeeklab/docker-tidy
geekdocEditPath: edit/main/docs/content geekdocEditPath: edit/main/docs
geekdocDateFormat: "Jan 2, 2006" geekdocDateFormat: "Jan 2, 2006"
geekdocSearch: true geekdocSearch: true

View File

@ -2,12 +2,11 @@
title: Documentation title: Documentation
--- ---
[![Build Status](https://img.shields.io/drone/build/thegeeklab/docker-tidy?logo=drone&server=https%3A%2F%2Fdrone.thegeeklab.de)](https://drone.thegeeklab.de/thegeeklab/docker-tidy) [![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/docker-tidy/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/docker-tidy)
[![Docker Hub](https://img.shields.io/badge/docker-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/docker-tidy) [![Docker Hub](https://img.shields.io/badge/docker-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/docker-tidy)
[![Python Version](https://img.shields.io/pypi/pyversions/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![Python Version](https://img.shields.io/pypi/pyversions/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![PyPI Status](https://img.shields.io/pypi/status/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![PyPI Status](https://img.shields.io/pypi/status/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![PyPI Release](https://img.shields.io/pypi/v/docker-tidy.svg)](https://pypi.org/project/docker-tidy/) [![PyPI Release](https://img.shields.io/pypi/v/docker-tidy.svg)](https://pypi.org/project/docker-tidy/)
[![Codecov](https://img.shields.io/codecov/c/github/thegeeklab/docker-tidy)](https://codecov.io/gh/thegeeklab/docker-tidy)
[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/graphs/contributors) [![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/graphs/contributors)
[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/docker-tidy) [![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/docker-tidy)
[![License: Apache-2.0](https://img.shields.io/github/license/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/blob/main/LICENSE) [![License: Apache-2.0](https://img.shields.io/github/license/thegeeklab/docker-tidy)](https://github.com/thegeeklab/docker-tidy/blob/main/LICENSE)

View File

@ -2,9 +2,11 @@
title: Setup title: Setup
--- ---
<!-- prettier-ignore-start -->
<!-- spellchecker-disable --> <!-- spellchecker-disable -->
{{< toc >}} {{< toc >}}
<!-- spellchecker-enable --> <!-- spellchecker-enable -->
<!-- prettier-ignore-end -->
## Pip ## Pip
@ -46,8 +48,7 @@ docker run \
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
<!-- markdownlint-disable --> <!-- markdownlint-disable -->
{{< hint info >}} {{< hint type=note >}}
**Info**\
Keep in mind, that you have to pass SELinux labels (:Z or :z) to your mount option if you are working on SELinux enabled systems. Keep in mind, that you have to pass SELinux labels (:Z or :z) to your mount option if you are working on SELinux enabled systems.
{{< /hint >}} {{< /hint >}}
<!-- markdownlint-restore --> <!-- markdownlint-restore -->

162
docs/static/socialmedia.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/static/socialmedia2.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

2225
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -10,10 +10,11 @@ classifiers = [
"Natural Language :: English", "Natural Language :: English",
"Operating System :: POSIX", "Operating System :: POSIX",
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: System :: Systems Administration", "Topic :: System :: Systems Administration",
"Topic :: Utilities", "Topic :: Utilities",
"Topic :: Software Development", "Topic :: Software Development",
@ -21,81 +22,57 @@ classifiers = [
description = "Keep docker hosts tidy." description = "Keep docker hosts tidy."
documentation = "https://docker-tidy.geekdocs.de/" documentation = "https://docker-tidy.geekdocs.de/"
homepage = "https://docker-tidy.geekdocs.de/" homepage = "https://docker-tidy.geekdocs.de/"
include = [ include = ["LICENSE"]
"LICENSE",
]
keywords = ["docker", "gc", "prune", "garbage"] keywords = ["docker", "gc", "prune", "garbage"]
license = "Apache-2.0" license = "Apache-2.0"
name = "docker-tidy" name = "docker-tidy"
packages = [ packages = [{ include = "dockertidy" }]
{include = "dockertidy"},
]
readme = "README.md" readme = "README.md"
repository = "https://github.com/thegeeklab/docker-tidy/" repository = "https://github.com/thegeeklab/docker-tidy/"
version = "0.0.0" version = "0.0.0"
[tool.poetry.dependencies] [tool.poetry.dependencies]
anyconfig = "0.12.0" anyconfig = "0.14.0"
appdirs = "1.4.4" appdirs = "1.4.4"
certifi = "2021.10.8" certifi = "2024.2.2"
colorama = "0.4.4" colorama = "0.4.6"
dateparser = "1.1.0" dateparser = "1.2.0"
docker = "5.0.3" docker = "7.1.0"
docker-pycreds = "0.4.0" docker-pycreds = "0.4.0"
environs = "9.3.4" environs = "11.0.0"
idna = "3.3" idna = "3.7"
ipaddress = "1.0.23" ipaddress = "1.0.23"
jsonschema = "4.1.2" jsonschema = "4.22.0"
nested-lookup = "0.2.22" nested-lookup = "0.2.25"
pathspec = "0.9.0" pathspec = "0.12.1"
python = "^3.7.0" python = "^3.8.0"
python-dateutil = "2.8.2" python-dateutil = "2.9.0.post0"
python-json-logger = "2.0.2" python-json-logger = "2.0.7"
requests = "2.26.0" requests = "2.31.0"
"ruamel.yaml" = "0.17.16" "ruamel.yaml" = "0.18.6"
websocket_client = "1.2.1" websocket_client = "1.8.0"
zipp = "3.6.0" zipp = "3.19.1"
[tool.poetry.dev-dependencies]
bandit = "1.7.0"
flake8 = "4.0.1"
flake8-blind-except = "0.2.0"
flake8-builtins = "1.5.3"
flake8-docstrings = "1.6.0"
flake8-eradicate = "1.2.0"
flake8-isort = "4.1.1"
flake8-logging-format = "0.6.0"
flake8-pep3101 = "1.3.0"
flake8-polyfill = "1.0.2"
flake8-quotes = "3.3.1"
pep8-naming = "0.12.1"
pydocstyle = "6.1.1"
pytest = "6.2.5"
pytest-cov = "3.0.0"
pytest-mock = "3.6.1"
tomli = "1.2.1"
yapf = "0.31.0"
[tool.poetry.scripts] [tool.poetry.scripts]
docker-tidy = "dockertidy.cli:main" docker-tidy = "dockertidy.cli:main"
[tool.poetry.group.dev.dependencies]
ruff = "0.4.5"
pytest = "8.2.1"
pytest-mock = "3.14.0"
pytest-cov = "5.0.0"
toml = "0.10.2"
[tool.poetry-dynamic-versioning] [tool.poetry-dynamic-versioning]
enable = true enable = true
style = "semver" style = "semver"
vcs = "git" vcs = "git"
[tool.isort]
default_section = "THIRDPARTY"
force_single_line = true
line_length = 99
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
skip_glob = ["**/.env*", "**/env/*", "**/.venv/*", "**/docs/*"]
[tool.pytest.ini_options] [tool.pytest.ini_options]
addopts = "dockertidy --cov=dockertidy --cov-report=xml:coverage.xml --cov-report=term --cov-append --no-cov-on-fail" addopts = "dockertidy --cov=dockertidy --cov-report=xml:coverage.xml --cov-report=term --no-cov-on-fail"
filterwarnings = [ filterwarnings = [
"ignore::FutureWarning", "ignore::FutureWarning",
"ignore:.*collections.*:DeprecationWarning", "ignore::DeprecationWarning",
"ignore:.*pep8.*:FutureWarning", "ignore:.*pep8.*:FutureWarning",
] ]
@ -103,5 +80,70 @@ filterwarnings = [
omit = ["**/test/*"] omit = ["**/test/*"]
[build-system] [build-system]
build-backend = "poetry.core.masonry.api" build-backend = "poetry_dynamic_versioning.backend"
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"] requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
[tool.ruff]
exclude = [
".git",
"__pycache__",
"build",
"dist",
"test",
"*.pyc",
"*.egg-info",
".cache",
".eggs",
"env*",
]
line-length = 99
indent-width = 4
[tool.ruff.lint]
# Explanation of errors
#
# D102: Missing docstring in public method
# D103: Missing docstring in public function
# D105: Missing docstring in magic method
# D107: Missing docstring in __init__
# D202: No blank lines allowed after function docstring
# D203: One blank line required before class docstring
# D212: Multi-line docstring summary should start at the first line
ignore = [
"D102",
"D103",
"D105",
"D107",
"D202",
"D203",
"D212",
"UP038",
"RUF012",
]
select = [
"D",
"E",
"F",
"Q",
"W",
"I",
"S",
"BLE",
"N",
"UP",
"B",
"A",
"C4",
"T20",
"SIM",
"RET",
"ARG",
"ERA",
"RUF",
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "lf"

View File

@ -1,4 +1,12 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json", "$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>thegeeklab/renovate-presets"] "extends": ["github>thegeeklab/renovate-presets"],
"packageRules": [
{
"matchManagers": ["woodpecker"],
"matchFileNames": [".woodpecker/test.yml"],
"matchPackageNames": ["docker.io/library/python"],
"enabled": false
}
]
} }

View File

@ -1,20 +0,0 @@
[flake8]
# Explanation of errors
#
# D102: Missing docstring in public method
# D103: Missing docstring in public function
# D105: Missing docstring in magic method
# D107: Missing docstring in __init__
# D202: No blank lines allowed after function docstring
# W503:Line break occurred before a binary operator
ignore = D102, D103, D105, D107, D202, W503
max-line-length = 99
inline-quotes = double
exclude = .git, __pycache__, build, dist, test, *.pyc, *.egg-info, .cache, .eggs, env*
[yapf]
based_on_style = google
column_limit = 99
dedent_closing_brackets = true
coalesce_brackets = true
split_before_logical_operator = true