diff --git a/.github/workflows/development_pr_validation.yml b/.github/workflows/development_pr_validation.yml
new file mode 100644
index 0000000..12a1f40
--- /dev/null
+++ b/.github/workflows/development_pr_validation.yml
@@ -0,0 +1,37 @@
+name: PR Validator
+
+on:
+ pull_request:
+ types: [ opened, synchronize, reopened ]
+ branches:
+ - main
+ - '*-prod'
+
+jobs:
+ validate-jdbc-data-sources:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Verify JDBC Data Sources in persistence.xml
+ run: |
+ grep -q '${JDBC_DATASOURCE}' src/main/resources/META-INF/persistence.xml
+
+ validate-compilation:
+ needs: validate-jdbc-data-sources
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 8
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: '8'
+
+ - name: Compile with Maven
+ run: mvn clean compile
diff --git a/.github/workflows/drawer_prod_ci_cd.yml b/.github/workflows/drawer_prod_ci_cd.yml
new file mode 100644
index 0000000..8c4b4ba
--- /dev/null
+++ b/.github/workflows/drawer_prod_ci_cd.yml
@@ -0,0 +1,141 @@
+name: Drawer Prod Build & Deployment Pipeline
+
+on:
+ push:
+ branches:
+ - drawer-prod
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 8
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: '8'
+
+ - name: Cache Maven Packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+
+ - name: Update JDBC Data Sources in persistence.xml
+ run: |
+ sed -i 's|${JDBC_DATASOURCE}|jdbc/rhdrawer|' src/main/resources/META-INF/persistence.xml
+
+
+ - name: Verify JDBC Data Sources in persistence.xml
+ run: |
+ grep '' src/main/resources/META-INF/persistence.xml
+
+ - name: Build with Maven
+ run: mvn clean package -DskipTests
+
+ - name: Archive Build Artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: build-artifacts
+ path: target/*.war
+ overwrite: true
+
+ # - name: Run Tests
+ # run: mvn test
+
+ # deploy:
+ # needs: build
+ # runs-on: ubuntu-latest
+
+ # steps:
+ # - name: Checkout Code
+ # uses: actions/checkout@v4
+
+ # - name: Download Build Artifact
+ # uses: actions/download-artifact@v4
+ # with:
+ # name: build-artifacts
+ # path: ./
+
+ # - name: Deploy to Payara
+ # env:
+ # SERVER_IP: ${{ secrets.RUHUNU_DRAWER_IP }}
+ # SERVER_USER: ${{ secrets.RUHUNU_DRAWER_USER }}
+ # SSH_PRIVATE_KEY: ${{ secrets.RUHUNU_DRAWER_SSH_PRIVATE_KEY }}
+ # PAYARA_ADMIN_PASS: ${{ secrets.RUHUNU_DRAWER_PAYARA_ADMIN_PASSWORD }}
+ # run: |
+ # # Add SSH private key to the SSH agent
+ # echo "$SSH_PRIVATE_KEY" > private_key.pem
+ # chmod 600 private_key.pem
+
+ # # Variables
+ # WAR_NAME="drawer.war"
+ # WAR_DIR="/home/appuser/app/latest"
+ # APP_NAME="drawer"
+ # SUBDOMAIN="rhdrawer"
+
+ # # Ensure deployment directory exists
+ # ssh -i private_key.pem -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "
+ # mkdir -p $WAR_DIR
+ # chown -R appuser:appuser $WAR_DIR
+ # cd $WAR_DIR
+
+ # # Remove old backup if it exists
+ # if [ -f $WAR_NAME.old ]; then
+ # rm $WAR_NAME.old
+ # fi
+
+ # # If the current WAR file exists, back it up
+ # if [ -f $WAR_NAME ]; then
+ # mv $WAR_NAME $WAR_NAME.old
+ # fi
+ # "
+
+ # # Copy new WAR file to the server
+ # rsync -aL --progress -e "ssh -i private_key.pem" ./*.war $SERVER_USER@$SERVER_IP:$WAR_DIR/$WAR_NAME
+
+ # # Set the WAR file permission
+ # ssh -i private_key.pem -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "
+ # chown appuser:appuser $WAR_DIR/$WAR_NAME
+ # "
+
+ # # Deploy the WAR using asadmin
+ # ssh -i private_key.pem -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "
+ # echo 'AS_ADMIN_PASSWORD=$PAYARA_ADMIN_PASS' > /tmp/payara-admin-pass.txt
+ # /opt/payara5/bin/asadmin --user admin --passwordfile /tmp/payara-admin-pass.txt undeploy $APP_NAME || true
+ # /opt/payara5/bin/asadmin --user admin --passwordfile /tmp/payara-admin-pass.txt deploy --force=true --contextroot $APP_NAME $WAR_DIR/$WAR_NAME
+ # rm /tmp/payara-admin-pass.txt
+ # "
+
+ # # Validate if the application is running
+ # ssh -i private_key.pem -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "
+ # echo 'AS_ADMIN_PASSWORD=$PAYARA_ADMIN_PASS' > /tmp/payara-admin-pass.txt
+ # if /opt/payara5/bin/asadmin --user admin --passwordfile /tmp/payara-admin-pass.txt list-applications | grep -q '$APP_NAME'; then
+ # echo 'Application is running.'
+ # else
+ # echo 'Application failed to start.'
+ # fi
+ # rm /tmp/payara-admin-pass.txt
+ # "
+
+ # # Check if the application is reachable
+ # for i in {1..5}; do
+ # RESPONSE_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://$SUBDOMAIN.carecode.org/$APP_NAME/)
+ # if [ "$RESPONSE_CODE" == "200" ]; then
+ # echo "Application is reachable and healthy."
+ # break
+ # elif [ "$i" == "5" ]; then
+ # echo "Application is not reachable or unhealthy at https://$SUBDOMAIN.carecode.org/$APP_NAME (HTTP $RESPONSE_CODE)"
+ # break
+ # fi
+ # sleep 10
+ # done
+
+ # # Cleanup
+ # rm -f private_key.pem
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
index 8825bb1..d4f1fb6 100644
--- a/src/main/resources/META-INF/persistence.xml
+++ b/src/main/resources/META-INF/persistence.xml
@@ -2,7 +2,7 @@
org.eclipse.persistence.jpa.PersistenceProvider
- jdbc/drawer
+ ${JDBC_DATASOURCE}
false