Simple GitHub Action to copy a folder or single file to a remote server using SSH. This is working with the latest GitHub Actions.
Copy a folder recursively to a remote server
- name: Copy folder content recursively to remote
uses: garygrossgarten/github-action-scp@release
with:
local: test
remote: scp/directory
host: ${{ secrets.HOST }}
username: ${{ secrets.SSH_USER }}
password: ${{ secrets.PASSWORD }}
Copy a single file to a remote server
- name: Copy single file to remote
uses: garygrossgarten/github-action-scp@release
with:
local: test/oof.txt
remote: scp/single/oof.txt
host: ${{ secrets.HOST }}
username: ${{ secrets.SSH_USER }}
password: ${{ secrets.PASSWORD }}
🔐 Set your secrets here: https://github.com/USERNAME/REPO/settings/secrets
.
Check out the workflow example for a minimalistic yaml workflow in GitHub Actions.
Result
-
local - string - Path to local folder you want to copy. required
-
remote - string - Path to folder to copy the contents to. required
-
concurrency - number - Number of concurrent file transfers. Default:
1
-
recursive - boolean - Copy directory contents recursively. Default:
true
-
verbose - boolean - Output every single file transfer status. Default:
true
-
host - string - Hostname or IP address of the server. Default:
'localhost'
-
port - integer - Port number of the server. Default:
22
-
username - string - Username for authentication. Default: (none)
-
password - string - Password for password-based user authentication. Default: (none)
-
dotfiles - boolean - Include files with a leading
.
e.g..htaccess
Default:false
-
privateKey - mixed - Buffer or string that contains a private key for either key-based or hostbased user authentication (OpenSSH format). Default: (none)
-
passphrase - string - For an encrypted private key, this is the passphrase used to decrypt it. Default: (none)
-
tryKeyboard - boolean - Try keyboard-interactive user authentication if primary user authentication method fails. Default:
false
-
atomicPut - boolean - Upload files to temporary file first, then rename once upload completed. Default:
false
-
rmRemote - boolean - Clean directory before uploading. Default:
false
This thing is build using Typescript and ssh2 (via node-ssh). 🚀