13 Commits

Author SHA1 Message Date
Contention
10f98a8726 Merge pull request #11 from contention/v2-dev
V2 dev
2023-04-09 18:29:30 +01:00
Contention
ac11b74215 Update README.md 2023-03-24 21:27:03 +00:00
Contention
2818ab45e9 Update action.yml 2023-03-24 21:12:03 +00:00
Contention
a51ddb22fb Update entrypoint.sh 2023-03-24 21:09:24 +00:00
Contention
c0b37b3d95 Update entrypoint.sh 2023-03-24 19:40:17 +00:00
Contention
016e24df53 Create action.yml 2023-03-24 18:43:11 +00:00
Contention
e79da04402 Updating to V2 2023-03-24 16:35:32 +00:00
Contention
a0a657cdc1 Tweaked description 2023-03-24 16:23:59 +00:00
Contention
a5bf1cc70f Tweaked description 2023-03-24 16:23:11 +00:00
Contention
862fef3e69 Updated to reflect v2 2023-03-24 16:22:22 +00:00
Contention
b111bee195 Updated description 2023-03-24 16:04:25 +00:00
Contention
891175368a Updated base image 2023-03-24 15:11:50 +00:00
Contention
65ac047ad6 Updated refs in Dockerfile to current url.
Fixes #1
2019-05-13 14:37:48 +01:00
4 changed files with 73 additions and 34 deletions

View File

@@ -1,22 +1,14 @@
FROM debian:9.5-slim
# Update
RUN apt-get update
# Install packages
RUN apt-get -yq install rsync openssh-client
FROM drinternet/rsync:v1.4.3
# Label
LABEL "com.github.actions.name"="rsync deployments"
LABEL "com.github.actions.description"="For deploying code to a webserver via rsync over ssh"
LABEL "com.github.actions.description"="Quick and simple method of deploying code to a webserver via rsync over ssh"
LABEL "com.github.actions.icon"="truck"
LABEL "com.github.actions.color"="yellow"
LABEL "repository"="http://github.com/contention/action-rsync-deploy"
LABEL "homepage"="https://github.com/contention/action-rsync-deploy"
LABEL "repository"="http://github.com/contention/rsync-deployments"
LABEL "homepage"="https://github.com/contention/rsync-deployments"
LABEL "maintainer"="Contention <hello@contention.agency>"

View File

@@ -1,40 +1,56 @@
# rsync deployments
This GitHub Action deploys *everything* in `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.
This GitHub Action deploys files in `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.
This action would usually follow a build/test action which leaves deployable code in `GITHUB_WORKSPACE`.
# Required SECRETs
# Required secrets
This action needs a `DEPLOY_KEY` secret variable. 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.
# Required ARGs
# Required inputs
This action can receive three `ARG`s:
This action requires six inputs:
1. The first is for any initial/required rsync flags, eg: `-avzr --delete`
1. `FLAGS` for any initial/required rsync flags, eg: `-avzr --delete`
2. The second is for any `--exclude` flags and directory pairs, eg: `--exclude .htaccess --exclude /uploads/`. Use "" if none required.
2. `EXCLUDES` for any `--exclude` flags and directory pairs, eg: `--exclude .htaccess --exclude /uploads/`. Use `""` if none required.
3. The third is for the deployment target, and should be in the format: `[USER]@[HOST]:[PATH]`
3. `USER` for the server user, eg: `deploybot`
4. `HOST` for the deployment target, eg: `myserver.com`
5. `LOCALPATH` for the local path to sync, eg: `/dist/`
5. `REMOTEPATH` for the remote path to sync, eg: `/srv/myapp/public/htdocs/`
# Example usage
```
workflow "All pushes" {
on = "push"
resolves = ["Deploy to Staging"]
}
name: Deploy to production
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: contention/rsync-deployments@v2.0.0
with:
FLAGS: -avzr --delete
EXCLUDES: --exclude .htaccess --exclude /uploads/
USER deploybot
HOST: myserver.com
LOCALPATH: /dist/
REMOTEPATH: /srv/myapp/public/htdocs/
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
action "Deploy to Staging" {
uses = "contention/action-rsync-deploy@master"
secrets = ["DEPLOY_KEY"]
args = ["-avzr --delete", "--exclude .htaccess --exclude /uploads/", "user@server.com:/srv/myapp/public/htdocs/"]
}
```
## Disclaimer
## REMINDER!
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.
So, check your keys. Check your deployment paths. And use at your own risk.
Check your keys. Check your deployment paths. Check your flags. And use at your own risk.

31
action.yml Normal file
View File

@@ -0,0 +1,31 @@
name: 'rsync deployments'
description: 'Quick and simple method of deploying code to a webserver via rsync over ssh'
author: 'Contention'
inputs:
flags:
description: 'Initial/required rsync flags'
required: true
excludes:
description: 'Exclude flags and directory pairs'
required: true
user:
description: 'The server user'
required: true
host:
description: 'The deployment target'
required: true
localpath:
description: 'The local path to sync'
required: true
remotepath:
description: 'The remote path to sync'
required: true
deploy_key:
description: 'The private key'
required: true
runs:
using: 'docker'
image: 'Dockerfile'
branding:
icon: 'truck'
color: 'yellow'

View File

@@ -5,9 +5,9 @@ set -eu
# Set deploy key
SSH_PATH="$HOME/.ssh"
mkdir "$SSH_PATH"
echo "$DEPLOY_KEY" > "$SSH_PATH/deploy_key"
echo "$INPUT_DEPLOY_KEY" > "$SSH_PATH/deploy_key"
chmod 600 "$SSH_PATH/deploy_key"
# Do deployment
sh -c "rsync $1 -e 'ssh -i $SSH_PATH/deploy_key -o StrictHostKeyChecking=no' $2 $GITHUB_WORKSPACE/ $3"
sh -c "rsync $INPUT_FLAGS -e 'ssh -i $SSH_PATH/deploy_key -o StrictHostKeyChecking=no' $INPUT_EXCLUDES $GITHUB_WORKSPACE/$INPUT_LOCALPATH $INPUT_USER@$INPUT_HOST:$INPUT_REMOTEPATH"