this is a github action script for upload files to server via SFTP protocol.
host: 'example.com', # Required.
port: 22, # Optional, Default to 22.
username: 'user', # Required.
password: 'password', # Optional.
privateKey: '', # Optional, your private key(Raw content or key path).
passphrase: '', # Optional.
compress: false, # Optional, compress for ssh connection. Default to false.
localDir: 'dist', # Required, Absolute or relative to cwd.
remoteDir: '/path/to/dest' # Required, Absolute path only.
dryRun: false # Optional. Default to false.
exclude: 'node_modules/,**/*.spec.ts' # Optional. exclude patterns (glob), working on both server-side and client-side like .gitignore, use ',' to split, Default to ''.
forceUpload: false # Optional, Force uploading all files, Default to false(upload only newer files).
removeExtraFilesOnServer: false # Optional, Remove extra files on server. Default to false.
- name: SFTP uploader
uses: wangyucode/[email protected]
with:
host: "wycode.cn"
password: ${{ secrets.password }}
localDir: "dist"
remoteDir: "/data/nginx/www/wycode.cn/"
- name: SFTP uploader
uses: wangyucode/[email protected]
with:
host: "wycode.cn"
privateKey: ${{ secrets.key }}
localDir: "dist"
remoteDir: "/data/nginx/www/wycode.cn/"
name: Upload complete repo (e.g. website) to a SFTP destination
on: [push]
jobs:
Upload-to-SFTP:
runs-on: ubuntu-latest
steps:
- name: 🚚 Get latest code # Checkout the latest code
uses: actions/checkout@v3
- name: 📂 SFTP uploader # Upload to SFTP
uses: wangyucode/[email protected]
with:
host: ${{ secrets.HOST }} # Recommended to put the credentials in github secrets.
username: ${{ secrets.USER }}
password: ${{ secrets.PASSWORD }}
compress: true # Compression
forceUpload: true # Optional, Force uploading all files, Default to false(upload only newer files).
localDir: "." # Required, Absolute or relative to cwd.
remoteDir: "/" # Required, Absolute path only.
exclude: ".git,.DS_Store,**/node_modules" # Optional. exclude patterns (glob) like .gitignore, use ',' to split, Default to ''.
the action will check modifyTime
and upload the newer files if forceUpload
is false.
but you should restore the modified time before uploading.
here is an action that can change the modified time: https://github.com/marketplace/actions/git-restore-mtime
Crane is a simple, fast, and secure tool written in Rust for downloading and deploying your .tar.gz
archive files without the need for server passwords or keys.