diff --git a/readme.md b/readme.md index b02af90..4fa1d72 100644 --- a/readme.md +++ b/readme.md @@ -99,7 +99,7 @@ Sets up a PostgreSQL preview schema by cloning a base schema. ```yaml - uses: aboutbits/github-actions-kubernetes/setup-postgres-preview-schema@v3 with: - deployment-name: my-app + configmap-name: my-app-environments namespace: my-namespace preview-number: ${{ github.event.number }} ``` @@ -110,12 +110,18 @@ The following inputs can be used as `step.with` keys: | Name | Required/Default | Description | |-------------------|------------------|--------------------------------------------| -| `deployment-name` | required | Name of the deployment | +| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap containing database connection details | | `namespace` | required | Kubernetes namespace | | `preview-number` | required | Preview number (PR number) | | `secret-name` | `app-secrets` | Name of the secret containing PostgreSQL password | | `postgres-image` | `postgres:18` | PostgreSQL image to use | | `base-schema` | `main` | Base schema to copy from | +| `db-host-key` | `DB_HOST` | Key for DB_HOST in ConfigMap | +| `db-port-key` | `DB_PORT` | Key for DB_PORT in ConfigMap | +| `db-name-key` | `DB_NAME` | Key for DB_NAME in ConfigMap | +| `db-schema-key` | `DB_SCHEMA` | Key for DB_SCHEMA in ConfigMap | +| `db-username-key` | `DB_USERNAME` | Key for DB_USERNAME in ConfigMap | +| `db-password-key` | `DB_PASSWORD` | Key for DB_PASSWORD in Secret | ### Teardown PostgreSQL Preview Schema @@ -126,7 +132,7 @@ Drops the PostgreSQL preview schema. ```yaml - uses: aboutbits/github-actions-kubernetes/teardown-postgres-preview-schema@v3 with: - deployment-name: my-app + configmap-name: my-app-environments namespace: my-namespace preview-number: ${{ github.event.number }} ``` @@ -137,11 +143,17 @@ The following inputs can be used as `step.with` keys: | Name | Required/Default | Description | |-------------------|------------------|--------------------------------------------| -| `deployment-name` | required | Name of the deployment | +| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap containing database connection details | | `namespace` | required | Kubernetes namespace | | `preview-number` | required | Preview number (PR number) | | `secret-name` | `app-secrets` | Name of the secret containing PostgreSQL password | | `postgres-image` | `postgres:18` | PostgreSQL image to use | +| `db-host-key` | `DB_HOST` | Key for DB_HOST in ConfigMap | +| `db-port-key` | `DB_PORT` | Key for DB_PORT in ConfigMap | +| `db-name-key` | `DB_NAME` | Key for DB_NAME in ConfigMap | +| `db-schema-key` | `DB_SCHEMA` | Key for DB_SCHEMA in ConfigMap | +| `db-username-key` | `DB_USERNAME` | Key for DB_USERNAME in ConfigMap | +| `db-password-key` | `DB_PASSWORD` | Key for DB_PASSWORD in Secret | ## Build & Publish diff --git a/setup-postgres-preview-schema/action.yml b/setup-postgres-preview-schema/action.yml index 583ba41..8cdc58c 100644 --- a/setup-postgres-preview-schema/action.yml +++ b/setup-postgres-preview-schema/action.yml @@ -1,15 +1,16 @@ name: 'Setup PostgreSQL Preview Schema' description: 'Sets up a PostgreSQL preview schema by cloning a base schema' inputs: - deployment-name: - description: 'Name of the deployment (used for ConfigMap name)' - required: true namespace: description: 'Kubernetes namespace' required: true preview-number: description: 'Preview number (PR number)' required: true + configmap-name: + description: 'Name of the ConfigMap containing database connection details' + required: false + default: 'app-spring-deployment-environments' secret-name: description: 'Name of the secret containing DB password' required: false @@ -22,6 +23,30 @@ inputs: description: 'Base schema to copy from' required: false default: 'main' + db-host-key: + description: 'Key for DB_HOST in ConfigMap' + required: false + default: 'DB_HOST' + db-port-key: + description: 'Key for DB_PORT in ConfigMap' + required: false + default: 'DB_PORT' + db-name-key: + description: 'Key for DB_NAME in ConfigMap' + required: false + default: 'DB_NAME' + db-schema-key: + description: 'Key for DB_SCHEMA in ConfigMap' + required: false + default: 'DB_SCHEMA' + db-username-key: + description: 'Key for DB_USERNAME in ConfigMap' + required: false + default: 'DB_USERNAME' + db-password-key: + description: 'Key for DB_PASSWORD in Secret' + required: false + default: 'DB_PASSWORD' runs: using: "composite" @@ -29,11 +54,17 @@ runs: - name: Prepare setup-schema job env: JOB_NAME: "prepare-schema-preview-${{ inputs.preview-number }}" - CONFIGMAP_NAME: "${{ inputs.deployment-name }}-environments" + CONFIGMAP_NAME: "${{ inputs.configmap-name }}" SECRET_NAME: "${{ inputs.secret-name }}" PREVIEW_SCHEMA_NAME: "preview_${{ inputs.preview-number }}" POSTGRES_IMAGE: "${{ inputs.postgres-image }}" BASE_SCHEMA: "${{ inputs.base-schema }}" + DB_HOST_KEY: "${{ inputs.db-host-key }}" + DB_PORT_KEY: "${{ inputs.db-port-key }}" + DB_NAME_KEY: "${{ inputs.db-name-key }}" + DB_SCHEMA_KEY: "${{ inputs.db-schema-key }}" + DB_USERNAME_KEY: "${{ inputs.db-username-key }}" + DB_PASSWORD_KEY: "${{ inputs.db-password-key }}" run: | envsubst ' $JOB_NAME @@ -42,6 +73,12 @@ runs: $PREVIEW_SCHEMA_NAME $POSTGRES_IMAGE $BASE_SCHEMA + $DB_HOST_KEY + $DB_PORT_KEY + $DB_NAME_KEY + $DB_SCHEMA_KEY + $DB_USERNAME_KEY + $DB_PASSWORD_KEY ' < ${{ github.action_path }}/job-template.yml > job-setup-schema.yml echo "Prepared job manifest: job-setup-schema.yml" diff --git a/setup-postgres-preview-schema/job-template.yml b/setup-postgres-preview-schema/job-template.yml index 9715b9d..51e646b 100644 --- a/setup-postgres-preview-schema/job-template.yml +++ b/setup-postgres-preview-schema/job-template.yml @@ -58,29 +58,29 @@ spec: valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_HOST + key: ${DB_HOST_KEY} - name: PGPORT valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_PORT + key: ${DB_PORT_KEY} - name: PGDATABASE valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_NAME + key: ${DB_NAME_KEY} - name: PGSCHEMA valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_SCHEMA + key: ${DB_SCHEMA_KEY} - name: PGUSER valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_USERNAME + key: ${DB_USERNAME_KEY} - name: PGPASSWORD valueFrom: secretKeyRef: name: ${SECRET_NAME} - key: DB_PASSWORD + key: ${DB_PASSWORD_KEY} diff --git a/teardown-postgres-preview-schema/action.yml b/teardown-postgres-preview-schema/action.yml index b753b72..ab36268 100644 --- a/teardown-postgres-preview-schema/action.yml +++ b/teardown-postgres-preview-schema/action.yml @@ -1,15 +1,16 @@ name: 'Teardown PostgreSQL Preview Schema' description: 'Drops the PostgreSQL preview schema' inputs: - deployment-name: - description: 'Name of the deployment (used for ConfigMap name)' - required: true namespace: description: 'Kubernetes namespace' required: true preview-number: description: 'Preview number (PR number)' required: true + configmap-name: + description: 'Name of the ConfigMap containing database connection details' + required: false + default: 'app-spring-deployment-environments' secret-name: description: 'Name of the secret containing DB password' required: false @@ -18,6 +19,30 @@ inputs: description: 'PostgreSQL image to use' required: false default: 'postgres:18' + db-host-key: + description: 'Key for DB_HOST in ConfigMap' + required: false + default: 'DB_HOST' + db-port-key: + description: 'Key for DB_PORT in ConfigMap' + required: false + default: 'DB_PORT' + db-name-key: + description: 'Key for DB_NAME in ConfigMap' + required: false + default: 'DB_NAME' + db-schema-key: + description: 'Key for DB_SCHEMA in ConfigMap' + required: false + default: 'DB_SCHEMA' + db-username-key: + description: 'Key for DB_USERNAME in ConfigMap' + required: false + default: 'DB_USERNAME' + db-password-key: + description: 'Key for DB_PASSWORD in Secret' + required: false + default: 'DB_PASSWORD' runs: using: "composite" @@ -25,10 +50,16 @@ runs: - name: Prepare teardown-schema job env: JOB_NAME: "drop-schema-preview-${{ inputs.preview-number }}" - CONFIGMAP_NAME: "${{ inputs.deployment-name }}-environments" + CONFIGMAP_NAME: "${{ inputs.configmap-name }}" SECRET_NAME: "${{ inputs.secret-name }}" PREVIEW_SCHEMA_NAME: "preview_${{ inputs.preview-number }}" POSTGRES_IMAGE: "${{ inputs.postgres-image }}" + DB_HOST_KEY: "${{ inputs.db-host-key }}" + DB_PORT_KEY: "${{ inputs.db-port-key }}" + DB_NAME_KEY: "${{ inputs.db-name-key }}" + DB_SCHEMA_KEY: "${{ inputs.db-schema-key }}" + DB_USERNAME_KEY: "${{ inputs.db-username-key }}" + DB_PASSWORD_KEY: "${{ inputs.db-password-key }}" run: | envsubst ' $JOB_NAME @@ -36,6 +67,12 @@ runs: $SECRET_NAME $PREVIEW_SCHEMA_NAME $POSTGRES_IMAGE + $DB_HOST_KEY + $DB_PORT_KEY + $DB_NAME_KEY + $DB_SCHEMA_KEY + $DB_USERNAME_KEY + $DB_PASSWORD_KEY ' < ${{ github.action_path }}/job-template.yml > job-teardown-schema.yml echo "Prepared job manifest: job-teardown-schema.yml" diff --git a/teardown-postgres-preview-schema/job-template.yml b/teardown-postgres-preview-schema/job-template.yml index e61de85..0456153 100644 --- a/teardown-postgres-preview-schema/job-template.yml +++ b/teardown-postgres-preview-schema/job-template.yml @@ -33,29 +33,29 @@ spec: valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_HOST + key: ${DB_HOST_KEY} - name: PGPORT valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_PORT + key: ${DB_PORT_KEY} - name: PGDATABASE valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_NAME + key: ${DB_NAME_KEY} - name: PGSCHEMA valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_SCHEMA + key: ${DB_SCHEMA_KEY} - name: PGUSER valueFrom: configMapKeyRef: name: ${CONFIGMAP_NAME} - key: DB_USERNAME + key: ${DB_USERNAME_KEY} - name: PGPASSWORD valueFrom: secretKeyRef: name: ${SECRET_NAME} - key: DB_PASSWORD + key: ${DB_PASSWORD_KEY}