Skip to content

Commit b9ecb45

Browse files
authored
parameterize ConfigMap and environment variable keys for PostgreSQL schema actions (#9)
* parameterize ConfigMap and environment variable keys for PostgreSQL schema actions * clarify configmap description in PostgreSQL schema actions and readme * update default configmap name in PostgreSQL schema actions and readme
1 parent c653523 commit b9ecb45

5 files changed

Lines changed: 110 additions & 24 deletions

File tree

readme.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Sets up a PostgreSQL preview schema by cloning a base schema.
9999
```yaml
100100
- uses: aboutbits/github-actions-kubernetes/setup-postgres-preview-schema@v4
101101
with:
102-
deployment-name: my-app
102+
configmap-name: my-app-environments
103103
namespace: my-namespace
104104
preview-number: ${{ github.event.number }}
105105
```
@@ -110,12 +110,18 @@ The following inputs can be used as `step.with` keys:
110110

111111
| Name | Required/Default | Description |
112112
|-------------------|------------------|--------------------------------------------|
113-
| `deployment-name` | required | Name of the deployment |
113+
| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap containing database connection details |
114114
| `namespace` | required | Kubernetes namespace |
115115
| `preview-number` | required | Preview number (PR number) |
116116
| `secret-name` | `app-secrets` | Name of the secret containing PostgreSQL password |
117117
| `postgres-image` | `postgres:18` | PostgreSQL image to use |
118118
| `base-schema` | `main` | Base schema to copy from |
119+
| `db-host-key` | `DB_HOST` | Key for DB_HOST in ConfigMap |
120+
| `db-port-key` | `DB_PORT` | Key for DB_PORT in ConfigMap |
121+
| `db-name-key` | `DB_NAME` | Key for DB_NAME in ConfigMap |
122+
| `db-schema-key` | `DB_SCHEMA` | Key for DB_SCHEMA in ConfigMap |
123+
| `db-username-key` | `DB_USERNAME` | Key for DB_USERNAME in ConfigMap |
124+
| `db-password-key` | `DB_PASSWORD` | Key for DB_PASSWORD in Secret |
119125

120126
### Teardown PostgreSQL Preview Schema
121127

@@ -126,7 +132,7 @@ Drops the PostgreSQL preview schema.
126132
```yaml
127133
- uses: aboutbits/github-actions-kubernetes/teardown-postgres-preview-schema@v4
128134
with:
129-
deployment-name: my-app
135+
configmap-name: my-app-environments
130136
namespace: my-namespace
131137
preview-number: ${{ github.event.number }}
132138
```
@@ -137,11 +143,17 @@ The following inputs can be used as `step.with` keys:
137143

138144
| Name | Required/Default | Description |
139145
|-------------------|------------------|--------------------------------------------|
140-
| `deployment-name` | required | Name of the deployment |
146+
| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap containing database connection details |
141147
| `namespace` | required | Kubernetes namespace |
142148
| `preview-number` | required | Preview number (PR number) |
143149
| `secret-name` | `app-secrets` | Name of the secret containing PostgreSQL password |
144150
| `postgres-image` | `postgres:18` | PostgreSQL image to use |
151+
| `db-host-key` | `DB_HOST` | Key for DB_HOST in ConfigMap |
152+
| `db-port-key` | `DB_PORT` | Key for DB_PORT in ConfigMap |
153+
| `db-name-key` | `DB_NAME` | Key for DB_NAME in ConfigMap |
154+
| `db-schema-key` | `DB_SCHEMA` | Key for DB_SCHEMA in ConfigMap |
155+
| `db-username-key` | `DB_USERNAME` | Key for DB_USERNAME in ConfigMap |
156+
| `db-password-key` | `DB_PASSWORD` | Key for DB_PASSWORD in Secret |
145157

146158
## Build & Publish
147159

setup-postgres-preview-schema/action.yml

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
name: 'Setup PostgreSQL Preview Schema'
22
description: 'Sets up a PostgreSQL preview schema by cloning a base schema'
33
inputs:
4-
deployment-name:
5-
description: 'Name of the deployment (used for ConfigMap name)'
6-
required: true
74
namespace:
85
description: 'Kubernetes namespace'
96
required: true
107
preview-number:
118
description: 'Preview number (PR number)'
129
required: true
10+
configmap-name:
11+
description: 'Name of the ConfigMap containing database connection details'
12+
required: false
13+
default: 'app-spring-deployment-environments'
1314
secret-name:
1415
description: 'Name of the secret containing DB password'
1516
required: false
@@ -22,18 +23,48 @@ inputs:
2223
description: 'Base schema to copy from'
2324
required: false
2425
default: 'main'
26+
db-host-key:
27+
description: 'Key for DB_HOST in ConfigMap'
28+
required: false
29+
default: 'DB_HOST'
30+
db-port-key:
31+
description: 'Key for DB_PORT in ConfigMap'
32+
required: false
33+
default: 'DB_PORT'
34+
db-name-key:
35+
description: 'Key for DB_NAME in ConfigMap'
36+
required: false
37+
default: 'DB_NAME'
38+
db-schema-key:
39+
description: 'Key for DB_SCHEMA in ConfigMap'
40+
required: false
41+
default: 'DB_SCHEMA'
42+
db-username-key:
43+
description: 'Key for DB_USERNAME in ConfigMap'
44+
required: false
45+
default: 'DB_USERNAME'
46+
db-password-key:
47+
description: 'Key for DB_PASSWORD in Secret'
48+
required: false
49+
default: 'DB_PASSWORD'
2550

2651
runs:
2752
using: "composite"
2853
steps:
2954
- name: Prepare setup-schema job
3055
env:
3156
JOB_NAME: "prepare-schema-preview-${{ inputs.preview-number }}"
32-
CONFIGMAP_NAME: "${{ inputs.deployment-name }}-environments"
57+
CONFIGMAP_NAME: "${{ inputs.configmap-name }}"
3358
SECRET_NAME: "${{ inputs.secret-name }}"
3459
PREVIEW_SCHEMA_NAME: "preview_${{ inputs.preview-number }}"
3560
POSTGRES_IMAGE: "${{ inputs.postgres-image }}"
3661
BASE_SCHEMA: "${{ inputs.base-schema }}"
62+
DB_HOST_KEY: "${{ inputs.db-host-key }}"
63+
DB_PORT_KEY: "${{ inputs.db-port-key }}"
64+
DB_NAME_KEY: "${{ inputs.db-name-key }}"
65+
DB_SCHEMA_KEY: "${{ inputs.db-schema-key }}"
66+
DB_USERNAME_KEY: "${{ inputs.db-username-key }}"
67+
DB_PASSWORD_KEY: "${{ inputs.db-password-key }}"
3768
run: |
3869
envsubst '
3970
$JOB_NAME
@@ -42,6 +73,12 @@ runs:
4273
$PREVIEW_SCHEMA_NAME
4374
$POSTGRES_IMAGE
4475
$BASE_SCHEMA
76+
$DB_HOST_KEY
77+
$DB_PORT_KEY
78+
$DB_NAME_KEY
79+
$DB_SCHEMA_KEY
80+
$DB_USERNAME_KEY
81+
$DB_PASSWORD_KEY
4582
' < ${{ github.action_path }}/job-template.yml > job-setup-schema.yml
4683
4784
echo "Prepared job manifest: job-setup-schema.yml"

setup-postgres-preview-schema/job-template.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,29 @@ spec:
5858
valueFrom:
5959
configMapKeyRef:
6060
name: ${CONFIGMAP_NAME}
61-
key: DB_HOST
61+
key: ${DB_HOST_KEY}
6262
- name: PGPORT
6363
valueFrom:
6464
configMapKeyRef:
6565
name: ${CONFIGMAP_NAME}
66-
key: DB_PORT
66+
key: ${DB_PORT_KEY}
6767
- name: PGDATABASE
6868
valueFrom:
6969
configMapKeyRef:
7070
name: ${CONFIGMAP_NAME}
71-
key: DB_NAME
71+
key: ${DB_NAME_KEY}
7272
- name: PGSCHEMA
7373
valueFrom:
7474
configMapKeyRef:
7575
name: ${CONFIGMAP_NAME}
76-
key: DB_SCHEMA
76+
key: ${DB_SCHEMA_KEY}
7777
- name: PGUSER
7878
valueFrom:
7979
configMapKeyRef:
8080
name: ${CONFIGMAP_NAME}
81-
key: DB_USERNAME
81+
key: ${DB_USERNAME_KEY}
8282
- name: PGPASSWORD
8383
valueFrom:
8484
secretKeyRef:
8585
name: ${SECRET_NAME}
86-
key: DB_PASSWORD
86+
key: ${DB_PASSWORD_KEY}

teardown-postgres-preview-schema/action.yml

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
name: 'Teardown PostgreSQL Preview Schema'
22
description: 'Drops the PostgreSQL preview schema'
33
inputs:
4-
deployment-name:
5-
description: 'Name of the deployment (used for ConfigMap name)'
6-
required: true
74
namespace:
85
description: 'Kubernetes namespace'
96
required: true
107
preview-number:
118
description: 'Preview number (PR number)'
129
required: true
10+
configmap-name:
11+
description: 'Name of the ConfigMap containing database connection details'
12+
required: false
13+
default: 'app-spring-deployment-environments'
1314
secret-name:
1415
description: 'Name of the secret containing DB password'
1516
required: false
@@ -18,24 +19,60 @@ inputs:
1819
description: 'PostgreSQL image to use'
1920
required: false
2021
default: 'postgres:18'
22+
db-host-key:
23+
description: 'Key for DB_HOST in ConfigMap'
24+
required: false
25+
default: 'DB_HOST'
26+
db-port-key:
27+
description: 'Key for DB_PORT in ConfigMap'
28+
required: false
29+
default: 'DB_PORT'
30+
db-name-key:
31+
description: 'Key for DB_NAME in ConfigMap'
32+
required: false
33+
default: 'DB_NAME'
34+
db-schema-key:
35+
description: 'Key for DB_SCHEMA in ConfigMap'
36+
required: false
37+
default: 'DB_SCHEMA'
38+
db-username-key:
39+
description: 'Key for DB_USERNAME in ConfigMap'
40+
required: false
41+
default: 'DB_USERNAME'
42+
db-password-key:
43+
description: 'Key for DB_PASSWORD in Secret'
44+
required: false
45+
default: 'DB_PASSWORD'
2146

2247
runs:
2348
using: "composite"
2449
steps:
2550
- name: Prepare teardown-schema job
2651
env:
2752
JOB_NAME: "drop-schema-preview-${{ inputs.preview-number }}"
28-
CONFIGMAP_NAME: "${{ inputs.deployment-name }}-environments"
53+
CONFIGMAP_NAME: "${{ inputs.configmap-name }}"
2954
SECRET_NAME: "${{ inputs.secret-name }}"
3055
PREVIEW_SCHEMA_NAME: "preview_${{ inputs.preview-number }}"
3156
POSTGRES_IMAGE: "${{ inputs.postgres-image }}"
57+
DB_HOST_KEY: "${{ inputs.db-host-key }}"
58+
DB_PORT_KEY: "${{ inputs.db-port-key }}"
59+
DB_NAME_KEY: "${{ inputs.db-name-key }}"
60+
DB_SCHEMA_KEY: "${{ inputs.db-schema-key }}"
61+
DB_USERNAME_KEY: "${{ inputs.db-username-key }}"
62+
DB_PASSWORD_KEY: "${{ inputs.db-password-key }}"
3263
run: |
3364
envsubst '
3465
$JOB_NAME
3566
$CONFIGMAP_NAME
3667
$SECRET_NAME
3768
$PREVIEW_SCHEMA_NAME
3869
$POSTGRES_IMAGE
70+
$DB_HOST_KEY
71+
$DB_PORT_KEY
72+
$DB_NAME_KEY
73+
$DB_SCHEMA_KEY
74+
$DB_USERNAME_KEY
75+
$DB_PASSWORD_KEY
3976
' < ${{ github.action_path }}/job-template.yml > job-teardown-schema.yml
4077
4178
echo "Prepared job manifest: job-teardown-schema.yml"

teardown-postgres-preview-schema/job-template.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,29 @@ spec:
3333
valueFrom:
3434
configMapKeyRef:
3535
name: ${CONFIGMAP_NAME}
36-
key: DB_HOST
36+
key: ${DB_HOST_KEY}
3737
- name: PGPORT
3838
valueFrom:
3939
configMapKeyRef:
4040
name: ${CONFIGMAP_NAME}
41-
key: DB_PORT
41+
key: ${DB_PORT_KEY}
4242
- name: PGDATABASE
4343
valueFrom:
4444
configMapKeyRef:
4545
name: ${CONFIGMAP_NAME}
46-
key: DB_NAME
46+
key: ${DB_NAME_KEY}
4747
- name: PGSCHEMA
4848
valueFrom:
4949
configMapKeyRef:
5050
name: ${CONFIGMAP_NAME}
51-
key: DB_SCHEMA
51+
key: ${DB_SCHEMA_KEY}
5252
- name: PGUSER
5353
valueFrom:
5454
configMapKeyRef:
5555
name: ${CONFIGMAP_NAME}
56-
key: DB_USERNAME
56+
key: ${DB_USERNAME_KEY}
5757
- name: PGPASSWORD
5858
valueFrom:
5959
secretKeyRef:
6060
name: ${SECRET_NAME}
61-
key: DB_PASSWORD
61+
key: ${DB_PASSWORD_KEY}

0 commit comments

Comments
 (0)