Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 69 additions & 2 deletions .github/workflows/smoke-test.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,34 @@
name: FT Smoke Test
env:
Base_url: ${{ vars.BASE_URL }}
Users__0__Guid: ${{ secrets.USER_1_GUID }}
Users__0__User: ${{ secrets.USER_1_USERNAME }}
Users__0__Password: ${{ secrets.USER_1_PASSWORD }}
Users__1__Guid: ${{ secrets.USER_2_GUID }}
Users__1__User: ${{ secrets.USER_2_USERNAME }}
Users__1__Password: ${{ secrets.USER_2_PASSWORD }}
OPENSHIFT_SERVER: ${{ secrets.OPENSHIFT_SERVER }}
# service account: gitaction
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
npm_config_ignore_scripts: true
TARGET_ENVIRONMENT: ${{ github.event.inputs.target_environment || 'dev' }}
TARGET_NAMESPACE: ${{ (github.event.inputs.target_environment || 'dev') == 'uat' && '3cd915-test' || '3cd915-dev' }}
TARGET_DB_NAME: ${{ (github.event.inputs.target_environment || 'dev') == 'dev' && 'PIMS_DEV' || (github.event.inputs.target_environment || 'dev') == 'test' && 'PIMS_TST' || 'PIMS_UAT' }}
TARGET_SERVER_NAME: ${{ (github.event.inputs.target_environment || 'dev') == 'uat' && 'sqlprd.th.gov.bc.ca' || 'sqldevtst.th.gov.bc.ca' }}
TARGET_DB_SECRET_NAME: ${{ (github.event.inputs.target_environment || 'dev') == 'dev' && 'pims-database' || (github.event.inputs.target_environment || 'dev') == 'test' && 'pims-database-test' || 'pims-database-uat' }}
TARGET_GIT_BRANCH: ${{ (github.event.inputs.target_environment || 'dev') == 'uat' && 'test' || 'dev' }}
on:
workflow_dispatch
workflow_dispatch:
inputs:
target_environment:
description: "Target environment"
required: true
type: choice
options:
- dev
- test
- uat
default: dev
#push:
# branches: [master, dev, test]
#pull_request:
Expand All @@ -26,7 +47,7 @@ jobs:
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

- name: Setup Node.js
uses: actions/setup-node@49933ea5f5257e8e3239177f8295fda8298b857f # v4
uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v4
with:
node-version: "20"

Expand All @@ -38,3 +59,49 @@ jobs:

- name: 🚀 Run Cucumber Smoke Tests
run: npx cucumber-js --tags @smokeTest

# the command:
# 1) creates an openshift job with generated name to avoid name conflict, substituting the variables in the template.
# 2) greps the generated name from the previous step.
# 3) waits for the job to complete using the generated name.
database-clean-1:
name: clean database of test user GUID
needs: [smoke-test]
runs-on: ubuntu-22.04
steps:
- name: Checkout Source Code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Login to OpenShift
uses: redhat-actions/oc-login@5eb45e848b168b6bf6b8fe7f1561003c12e3c99d # v1.3
with:
openshift_server_url: ${{ env.OPENSHIFT_SERVER }}
openshift_token: ${{ env.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TARGET_NAMESPACE }}
- name: call scripts to clean database
shell: bash
run: |
JOB_NAME=$(oc process -f ./openshift/4.0/templates/jobs/db-clean-guid.yaml -p DB_SECRET_NAME=${{ env.TARGET_DB_SECRET_NAME }} -p GIT_BRANCH=${{ env.TARGET_GIT_BRANCH }} -p SERVER_NAME=${{ env.TARGET_SERVER_NAME }} -p DB_NAME=${{ env.TARGET_DB_NAME }} -p NAMESPACE=${{ env.TARGET_NAMESPACE }} -p TEST_USER_GUID=${{ env.Users__0__Guid }} | oc create -f - | grep -oP "(?<=job\.batch/)[^\s]*")
oc wait --for=condition=complete job/$JOB_NAME --timeout=300s
oc get pods -o custom-columns=POD:.metadata.name --no-headers | grep -Eo $JOB_NAME-[^\s].* | (read POD_NAME; oc logs $POD_NAME)

database-clean-2:
Comment on lines +68 to +88
name: clean database of test user GUID
needs: [smoke-test]
runs-on: ubuntu-22.04
steps:
- name: Checkout Source Code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Login to OpenShift
uses: redhat-actions/oc-login@5eb45e848b168b6bf6b8fe7f1561003c12e3c99d # v1.3
with:
openshift_server_url: ${{ env.OPENSHIFT_SERVER }}
openshift_token: ${{ env.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TARGET_NAMESPACE }}
- name: call scripts to clean database
shell: bash
run: |
JOB_NAME=$(oc process -f ./openshift/4.0/templates/jobs/db-clean-guid.yaml -p DB_SECRET_NAME=${{ env.TARGET_DB_SECRET_NAME }} -p GIT_BRANCH=${{ env.TARGET_GIT_BRANCH }} -p SERVER_NAME=${{ env.TARGET_SERVER_NAME }} -p DB_NAME=${{ env.TARGET_DB_NAME }} -p NAMESPACE=${{ env.TARGET_NAMESPACE }} -p TEST_USER_GUID=${{ env.Users__1__Guid }} | oc create -f - | grep -oP "(?<=job\.batch/)[^\s]*")
oc wait --for=condition=complete job/$JOB_NAME --timeout=300s
oc get pods -o custom-columns=POD:.metadata.name --no-headers | grep -Eo $JOB_NAME-[^\s].* | (read POD_NAME; oc logs $POD_NAME)
Comment on lines +89 to +107
77 changes: 77 additions & 0 deletions openshift/4.0/templates/jobs/db-clean-guid.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
kind: Template
apiVersion: template.openshift.io/v1
metadata:
name: db-deploy
annotations:
description: "This template deploys a job to remove all rows created by a target GUID."
tags: "database,clean"
objects:
- kind: Job
apiVersion: batch/v1
metadata:
generateName: db-clean-guid-
namespace: ${NAMESPACE}
spec:
parallelism: 1
backoffLimit: 6
selector:
template:
metadata:
name: db-clean-guid
spec:
containers:
- name: sqlcmd
image: >-
image-registry.apps.silver.devops.gov.bc.ca/3cd915-tools/sqlcmd-mssql:latest
command:
- /bin/bash
- "-c"
- >-
PATH="/opt/mssql-tools/bin:$PATH";
cd /usr/config/psp;
git fetch origin ${GIT_BRANCH};
git reset --hard origin/${GIT_BRANCH};
cd /usr/config/psp/source/database/mssql/scripts/dbscripts;
chmod 777 delete-by-create-user-guid.sh;
./delete-by-create-user-guid.sh;
env:
- name: TEST_USER_GUID
value: ${TEST_USER_GUID}
- name: SERVER_NAME
value: ${SERVER_NAME}
- name: DB_NAME
value: ${DB_NAME}
- name: DB_USER
valueFrom:
secretKeyRef:
name: ${DB_SECRET_NAME}
key: DB_USER
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: ${DB_SECRET_NAME}
key: DB_PASSWORD
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
restartPolicy: Never
parameters:
- name: TEST_USER_GUID
description: the guid of the user to delete content from the database.
required: true
- name: SERVER_NAME
description: The name of the database server
required: true
- name: DB_NAME
description: The name of the database
required: true
- name: NAMESPACE
description: the openshift namespace to run this job in.
required: true
- name: GIT_BRANCH
description: the git branch to pull the database scripts from.
required: true
- name: DB_SECRET_NAME
description: the git branch to pull the database scripts from.
required: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/****** Object: StoredProcedure [dbo].[SafeDeleteByCreateUserGuidStrict] Script Date: 4/20/2026 3:29:59 PM ******/
DROP PROCEDURE [dbo].[SafeDeleteByCreateUserGuidStrict]
GO
Original file line number Diff line number Diff line change
@@ -1,59 +1,28 @@
-- File generated on 04/07/2026 03:36:12 PM.
-- Autogenerated file. Do not manually modify.

:On Error Exit
SET XACT_ABORT ON
SET
XACT_ABORT ON
GO

PRINT ' == DB SCRIPT START ========'
PRINT ' == DB SCRIPT START ========'
GO
BEGIN TRANSACTION PRINT ' == DB TRANSACTION START ========'
GO
--Script section
PRINT '- Executing PSP_PIMS_S121_00/001_PIMS_DELETE_BY_USER_GUID.sql '
:setvar filepath "PSP_PIMS_S121_00/Alter Down/001_PIMS_DELETE_BY_USER_GUID.sql"
:r $(filepath) --End script section
PRINT ' == DB TRANSACTION FINISH ========'
GO
If XACT_STATE() = 1 BEGIN PRINT '- Success: Committing Transaction...' COMMIT TRANSACTION;

BEGIN TRANSACTION
PRINT ' == DB TRANSACTION START ========'
GO

--Script section
END
ELSE IF XACT_STATE() = -1 BEGIN PRINT '- Error: Rolling Back Transaction...' ROLLBACK TRANSACTION;

PRINT '- Executing PSP_PIMS_S120_00/Alter Down/010_PSP_PIMS_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/010_PSP_PIMS_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/020_PIMS_STATIC_VARIABLE_VERSION_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/020_PIMS_STATIC_VARIABLE_VERSION_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/057_DML_PIMS_LEASE_PROGRAM_TYPE_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/057_DML_PIMS_LEASE_PROGRAM_TYPE_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/093_DML_PIMS_ACQ_FL_TEAM_PROFILE_TYPE_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/093_DML_PIMS_ACQ_FL_TEAM_PROFILE_TYPE_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/144_DML_PIMS_DSP_FL_TEAM_PROFILE_TYPE_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/144_DML_PIMS_DSP_FL_TEAM_PROFILE_TYPE_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/164_DML_PIMS_LL_TEAM_PROFILE_TYPE_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/164_DML_PIMS_LL_TEAM_PROFILE_TYPE_Alter_Down.sql"
:r $(filepath)
PRINT '- Executing PSP_PIMS_S120_00/Alter Down/167_DML_PIMS_MANAGEMENT_FILE_PROFILE_TYPE_Alter_Down.sql '
:setvar filepath "PSP_PIMS_S120_00/Alter Down/167_DML_PIMS_MANAGEMENT_FILE_PROFILE_TYPE_Alter_Down.sql"
:r $(filepath)
END;

--End script section
ELSE IF XACT_STATE() = 0 BEGIN PRINT '- Error: No pending transactions...' ROLLBACK TRANSACTION;

PRINT ' == DB TRANSACTION FINISH ========'
GO
END;

If XACT_STATE()=1
BEGIN
PRINT '- Success: Committing Transaction...'
COMMIT TRANSACTION;
END
ELSE IF XACT_STATE()=-1
BEGIN
PRINT '- Error: Rolling Back Transaction...'
ROLLBACK TRANSACTION;
END;
ELSE IF XACT_STATE()=0
BEGIN
PRINT '- Error: No pending transactions...'
ROLLBACK TRANSACTION;
END;
GO
GO
Loading