Skip to content

Commit c0a2cad

Browse files
Merging
2 parents 91da84a + 2c64433 commit c0a2cad

18 files changed

Lines changed: 121 additions & 33 deletions

File tree

.github/workflows/bake.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ jobs:
4141
_shared: &shared
4242
- 'docker-bake.hcl'
4343
- 'Taskfile.yml'
44-
- 'kind-config.yaml'
4544
- 'test/**'
4645
- '.github/workflows/bake*.yml'
4746
pgvector:

.github/workflows/bake_targets.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ permissions: {}
1616
jobs:
1717
testbuild:
1818
name: Build ${{ inputs.extension_name }}
19-
runs-on: ubuntu-24.04
19+
runs-on: ${{ github.repository_owner == 'cloudnative-pg' && 'ubuntu-latest-16-cores' || 'ubuntu-24.04' }}
2020
permissions:
2121
contents: read
2222
packages: write
@@ -119,7 +119,7 @@ jobs:
119119
fail-fast: false
120120
matrix:
121121
image: ${{fromJson(needs.testbuild.outputs.images)}}
122-
cnpg: ["main", "1.27", "1.28"]
122+
cnpg: ["main", "1.28", "1.29"]
123123
steps:
124124
- name: Checkout Code
125125
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
@@ -137,8 +137,10 @@ jobs:
137137
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
138138
139139
- name: Set up environment
140+
env:
141+
CNPG_RELEASE: ${{ matrix.cnpg }}
140142
run: |
141-
task e2e:setup-env
143+
task e2e:setup-env CNPG_RELEASE=$CNPG_RELEASE
142144
143145
- name: Generate Chainsaw testing values
144146
env:

Taskfile.yml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ vars:
2121
KIND_NODE_VERSION: v1.35.1@sha256:05d7bcdefbda08b4e038f644c4df690cdac3fba8b06f8289f30e10026720a1ab
2222
K8S_VERSION: '{{ regexReplaceAll "^v([0-9.]+).*" .KIND_NODE_VERSION "$1" }}'
2323
KIND_CLUSTER_NAME: pg-extensions-{{ .K8S_VERSION }}
24+
# renovate: datasource=github-tags depName=cloudnative-pg/cloudnative-pg versioning=semver extractVersion=^v(?<version>\d+\.\d+)\.\d+$
25+
CNPG_RELEASE_DEFAULT: 1.29
2426

2527
tasks:
2628
default:
@@ -229,10 +231,21 @@ tasks:
229231
env:
230232
_EXPERIMENTAL_DAGGER_RUNNER_HOST: container://{{ .DAGGER_ENGINE_NAME }}
231233
cmds:
232-
- >
233-
dagger call -m github.com/aweris/daggerverse/kind@{{ .DAGGER_KIND_SHA }} --socket {{ .DOCKER_SOCKET }}
234-
container with-env-variable --name=KIND_EXPERIMENTAL_DOCKER_NETWORK --value={{ .E2E_NETWORK }} with-env-variable --name=CACHE_BUSTER --value="$(date)"
235-
with-file --source=kind-config.yaml --path=/root/kind-config.yaml
234+
- |
235+
KIND_CONFIG=$(cat <<'EOF'
236+
kind: Cluster
237+
apiVersion: kind.x-k8s.io/v1alpha4
238+
featureGates:
239+
ImageVolume: true
240+
containerdConfigPatches:
241+
- |-
242+
[plugins."io.containerd.cri.v1.images".registry]
243+
config_path = "/etc/containerd/certs.d"
244+
EOF
245+
)
246+
dagger call -m github.com/aweris/daggerverse/kind@{{ .DAGGER_KIND_SHA }} --socket {{ .DOCKER_SOCKET }} \
247+
container with-env-variable --name=KIND_EXPERIMENTAL_DOCKER_NETWORK --value={{ .E2E_NETWORK }} with-env-variable --name=CACHE_BUSTER --value="$(date)" \
248+
with-new-file --contents="${KIND_CONFIG}" --path=/root/kind-config.yaml \
236249
with-exec --args="kind","create","cluster","--name","{{ .KIND_CLUSTER_NAME }}","--image","kindest/node:{{ .KIND_NODE_VERSION }}","--config","/root/kind-config.yaml" sync
237250
- docker exec "{{ .KIND_CLUSTER_NAME }}-control-plane" mkdir -p "{{ .REGISTRY_DIR }}"
238251
- |
@@ -267,8 +280,7 @@ tasks:
267280
REGISTRY_USERNAME: '{{ .REGISTRY_USERNAME }}'
268281
internal: true
269282
vars:
270-
# renovate: datasource=github-tags depName=cloudnative-pg/cloudnative-pg versioning=semver extractVersion=^v(?<version>\d+\.\d+)\.\d+$
271-
CNPG_RELEASE: 1.28
283+
CNPG_RELEASE: '{{ .CNPG_RELEASE | default .CNPG_RELEASE_DEFAULT }}'
272284
# renovate: datasource=docker depName=alpine/kubectl versioning=docker
273285
KUBECTL_VERSION: 1.35.3@sha256:ebf9d81d06441b3183fdc6e2dbc9f5d0db4d0464808b5bcd3c9021f54f6e65db
274286
DOCKER_SOCKET:
@@ -336,13 +348,15 @@ tasks:
336348
vars:
337349
REGISTRY_HOST: '{{ .REGISTRY_HOST | default "" }}'
338350
REGISTRY_USERNAME: '{{ .REGISTRY_USERNAME | default "" }}'
351+
CNPG_RELEASE: '{{ .CNPG_RELEASE | default .CNPG_RELEASE_DEFAULT }}'
339352
deps:
340353
- e2e:start-container-registry
341354
- e2e:start-dagger-engine
342355
- task: e2e:install-cnpg
343356
vars:
344357
REGISTRY_HOST: '{{ .REGISTRY_HOST }}'
345358
REGISTRY_USERNAME: '{{ .REGISTRY_USERNAME }}'
359+
CNPG_RELEASE: '{{ .CNPG_RELEASE }}'
346360
cmds:
347361
- echo -e "{{.GREEN}}--- E2E environment setup complete ---{{.NC}}"
348362

@@ -410,11 +424,13 @@ tasks:
410424
DISTRO: '{{ .DISTRO | default "trixie" }}'
411425
REGISTRY_HOST: '{{ .REGISTRY_HOST | default "" }}'
412426
REGISTRY_USERNAME: '{{ .REGISTRY_USERNAME | default "" }}'
427+
CNPG_RELEASE: '{{ .CNPG_RELEASE | default .CNPG_RELEASE_DEFAULT }}'
413428
cmds:
414429
- task: e2e:setup-env
415430
vars:
416431
REGISTRY_HOST: '{{ .REGISTRY_HOST }}'
417432
REGISTRY_USERNAME: '{{ .REGISTRY_USERNAME }}'
433+
CNPG_RELEASE: '{{ .CNPG_RELEASE }}'
418434
- task: bake
419435
vars:
420436
PUSH: "true"

dagger/maintenance/catalogs.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"path/filepath"
88
"slices"
9+
"sort"
910

1011
"go.yaml.in/yaml/v3"
1112

@@ -22,13 +23,19 @@ type ImageVolumeSource struct {
2223
PullPolicy string `yaml:"pullPolicy,omitempty"`
2324
}
2425

26+
type ExtensionEnvVar struct {
27+
Name string `yaml:"name"`
28+
Value string `yaml:"value"`
29+
}
30+
2531
type ExtensionConfiguration struct {
2632
Name string `yaml:"name"`
2733
ImageVolumeSource ImageVolumeSource `yaml:"image"`
2834
ExtensionControlPath []string `yaml:"extension_control_path,omitempty"`
2935
DynamicLibraryPath []string `yaml:"dynamic_library_path,omitempty"`
3036
LdLibraryPath []string `yaml:"ld_library_path,omitempty"`
3137
BinPath []string `yaml:"bin_path,omitempty"`
38+
Env []ExtensionEnvVar `yaml:"env,omitempty"`
3239
}
3340

3441
type ImageCatalog struct {
@@ -111,3 +118,14 @@ func writeCatalogToDir(catalog *ImageCatalog, outDir *dagger.Directory) (*dagger
111118

112119
return outDir.WithNewFile(outName, buf.String()), nil
113120
}
121+
122+
func envMapToSlice(env map[string]string) []ExtensionEnvVar {
123+
result := make([]ExtensionEnvVar, 0, len(env))
124+
for name, value := range env {
125+
result = append(result, ExtensionEnvVar{Name: name, Value: value})
126+
}
127+
sort.Slice(result, func(i, j int) bool {
128+
return result[i].Name < result[j].Name
129+
})
130+
return result
131+
}

dagger/maintenance/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ func (m *Maintenance) GenerateTestingValues(
204204
Name: metadata.Name,
205205
SQLName: metadata.SQLName,
206206
SharedPreloadLibraries: metadata.SharedPreloadLibraries,
207+
PostgresqlParameters: metadata.PostgresqlParameters,
207208
PgImage: pgImage,
208209
Version: version,
209210
CreateExtension: metadata.CreateExtension,
@@ -515,6 +516,7 @@ func (m *Maintenance) GenerateCatalogs(
515516
DynamicLibraryPath: metadata.DynamicLibraryPath,
516517
LdLibraryPath: metadata.LdLibraryPath,
517518
BinPath: metadata.BinPath,
519+
Env: envMapToSlice(metadata.Env),
518520
}
519521

520522
img.Extensions = append(img.Extensions, extensionsConfig)

dagger/maintenance/parse.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,21 @@ type extensionVersion struct {
2525
type versionMap map[string]map[string]extensionVersion
2626

2727
type extensionMetadata struct {
28-
Name string `hcl:"name" cty:"name"`
29-
SQLName string `hcl:"sql_name" cty:"sql_name"`
30-
ImageName string `hcl:"image_name" cty:"image_name"`
31-
SharedPreloadLibraries []string `hcl:"shared_preload_libraries" cty:"shared_preload_libraries"`
32-
ExtensionControlPath []string `hcl:"extension_control_path" cty:"extension_control_path"`
33-
DynamicLibraryPath []string `hcl:"dynamic_library_path" cty:"dynamic_library_path"`
34-
LdLibraryPath []string `hcl:"ld_library_path" cty:"ld_library_path"`
35-
BinPath []string `hcl:"bin_path" cty:"bin_path"`
36-
AutoUpdateOsLibs bool `hcl:"auto_update_os_libs" cty:"auto_update_os_libs"`
37-
RequiredExtensions []string `hcl:"required_extensions" cty:"required_extensions"`
38-
CreateExtension bool `hcl:"create_extension" cty:"create_extension"`
39-
Versions versionMap `hcl:"versions" cty:"versions"`
40-
Remain hcl.Body `hcl:",remain"`
28+
Name string `hcl:"name" cty:"name"`
29+
SQLName string `hcl:"sql_name" cty:"sql_name"`
30+
ImageName string `hcl:"image_name" cty:"image_name"`
31+
SharedPreloadLibraries []string `hcl:"shared_preload_libraries" cty:"shared_preload_libraries"`
32+
PostgresqlParameters map[string]string `hcl:"postgresql_parameters" cty:"postgresql_parameters"`
33+
ExtensionControlPath []string `hcl:"extension_control_path" cty:"extension_control_path"`
34+
DynamicLibraryPath []string `hcl:"dynamic_library_path" cty:"dynamic_library_path"`
35+
LdLibraryPath []string `hcl:"ld_library_path" cty:"ld_library_path"`
36+
BinPath []string `hcl:"bin_path" cty:"bin_path"`
37+
Env map[string]string `hcl:"env" cty:"env"`
38+
AutoUpdateOsLibs bool `hcl:"auto_update_os_libs" cty:"auto_update_os_libs"`
39+
RequiredExtensions []string `hcl:"required_extensions" cty:"required_extensions"`
40+
CreateExtension bool `hcl:"create_extension" cty:"create_extension"`
41+
Versions versionMap `hcl:"versions" cty:"versions"`
42+
Remain hcl.Body `hcl:",remain"`
4143
}
4244

4345
const (

dagger/maintenance/testingvalues.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type TestingValues struct {
2121
Name string `yaml:"name"`
2222
SQLName string `yaml:"sql_name"`
2323
SharedPreloadLibraries []string `yaml:"shared_preload_libraries"`
24+
PostgresqlParameters map[string]string `yaml:"postgresql_parameters"`
2425
PgImage string `yaml:"pg_image"`
2526
Version string `yaml:"version"`
2627
CreateExtension bool `yaml:"create_extension"`
@@ -109,6 +110,7 @@ func generateExtensionConfiguration(metadata *extensionMetadata, extensionImage
109110
DynamicLibraryPath: metadata.DynamicLibraryPath,
110111
LdLibraryPath: metadata.LdLibraryPath,
111112
BinPath: metadata.BinPath,
113+
Env: envMapToSlice(metadata.Env),
112114
}, nil
113115
}
114116

kind-config.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.

pg-crash/metadata.hcl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ metadata = {
66
image_name = "pg-crash"
77
licenses = ["BSD-3-Clause"]
88
shared_preload_libraries = ["pg_crash"]
9+
postgresql_parameters = {}
910
extension_control_path = []
1011
dynamic_library_path = []
1112
ld_library_path = []
1213
bin_path = []
14+
env = {}
1315
auto_update_os_libs = false
1416
required_extensions = []
1517
create_extension = false

pgaudit/metadata.hcl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ metadata = {
44
image_name = "pgaudit"
55
licenses = ["PostgreSQL"]
66
shared_preload_libraries = ["pgaudit"]
7+
postgresql_parameters = {}
78
extension_control_path = []
89
dynamic_library_path = []
910
ld_library_path = []
1011
bin_path = []
12+
env = {}
1113
auto_update_os_libs = false
1214
required_extensions = []
1315
create_extension = true

0 commit comments

Comments
 (0)