# ssh deployments Deploy code with rsync over ssh, using NodeJS. NodeJS version is more than a minute `faster` than simple Docker version. This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh, using NodeJS. This action would usually follow a build/test action which leaves deployable code in `GITHUB_WORKSPACE`, eg `dist`; # Configuration Pass configuration with `env` vars ##### 1. `SSH_PRIVATE_KEY` [required] Private key part of an SSH key pair. The public key part should be added to the `authorized_keys` file on the server that receives the deployment. More info for SSH keys: https://www.ssh.com/ssh/public-key-authentication The keys should be generated using the PEM format. You can use this command ``` ssh-keygen -m PEM -t rsa -b 4096 ``` ##### 2. `REMOTE_HOST` [required] eg: mydomain.com ##### 3. `REMOTE_USER` [required] eg: myusername ##### 4. `REMOTE_PORT` (optional, default '22') eg: '59184' ##### 5. `ARGS` (optional, default '-rltgoDzvO') For any initial/required rsync flags, eg: `-avzr --delete` ##### 6. `SOURCE` (optional, default '') The source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/` ##### 7. `TARGET` (optional, default '/home/REMOTE_USER/') The target directory # Usage !!! Please use latest version, Readme file is just an example, eg: ssh-deploy@v2.1.15 ``` - name: Deploy to Staging server uses: easingthemes/ssh-deploy@v2.1.15 env: SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} ARGS: "-rltgoDzvO" SOURCE: "dist/" REMOTE_HOST: ${{ secrets.REMOTE_HOST }} REMOTE_USER: ${{ secrets.REMOTE_USER }} TARGET: ${{ secrets.REMOTE_TARGET }} ``` # Example usage in workflow ``` name: Node CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Install Node.js uses: actions/setup-node@v1 with: node-version: '10.x' - name: Install npm dependencies run: npm install - name: Run build task run: npm run build --if-present - name: Deploy to Server uses: easingthemes/ssh-deploy@v2.1.15 env: SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} ARGS: "-rltgoDzvO --delete" SOURCE: "dist/" REMOTE_HOST: ${{ secrets.REMOTE_HOST }} REMOTE_USER: ${{ secrets.REMOTE_USER }} TARGET: ${{ secrets.REMOTE_TARGET }} ``` ## Disclaimer Check your keys. Check your deployment paths. And use at your own risk.