diff --git a/.gitea/workflows/checks-and-policy.yml b/.gitea/workflows/checks-and-policy.yml index c58c9cd..c7228d5 100644 --- a/.gitea/workflows/checks-and-policy.yml +++ b/.gitea/workflows/checks-and-policy.yml @@ -78,6 +78,63 @@ jobs: yarn build #yarn test --watchAll=false --ci + # Ensure SSH and SCP are installed and functional + - name: Setup SSH and SCP + run: | + set -e + echo "Ensuring SSH and SCP are available..." + if command -v apt >/dev/null 2>&1; then + apt-get update -qq >/dev/null + apt-get install -y -qq openssh-client >/dev/null + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache openssh >/dev/null + elif command -v dnf >/dev/null 2>&1; then + dnf install -y -q openssh-clients >/dev/null + else + echo "No supported package manager found for SSH installation." + exit 1 + fi + echo "SSH and SCP successfully installed:" + ssh -V + scp -V || echo "SCP version info not available but command exists." + + - name: Publish frontend .next build to server + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + SERVER_IP: ${{ vars.SERVER_IP }} + run: | + mkdir -p ~/.ssh + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa + echo "vars.SERVER_IP: $vars.SERVER_IP" + echo "vars.DOMAIN_NAME: $vars.DOMAIN_NAME" + chmod 600 ~/.ssh/id_rsa + ssh -o StrictHostKeyChecking=no root@$SERVER_IP "mkdir -p /var/www/frontend" + scp -o StrictHostKeyChecking=no -r frontend/.next root@$SERVER_IP:/var/www/frontend/ + echo "Frontend artifact copied successfully to $SERVER_IP:/var/www/frontend" + + - name: Publish frontend .next build to Plesk server + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + SERVER_IP: ${{ vars.SERVER_IP }} + DOMAIN_NAME: ${{ vars.DOMAIN_NAME }} # optional, helps locate vhost + run: | + mkdir -p ~/.ssh + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + + echo "Deploying to server: $SERVER_IP" + + #Define Plesk web root (update DOMAIN_NAME in Gitea variables) + WEB_ROOT="/var/www/vhosts/${DOMAIN_NAME}/httpdocs" + + ssh -o StrictHostKeyChecking=no root@$SERVER_IP "mkdir -p $WEB_ROOT/.next" + ssh -o StrictHostKeyChecking=no root@$SERVER_IP "mkdir -p $WEB_ROOT/public/.htaccess" + + #Copy only the .next build folder to the server + scp -o StrictHostKeyChecking=no -r frontend/.next root@$SERVER_IP:$WEB_ROOT/ + + echo "Frontend .next build successfully deployed to $SERVER_IP:$WEB_ROOT/.next" + backend-jobs: name: Set up Java for Backend Tests and Build runs-on: ubuntu-latest diff --git a/.gitea/workflows/demo.yaml b/.gitea/workflows/demo.yaml index d3f1e27..9e89a8e 100644 --- a/.gitea/workflows/demo.yaml +++ b/.gitea/workflows/demo.yaml @@ -72,4 +72,39 @@ jobs: yarn -v - name: Done - run: echo "Workflow finished." \ No newline at end of file + run: echo "Workflow finished." + + #blish-backend-docker-image: + #name: Build and publish backend Docker image to server + #runs-on: ubuntu-latest + #needs: backend-jobs + #steps: + # - name: Checkout repository + # uses: actions/checkout@v4 + # + # - name: Set up Docker + # run: | + # apt-get update -y + # apt-get install -y docker.io + # + # - name: Build Docker image + # run: | + # docker build -t backend-app:latest . + # + # - name: Save Docker image as tarball + # run: docker save backend-app:latest -o backend-app.tar + # + # - name: Copy Docker image to remote server and load it + # env: + # SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + # SERVER_IP: + # run: | + # mkdir -p ~/.ssh + # echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa + # chmod 600 ~/.ssh/id_rsa + # scp -o StrictHostKeyChecking=no backend-app.tar root@$SERVER_IP:/tmp/backend-app.tar + # ssh -o StrictHostKeyChecking=no root@$SERVER_IP " + # docker load -i /tmp/backend-app.tar && + # docker tag backend-app:latest backend-app:latest && + # echo 'Backend Docker image loaded successfully' + # " diff --git a/frontend/public/.htaccess b/frontend/public/.htaccess new file mode 100644 index 0000000..3d5d80c --- /dev/null +++ b/frontend/public/.htaccess @@ -0,0 +1,8 @@ + + RewriteEngine On + RewriteBase / + RewriteRule ^index\.html$ - [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule . /index.html [L] + \ No newline at end of file