mirror of
https://github.com/ChenjxJames/SFTP-Deploy-Action.git
synced 2025-09-09 19:35:20 +08:00
1. init
This commit is contained in:
15
Dockerfile
Normal file
15
Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
||||
# Container image that runs your code
|
||||
FROM alpine:3.10
|
||||
|
||||
# Copies your code file from your action repository to the filesystem path `/` of the container
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
#Make sure to make you entrypoint.sh file executable:
|
||||
RUN chmod 777 entrypoint.sh
|
||||
|
||||
RUN apk update
|
||||
RUN apk add --no-cache openssh
|
||||
|
||||
|
||||
# Code file to execute when the docker container starts up (`entrypoint.sh`)
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
57
README.md
Normal file
57
README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# SFTP Deploy action
|
||||
|
||||
> Use this action to deploy your files to server using `SSH Private Key`
|
||||
|
||||
> 使用此`action`部署你的项目到服务器上,`仅支持密钥对连接`
|
||||
|
||||
|
||||
## Inputs
|
||||
|
||||
### `username`
|
||||
|
||||
> **Required** sftp username.
|
||||
|
||||
### `server`
|
||||
|
||||
> **Required** sftp server address.
|
||||
|
||||
### `port`
|
||||
|
||||
> sftp srever port , default `22`.
|
||||
|
||||
### `ssh_private_key`
|
||||
|
||||
> **Required** you can copy private_key from your `ssh_private_key.pem file`, keep format, and save at`repo/settings/secrets`
|
||||
|
||||
### `local_path`
|
||||
|
||||
> **Required** `local_path` of you project, if you want put single file:use path like `./myfile`, if you want put directory: use path like `./static/*`, it will put all files under `static` directory. Default to `./*`(will put all files in your repo).
|
||||
|
||||
### `remote_path`
|
||||
> **Required** remote_path
|
||||
|
||||
### `args`
|
||||
> args of sftp cmd, E.g.`-o ConnectTimeout=5`
|
||||
|
||||
|
||||
## Example usage
|
||||
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
deploy_job:
|
||||
runs-on: ubuntu-latest
|
||||
name: deploy
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: deploy file
|
||||
uses: ./ # Uses an action in the root directory
|
||||
with:
|
||||
username: 'root'
|
||||
server: 'your server ip'
|
||||
private_key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
local_path: './static/*'
|
||||
remote_path: '/var/www/app' #make sure dir exist
|
||||
args: '-o ConnectTimeout=5'
|
42
action.yml
Normal file
42
action.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
# action.yml
|
||||
name: 'Deploy file use sftp'
|
||||
description: 'deploy file to your server use sftp'
|
||||
inputs:
|
||||
username:
|
||||
description: 'username'
|
||||
required: true
|
||||
server:
|
||||
description: 'your sftp server'
|
||||
required: true
|
||||
port:
|
||||
description: 'your sftp server port, default to 22'
|
||||
required: true
|
||||
default: "22"
|
||||
ssh_private_key:
|
||||
description: 'you can copy private_key from your *.pem file, keep format'
|
||||
required: true
|
||||
local_path:
|
||||
description: 'will put all file under this path'
|
||||
required: true
|
||||
default: ./*
|
||||
remote_path:
|
||||
description: 'files will copy to under remote_path'
|
||||
required: true
|
||||
default: /
|
||||
|
||||
args:
|
||||
description: 'sftp args'
|
||||
required: false
|
||||
|
||||
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
||||
args:
|
||||
- ${{ inputs.username }}
|
||||
- ${{ inputs.server }}
|
||||
- ${{ inputs.port }}
|
||||
- ${{ inputs.ssh_private_key }}
|
||||
- ${{ inputs.local_path }}
|
||||
- ${{ inputs.remote_path }}
|
||||
- ${{ inputs.args }}
|
24
entrypoint.sh
Normal file
24
entrypoint.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh -l
|
||||
|
||||
#set -e at the top of your script will make the script exit with an error whenever an error occurs (and is not explicitly handled)
|
||||
set -eu
|
||||
|
||||
|
||||
TEMP_SSH_PRIVATE_KEY_FILE='../private_key.pem'
|
||||
TEMP_SFTP_FILE='../sftp'
|
||||
|
||||
# keep string format
|
||||
printf "%s" "$4" >$TEMP_SSH_PRIVATE_KEY_FILE
|
||||
# avoid Permissions too open
|
||||
chmod 600 $TEMP_SSH_PRIVATE_KEY_FILE
|
||||
|
||||
echo 'sftp start'
|
||||
|
||||
# create a temporary file containing sftp commands
|
||||
printf "%s" "put -r $5 $6" >$TEMP_SFTP_FILE
|
||||
#-o StrictHostKeyChecking=no avoid Host key verification failed.
|
||||
sftp -b $TEMP_SFTP_FILE -P $3 $7 -o StrictHostKeyChecking=no -i $TEMP_SSH_PRIVATE_KEY_FILE $1@$2
|
||||
|
||||
echo 'deploy success'
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user