Compare commits

..

36 Commits

Author SHA1 Message Date
Steven Agyekum 23a557dceb Update README.md 2020-06-23 00:08:44 +02:00
Steven Agyekum ea3f2b7314 improve code-formatting 2020-06-22 21:40:12 +02:00
Steven Agyekum 469a77e7aa use actions/checkout@v2 for even faster deployments
The actions/checkout@v2 action uses a checkout depth of 1 by default.
There is no more need to set it manually.
2020-03-27 14:55:02 +01:00
Steven Agyekum 819cb701d2 Update README.md 2020-01-08 20:10:18 +01:00
Steven Agyekum c269e19dd0 Changes in 4.0 2020-01-05 14:47:18 +01:00
Steven Agyekum c39ab06b30 Merge pull request #4 from JoshPiper/feat/rsync-image
Feat/rsync image
2020-01-05 14:40:05 +01:00
JoshPiper 9f59b515f6 Update entrypoint.sh 2020-01-05 11:19:21 +00:00
JoshPiper c5464e03ed Use sh not bash. 2020-01-05 11:11:59 +00:00
JoshPiper 0010c2adf6 Update entrypoint.sh 2020-01-05 11:06:14 +00:00
JoshPiper c6d9be15a7 Update Dockerfile 2020-01-05 11:03:17 +00:00
Steven Agyekum d75a44a646 2020 2019-12-31 16:54:40 +01:00
Steven Agyekum c47cfee594 Version 3.0 - faster deployments
* Feat/new base image
2019-12-27 16:39:11 +01:00
Steven Agyekum 7e62b51e32 Update README.md 2019-12-27 16:37:44 +01:00
Steven Agyekum f8c929a1f4 Update README.md 2019-12-27 16:33:45 +01:00
Steven Agyekum 6a989b68a1 Update README.md 2019-12-27 16:29:01 +01:00
Steven Agyekum 6fa9b56771 Update Dockerfile 2019-12-27 16:14:47 +01:00
Steven Agyekum f5c5431bf6 Update entrypoint.sh 2019-12-27 16:12:10 +01:00
Steven Agyekum 20b1f5b4b8 Update Dockerfile 2019-12-27 16:11:54 +01:00
Steven Agyekum 1bbe8382e5 Update Dockerfile 2019-12-27 16:08:00 +01:00
Steven Agyekum febcb5ac34 Update README.md 2019-12-04 19:11:03 +01:00
Steven Agyekum 682623851b Update README.md 2019-12-04 19:09:24 +01:00
Steven Agyekum 050c29bcea Update README.md 2019-12-04 19:06:58 +01:00
Steven Agyekum 6093fd5ca1 Update README.md 2019-12-04 19:02:32 +01:00
Steven Agyekum 0186c3a6b2 added INPUT_REMOTE_PORT input for different port 2019-12-04 19:00:33 +01:00
Steven Agyekum 2f8edbc7f1 Update README.md 2019-12-04 18:58:49 +01:00
Steven Agyekum d573c19867 Update action.yml 2019-12-04 18:58:23 +01:00
Steven Agyekum 609b9969e2 version 2.0
Feature/version 2.0
2019-12-04 18:50:21 +01:00
Steven Agyekum 1e3e469683 Merge branch 'master' into feature/version-2.0 2019-12-04 18:48:51 +01:00
Steven Agyekum 6b3db75d87 Update README.md 2019-12-04 18:41:36 +01:00
Steven Agyekum c4c3b6821b Update README.md 2019-12-04 18:39:07 +01:00
Steven Agyekum 2f0d5a19fa Update README.md 2019-12-04 18:37:11 +01:00
Steven Agyekum 5536ad8c42 Update README.md 2019-12-04 18:35:52 +01:00
Steven Agyekum e9dd3cdb51 new inputs 2019-12-04 18:31:26 +01:00
Steven Agyekum 72f04677de new inputs and shell 2019-12-04 18:29:34 +01:00
Steven Agyekum 1eb5088cc2 Mention new inputs, added more examples, removed disclaimer 2019-12-04 18:28:33 +01:00
Steven Agyekum 24cfa35ecb remove docker labeling 2019-12-04 18:26:19 +01:00
5 changed files with 136 additions and 62 deletions
+3 -23
View File
@@ -1,27 +1,7 @@
FROM ubuntu:latest
# Update
RUN apt-get update
# Install packages
RUN apt-get -yq install rsync openssh-client
# 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.icon"="truck"
LABEL "com.github.actions.color"="yellow"
LABEL "repository"="https://github.com/Burnett01/rsync-deployments"
LABEL "homepage"="https://github.com/Burnett01/rsync-deployments"
LABEL "maintainer"="Contention <hello@contention.agency> & Burnett01"
FROM drinternet/rsync:1.0.1
# Copy entrypoint
ADD entrypoint.sh /entrypoint.sh
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
ENTRYPOINT ["/entrypoint.sh"]
+2 -2
View File
@@ -1,7 +1,7 @@
MIT License
Copyright (c) 2019 Contention
Copyright (c) 2019 Burnett01
Copyright (c) 2019-2020 Contention
Copyright (c) 2019-2020 Burnett01
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+105 -24
View File
@@ -1,29 +1,40 @@
# rsync deployments
Forked from [Contention/rsync-deployments](https://github.com/Contention/rsync-deployments)
This GitHub Action deploys files in `GITHUB_WORKSPACE` to a remote folder via rsync over ssh.
Use this action in a CD workflow which leaves deployable code in `GITHUB_WORKSPACE`.
This GitHub Action deploys files in `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.
The underlaying base-image of the docker-image is very small (Alpine (no cache)) which results in fast deployments.
Use this action in a build/test workflow which leaves deployable code in `GITHUB_WORKSPACE`.
---
# Required SECRETs
## Inputs
This action needs a `DEPLOY_KEY` secret variable. This should be the private key part of a ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment. This should be set in the Github secrets section and then referenced as an `env` variable.
- `switches`* - The first is for any initial/required rsync flags, eg: `-avzr --delete`
# ARGs
- `rsh` - Remote shell commands
This action requires 4 args in the `with` block.
- `path` - The source path. Defaults to GITHUB_WORKSPACE
1. `swtiches` - The first is for any initial/required rsync flags, eg: `-avzr --delete`
- `remote_path`* - The deployment target path
2. `rsh` - Remote shell commands, eg for using a different SSH port: `"-p ${{ secrets.DEPLOY_PORT }}"`
- `remote_host`* - The remote host
3. `path` - The source path, if none; use `""`
- `remote_port` - The remote port. Defaults to 22
4. `upload_path` - The deployment target, and should be in the format: `[USER]@[HOST]:[PATH]`
- `remote_user`* - The remote user
# Example usage
- `remote_key`* - The remote ssh key
``* = Required``
## Required secret
This action needs a `DEPLOY_KEY` secret variable. This should be the private key part of a ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment. This should be set in the Github secrets section and then referenced as the `remote_key` input.
## Example usage
Simple:
```
name: DEPLOY
@@ -36,22 +47,92 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: rsync deployments
uses: burnett01/rsync-deployments@1.0
uses: burnett01/rsync-deployments@4.1
with:
switches: -avzr --delete --exclude="" --include=""
rsh: "-p ${{ secrets.DEPLOY_PORT }}"
switches: -avzr --delete
path: src/
upload_path: user@example.com:/var/www/html/
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
remote_path: /var/www/html/
remote_host: example.com
remote_user: debian
remote_key: ${{ secrets.DEPLOY_KEY }}
```
## Disclaimer
Advanced:
```
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: rsync deployments
uses: burnett01/rsync-deployments@4.1
with:
switches: -avzr --delete --exclude="" --include="" --filter=""
path: src/
remote_path: /var/www/html/
remote_host: example.com
remote_port: 5555
remote_user: debian
remote_key: ${{ secrets.DEPLOY_KEY }}
```
For better security, I suggest you create additional secrets for remote_host, remote_port and remote_user inputs.
```
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: rsync deployments
uses: burnett01/rsync-deployments@4.1
with:
switches: -avzr --delete
path: src/
remote_path: /var/www/html/
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_port: ${{ secrets.DEPLOY_PORT }}
remote_user: ${{ secrets.DEPLOY_USER }}
remote_key: ${{ secrets.DEPLOY_KEY }}
```
---
## Version 3.0
Looking for version 3.0?
Check here: https://github.com/Burnett01/rsync-deployments/tree/3.0
Version 3.0 uses the ``alpine:latest`` base-image directly.<br>
Consider upgrading to 4.0 that uses a docker-image ``drinternet/rsync:1.0.1`` that is<br>
based on ``alpine:latest``and heavily optimized for rsync.
## Version 2.0
Looking for version 2.0?
Check here: https://github.com/Burnett01/rsync-deployments/tree/2.0
Version 2.0 uses a larger base-image (``ubuntu:latest``).<br>
Consider upgrading to 3.0 for even faster deployments.
## Version 1.0 (EOL)
Looking for version 1.0?
Check here: https://github.com/Burnett01/rsync-deployments/tree/1.0
Please note that version 1.0 has reached end of life state.
---
## Acknowledgements
+ This project is a fork of [Contention/rsync-deployments](https://github.com/Contention/rsync-deployments)
+ Base image [JoshPiper/rsync-docker](https://github.com/JoshPiper/rsync-docker)
If you're using GitHub Actions, you 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.
+14 -1
View File
@@ -13,9 +13,22 @@ inputs:
description: 'The local path'
required: false
default: ''
upload_path:
remote_path:
description: 'The remote path'
required: true
remote_host:
description: 'The remote host'
required: true
remote_port:
description: 'The remote port'
required: false
default: 22
remote_user:
description: 'The remote user'
required: true
remote_key:
description: 'The remote key'
required: true
runs:
using: 'docker'
image: 'Dockerfile'
+12 -12
View File
@@ -1,17 +1,17 @@
#!/bin/sh
# Start the SSH agent and load key.
source agent-start "$GITHUB_ACTION"
echo "$INPUT_REMOTE_KEY" | agent-add
# Add strict errors.
set -eu
# Set deploy key
SSH_PATH="$HOME/.ssh"
# Create .ssh dir if it doesn't exist
if [ ! -d "$SSH_PATH" ]; then
mkdir "$SSH_PATH"
fi
# Place deploy_key into .ssh dir
echo "$DEPLOY_KEY" > "$SSH_PATH/deploy_key"
# Set r+w to user only
chmod 600 "$SSH_PATH/deploy_key"
# Variables.
SWITCHES="$INPUT_SWITCHES"
RSH="ssh -o StrictHostKeyChecking=no -p $INPUT_REMOTE_PORT $INPUT_RSH"
LOCAL_PATH="$GITHUB_WORKSPACE/$INPUT_PATH"
DSN="$INPUT_REMOTE_USER@$INPUT_REMOTE_HOST"
# Do deployment
sh -c "rsync $INPUT_SWITCHES -e 'ssh -i $SSH_PATH/deploy_key -o StrictHostKeyChecking=no $INPUT_RSH' $GITHUB_WORKSPACE/$INPUT_PATH $INPUT_UPLOAD_PATH"
# Deploy.
sh -c "rsync $SWITCHES -e '$RSH' $LOCAL_PATH $DSN:$INPUT_REMOTE_PATH"