36 Commits

Author SHA1 Message Date
Max Gautier
ff768cc9fe
download: support multiple hash algorithm 2025-01-14 10:41:41 +01:00
Max Gautier
ff3d9a0443
download: Support for gvisor (part 2)
Gvisor releases, besides only being tags, have some particularities:
- they are of the form yyyymmdd.p -> this get interpreted as a yaml
  float, so we need to explicitely convert to string to make it work.
- there is no semver-like attached to the version numbers, but the API
  (= OCI container runtime interface) is expected to be stable (see
  linked discussion)
- some older tags don't have hashs for some archs

Link: https://groups.google.com/g/gvisor-users/c/SxMeHt0Yb6Y/m/Xtv7seULCAAJ
2025-01-14 10:41:40 +01:00
Max Gautier
6608efb2c4
download: compute version from Github tags for gvisor
Gvisor is the only one of our deployed components which use tags instead
of proper releases. So the tags scraping support will, for now, cater to
gvisor particularities, notably in the tag name format and the fact that
some older releases don't have the same URL scheme.
2025-01-14 10:41:39 +01:00
Max Gautier
479fda6355
download: support cri-dockerd, youki, kata, crun 2025-01-14 10:41:39 +01:00
Max Gautier
3a44411aa1
Support project using alternates names for arch
(the url should use `alt_arch` instead of `arch` for those)
2025-01-14 10:41:38 +01:00
Max Gautier
9334bc1fee
support components with no premade hashes 2025-01-14 10:41:38 +01:00
Max Gautier
c94daa4ff5
download: Update yaml data with new hashes 2025-01-14 10:41:37 +01:00
Max Gautier
5be8155394
remove old loops and generators 2025-01-14 10:41:36 +01:00
Max Gautier
08913c4aa0
Don't use 'checksum' in the components names 2025-01-14 10:41:36 +01:00
Max Gautier
38dd224ffe
Extract get_hash into it's own function
Also, always raise even for 404 not found (should not happen now that
we'll use GraphQL to find the exact set of versions)
2025-01-14 10:41:36 +01:00
Max Gautier
24c59cee59
download_hash: adapt download urls to v-less versions 2025-01-14 10:41:35 +01:00
Max Gautier
2be54b2bd7
Filter new versions for new ones and same minor releases
We're only interested in new patch releases for auto-update.
2025-01-14 10:41:35 +01:00
Max Gautier
ae68766015
Filter by github results InvalidVersion
Containerd use the same repository for releases of it's gRPC API (which
we are not interested in).
Conveniently, those releases have tags which are not valid version
number (being prefixed with 'api/').

This could also be potentially useful for similar cases.
The risk of missing releases because of this are low, since it would
require that a project issue a new release with an invalid format, then
switch back to the previous format (or we miss the fact it's not
updating for a long period of time).
2025-01-14 10:41:34 +01:00
Max Gautier
9f58ba60f3
download: compute new versions from Github API
We obtain the set of version from Github, then for each component we do
a set comparison to determine which versions we don't have.
2025-01-14 10:41:34 +01:00
Max Gautier
7941be127d
downloads: add graphql node ids
The Github graphQL API needs IDs for querying a variable array of
repository.

Use a dict for components instead of an array of url and record the
corresponding node ID for each component (there are duplicates because
some binaries are provided by the same project/repository).
2025-01-14 10:41:33 +01:00
ChengHao Yang
8cb081a3d0
Fix: download hash crictl link (#11534)
Signed-off-by: ChengHao Yang <17496418+tico88612@users.noreply.github.com>
2024-09-14 17:35:13 +01:00
Max Gautier
230cb37626
download_hash: document usage 2024-09-08 14:27:03 +02:00
Max Gautier
dec4e711d1
download_hash: cache request for 'multi-hash' files
This avoid re-downloading the same file for different arch and
re-parsing it
2024-09-08 14:27:03 +02:00
Max Gautier
1b1045c0e2
download_hash: use persistent session
This allows to reuse http connection and be more efficient.
From rough measuring it saves around 25-30% of execution time.
2024-09-08 14:27:02 +02:00
Max Gautier
86855be634
download_hash: document missing support 2024-09-08 14:27:02 +02:00
Max Gautier
b2e64aed4b
download_hash: support 'multi-hash' components 2024-09-08 14:27:01 +02:00
Max Gautier
a2644c7a4f
download_hash: add support for 'simple hash' components 2024-09-08 14:14:00 +02:00
Max Gautier
e256f74f2a
download_hash: propagate new patch versions to all archs 2024-09-08 14:11:47 +02:00
Max Gautier
2710e984c8
download_hash: argument handling with argparse
Allow the script to be called with a list of components, to only
download new versions checksums for those.
By default, we get new versions checksums for all supported (by the
script) components.
2024-09-08 11:13:25 +02:00
Max Gautier
da0e445d69
download_hash.py: support for 'multi-hash' file + runc
runc upstream does not provide one hash file per assets in their
releases, but one file with all the hashes.
To handle this (and/or any arbitrary format from upstreams), add a
dictionary mapping the name of the download to a lambda function which
transform the file provided by upstream into a dictionary of hashes,
keyed by architecture.
2024-09-08 11:13:24 +02:00
Max Gautier
a7616231a4
download_hash.py: generalized and data-driven
The script is currently limited to one hardcoded URL for kubernetes
related binaries, and a fixed set of architectures.

The solution is three-fold:
1. Use an url template dictionary for each download -> this allow to easily
   add support for new downloads.
2. Source the architectures to search from the existing data
3. Enumerate the existing versions in the data and start searching from
   the last one until no newer version is found (newer in the version
   order sense, irrespective of actual age)
2024-09-08 11:13:23 +02:00
Max Gautier
ee8b909a67
Download hash script: auto discover versions (#10849)
* Download patches version automatically from a minor

* Automate versions discovery for hash download

* Small refactoring
2024-01-29 18:06:10 -08:00
Simon Wessel
0e26f6f3e2
chore: improve performance of python script for hash download (#10335)
The old version of the script downloaded all binaries and generated file checksums locally.
This was a slow process since all binaries of all architectures needed to be downloaded.
The new version simply downloads the .sha256 files containing the binary checksum in text
form which saves a lot of traffic and time.
2024-01-23 16:41:20 +01:00
Louis Tu
8f2390a120
Fix the path of download.yml (#10711)
Signed-off-by: tu1h <lihai.tu@daocloud.io>
2023-12-12 13:47:27 +01:00
Max Gautier
51069223f5
Decouple kubespray-defaults from download (#10626)
* Decouple role kubespray-defaults from download

Avoids doing re-importing the download role on every invocation of
kubespray-defaults (and skipping everything).

This has a measurable effect on playbook performance.

* Update docs refering to moved download defaults
2023-12-11 16:56:17 +01:00
Victor Morales
78c1775661
Upgrade versions (#9798)
The following applications have been upgraded:

* Cilium
* Helm
* crun
* Katacontainers
* youki
* gvisor
* skopeo
* yq

Signed-off-by: Victor Morales <chipahuac@hotmail.com>
2023-07-05 03:32:58 -07:00
Victor Morales
bf31a3a872
Split defaults main file (#10121) 2023-06-22 02:19:40 -07:00
Kulwant Singh
9948863d3a
use dl.k8s.io not gs://kubernetes-release (#10066) 2023-05-16 21:02:33 -07:00
mgiessing
6a4fd33a03
Added ppc64le support (#8505)
* Added ppc64le support

* Fixed linting errors
2022-02-04 00:14:00 -08:00
Victor Morales
c7d12cddec
Ensure python main function return values (#7860)
The main functions are wrapped by a sys.exit function which expects and
argument. The curent implementation isn't returning values in all cases.
This change ensures main functions return a value in all cases.
2021-08-19 06:51:24 -07:00
Craig Rodrigues
4fd03b93f7
Rewrite download_hash in Python (#5995)
- Directly update the main.yml file with the new hashes.
2020-05-27 06:52:40 -07:00