From fdca16a66ee8b49095c419470cad2f013e40703a Mon Sep 17 00:00:00 2001 From: Chinthaka Date: Thu, 9 Oct 2025 12:20:42 +0530 Subject: [PATCH] Signed-off-by: Chinthaka --- .github/workflows/drawer_prod_ci_cd.yml | 180 ++++++++++++------------ 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/.github/workflows/drawer_prod_ci_cd.yml b/.github/workflows/drawer_prod_ci_cd.yml index 8c4b4ba..47f7157 100644 --- a/.github/workflows/drawer_prod_ci_cd.yml +++ b/.github/workflows/drawer_prod_ci_cd.yml @@ -49,93 +49,93 @@ jobs: # - 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 + 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