2019-09-26 00:24:25 +03:00
# ssh deployments
2019-02-09 16:17:45 +03:00
2019-10-03 01:51:32 +03:00
Deploy code with rsync over ssh, using NodeJS.
NodeJS version is more than a minute `faster` than simple Docker version.
2019-12-29 17:36:34 +03:00
This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh, using NodeJS.
2019-02-09 16:17:45 +03:00
2019-09-26 00:24:25 +03:00
This action would usually follow a build/test action which leaves deployable code in `GITHUB_WORKSPACE` , eg `dist` ;
2019-02-09 16:17:45 +03:00
2019-09-26 00:52:29 +03:00
# Configuration
2019-02-09 16:17:45 +03:00
2019-09-26 00:52:29 +03:00
Pass configuration with `env` vars
2019-02-09 16:17:45 +03:00
2019-10-03 01:17:19 +03:00
1. `SSH_PRIVATE_KEY` [required]
2019-10-03 01:51:32 +03:00
2019-09-26 00:52:29 +03:00
This should be the 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.
2019-02-09 16:17:45 +03:00
2019-12-29 17:36:34 +03:00
2. `REMOTE_HOST` [required]
2019-10-03 01:51:32 +03:00
eg: mydomain.com
2019-12-29 17:36:34 +03:00
3. `REMOTE_USER` [required]
2019-10-03 01:17:19 +03:00
2019-10-03 01:51:32 +03:00
eg: myusername
2019-12-29 17:36:34 +03:00
3. `REMOTE_PORT` (optional, default '22')
eg: '59184'
2019-10-03 01:51:32 +03:00
2. `ARGS` (optional, default '-rltgoDzvO')
2019-09-26 00:52:29 +03:00
For any initial/required rsync flags, eg: `-avzr --delete`
2019-02-09 16:17:45 +03:00
2019-10-03 01:17:19 +03:00
3. `SOURCE` (optional, default '')
2019-10-03 01:51:32 +03:00
2019-10-03 01:17:19 +03:00
The source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/`
2019-02-09 16:17:45 +03:00
2019-10-03 01:17:19 +03:00
4. `TARGET` (optional, default '/home/REMOTE_USER/')
2019-10-03 01:51:32 +03:00
2019-10-03 01:17:19 +03:00
The target directory
2019-02-09 16:17:45 +03:00
2019-10-03 01:51:32 +03:00
# Usage
2019-09-26 00:24:25 +03:00
2019-09-26 00:52:29 +03:00
```
2019-10-03 01:17:19 +03:00
- name: Deploy to Staging server
2020-01-08 17:41:02 +03:00
uses: easingthemes/ssh-deploy@v2.0.7
2019-10-03 01:17:19 +03:00
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
2019-10-03 01:51:32 +03:00
ARGS: "-rltgoDzvO"
2019-10-03 01:17:19 +03:00
SOURCE: "dist/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
2019-09-26 00:52:29 +03:00
```
2019-02-09 16:17:45 +03:00
2019-10-03 01:17:19 +03:00
# Example usage in workflow
2019-02-09 16:17:45 +03:00
```
2019-09-26 00:52:29 +03:00
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
2019-10-03 01:17:19 +03:00
- name: Install Node.js
2019-09-26 00:52:29 +03:00
uses: actions/setup-node@v1
with:
2019-10-03 01:17:19 +03:00
node-version: '10.x'
2019-09-26 00:52:29 +03:00
- name: Install npm dependencies
2019-10-03 01:17:19 +03:00
run: npm install
2019-09-26 00:52:29 +03:00
- name: Run build task
2019-10-03 01:17:19 +03:00
run: npm run build --if-present
- name: Deploy to Server
2020-01-08 17:41:02 +03:00
uses: easingthemes/ssh-deploy@v2.0.7
2019-10-03 01:17:19 +03:00
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 }}
2019-02-09 16:17:45 +03:00
```
## Disclaimer
2019-12-29 17:36:34 +03:00
If you're using GitHub Actions, you'll probably already know that it's still in limited public beta, and GitHub advise against using Actions in production.
2019-02-09 16:17:45 +03:00
2019-12-29 17:36:34 +03:00
So, check your keys. Check your deployment paths. And use at your own risk.