Transfer files using rsync
This commit is contained in:
parent
da7be50183
commit
0ae435d08b
3 changed files with 99 additions and 0 deletions
23
Dockerfile
Normal file
23
Dockerfile
Normal file
|
@ -0,0 +1,23 @@
|
|||
# hadolint ignore=DL3007
|
||||
FROM debian:stable
|
||||
|
||||
LABEL "maintainer"="L3D <l3d@c3woc.de>"
|
||||
|
||||
# hadolint ignore=DL3008,DL3013
|
||||
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
||||
apt-utils \
|
||||
openssh-client \
|
||||
software-properties-common \
|
||||
build-essential \
|
||||
locales \
|
||||
rsync \
|
||||
keychain \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# Fix potential UTF-8 errors
|
||||
RUN locale-gen en_US.UTF-8
|
||||
|
||||
COPY rsync-docker.sh /rsync-docker.sh
|
||||
ENTRYPOINT ["/rsync-docker.sh"]
|
41
action.yml
Normal file
41
action.yml
Normal file
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
name: Deploy Files to Webserver using rsync
|
||||
description: Deploy files using rsync and ssh with the debian:stable docker container
|
||||
author: L3D <l3d@c3woc.de>
|
||||
|
||||
inputs:
|
||||
source:
|
||||
description: |
|
||||
Which file, files or folders should be transfered?
|
||||
Enter the filepath.
|
||||
required: true
|
||||
destionation:
|
||||
description: |
|
||||
Where does the files go?
|
||||
Destination filepath on webserver.
|
||||
required: true
|
||||
host:
|
||||
description: |
|
||||
Destination Server.
|
||||
IP or FQDN please.
|
||||
required: true
|
||||
user:
|
||||
description: |
|
||||
Destination User
|
||||
required: true
|
||||
sshkey:
|
||||
description: |
|
||||
SSH Private Key (ED25519)
|
||||
required: true
|
||||
runs:
|
||||
using: docker
|
||||
image: Dockerfile
|
||||
env:
|
||||
SOURCE: ${{ inputs.source }}
|
||||
DESTINATION: ${{ inputs.destionation }}
|
||||
HOST: ${{ inputs.host }}
|
||||
USER: ${{ inputs.user }}
|
||||
SSHKEY: ${{ inputs.sshkey }}
|
||||
branding:
|
||||
icon: 'upload-cloud'
|
||||
color: 'yellow'
|
35
rsync-docker.sh
Executable file
35
rsync-docker.sh
Executable file
|
@ -0,0 +1,35 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
set -x
|
||||
|
||||
# Generates client.
|
||||
# env:
|
||||
# SOURCE: ${{ inputs.source }}
|
||||
# DESTINATION: ${{ inputs.destionation }}
|
||||
# HOST: ${{ inputs.host }}
|
||||
# USER: ${{ inputs.user }}
|
||||
# SSHKEY: ${{ inputs.sshkey }}
|
||||
|
||||
rsync::ssh() {
|
||||
: "${SSHKEY?Please provide a SSH Private Key (ED25519).}"
|
||||
: "${GITHUB_WORKSPACE?GITHUB_WORKSPACE has to be set. Did you use the actions/checkout action?}"
|
||||
pushd "${GITHUB_WORKSPACE}"
|
||||
mkdir ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
echo "${SSHKEY}" | tee ~/.ssh/id_ed25519 > /dev/null
|
||||
chmod 400 ~/.ssh/id_ed25519
|
||||
eval $(keychain --eval --quiet id_ed25519)
|
||||
}
|
||||
|
||||
rsync::transfer() {
|
||||
: "${GITHUB_WORKSPACE?GITHUB_WORKSPACE has to be set. Did you use the actions/checkout action?}"
|
||||
: "${SOURCE?Define File to copy.}"
|
||||
: "${DESTINATION?Define File destination.}"
|
||||
: "${HOSTS?Destination Server}"
|
||||
: "${USER?Destination User}"
|
||||
pushd "${GITHUB_WORKSPACE}"
|
||||
rsync --progress ${SOURCE} ${USER}@${HOSTS}:${DESTINATION}
|
||||
}
|
||||
|
||||
rsync::ssh
|
Loading…
Reference in a new issue