mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 13:32:57 +00:00
## Problem Release CI is slow, because we're doing unnecessary work, for example building compute images on storage releases and vice versa. ## Summary of changes - Extract tag generation into reusable workflow and extend it with fetching of previous component releases - Don't build neon images on compute releases and don't build compute images on proxy and storage releases - Reuse images from previous releases for tests on branches where we don't build those images ## Open questions - We differentiate between `TAG` and `COMPUTE_TAG` in a few places, but we don't differentiate between storage and proxy releases. Since they use the same image, this will continue to work, but I'm not sure this is what we want.
26 lines
1.1 KiB
Plaintext
26 lines
1.1 KiB
Plaintext
# Expects response from https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases as input,
|
|
# with tag names `release` for storage, `release-compute` for compute and `release-proxy` for proxy releases.
|
|
# Extract only the `tag_name` field from each release object
|
|
[ .[].tag_name ]
|
|
|
|
# Transform each tag name into a structured object using regex capture
|
|
| reduce map(
|
|
capture("^(?<full>release(-(?<component>proxy|compute))?-(?<version>\\d+))$")
|
|
| {
|
|
component: (.component // "storage"), # Default to "storage" if no component is specified
|
|
version: (.version | tonumber), # Convert the version number to an integer
|
|
full: .full # Store the full tag name for final output
|
|
}
|
|
)[] as $entry # Loop over the transformed list
|
|
|
|
# Accumulate the latest (highest-numbered) version for each component
|
|
({};
|
|
.[$entry.component] |= (if . == null or $entry.version > .version then $entry else . end))
|
|
|
|
# Convert the resulting object into an array of formatted strings
|
|
| to_entries
|
|
| map("\(.key)=\(.value.full)")
|
|
|
|
# Output each string separately
|
|
| .[]
|