diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..19e3ab4ba --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,58 @@ +```yaml +name: Deploy Application + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: self-hosted + + steps: + - name: Checkout GitHub repository + uses: actions/checkout@v4 + + - name: Test SSH connection to Code VM + env: + SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + mkdir -p ~/.ssh + chmod 700 ~/.ssh + + echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + + ssh-keyscan -H 192.168.1.104 >> ~/.ssh/known_hosts + + ssh -i ~/.ssh/deploy_key \ + vboxuser@192.168.1.104 \ + "hostname && echo SSH connection successful" + + - name: Deploy code to Code VM + env: + SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + mkdir -p ~/.ssh + chmod 700 ~/.ssh + + echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + + ssh-keyscan -H 192.168.1.104 >> ~/.ssh/known_hosts + + rsync -avz --delete \ + -e "ssh -i ~/.ssh/deploy_key" \ + ./ \ + vboxuser@192.168.1.104:/opt/my-app/ + + - name: Verify deployment + env: + SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + ssh -i ~/.ssh/deploy_key \ + vboxuser@192.168.1.104 \ + "ls -la /opt/my-app" +``` + diff --git a/package.json b/package.json new file mode 100644 index 000000000..ba9b23156 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "nodejs-website", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "express": "^4.19.2" + } +}