# samkirkland/ftp-deploy-action

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/samkirkland-ftp-deploy-action).**

4,809 stars · 424 forks · TypeScript · mit

## Links

- GitHub: https://github.com/SamKirkland/FTP-Deploy-Action
- awesome-repositories: https://awesome-repositories.com/repository/samkirkland-ftp-deploy-action.md

## Topics

`action` `actions` `continuous-deployment` `continuous-integration` `deploy-action` `deployment-automation` `github-actions`

## Description

This is a GitHub Action that automates FTP and FTPS file transfers, enabling continuous deployment directly from a repository. Triggered by code pushes or other repository events, it reads server credentials exclusively from encrypted GitHub Secrets to keep access credentials secure. The action supports both deploying files and previewing what changes would occur before applying them.

Built for reliable synchronization, the action computes a minimal set of upload and deletion operations by comparing the local file tree against the remote directory structure. It transfers files sequentially over a persistent control connection, and its dry-run simulation mode shows the expected changes without executing any network writes. Both FTP and FTPS connections are handled, with support for passive and active modes.

The action covers the full FTP deployment workflow: uploading application files, synchronising local and remote directories, previewing changes before syncing, and deploying static sites. It operates as a self-contained event-triggered execution, receiving all configuration through environment variables.

## Tags

### Networking & Communication

- [FTP File Uploads](https://awesome-repositories.com/f/networking-communication/ftp-clients/ftp-file-uploads.md) — Provides a GitHub Action that uploads application files to a remote server via FTP or FTPS whenever code is pushed. ([source](https://github.com/SamKirkland/FTP-Deploy-Action#readme))
- [FTP Clients](https://awesome-repositories.com/f/networking-communication/ftp-clients.md) — Provides an abstracted FTP/FTPS client handling authentication, encryption, and both passive and active connection modes.

### Part of an Awesome List

- [FTP Automation Tools](https://awesome-repositories.com/f/awesome-lists/devtools/ftp-automation-tools.md) — Automates FTP file uploads as part of a CI/CD pipeline triggered by repository events.
- [Deployment Automation](https://awesome-repositories.com/f/awesome-lists/devops/deployment-automation.md) — Deploys files via FTP.

### Development Tools & Productivity

- [Remote File Synchronization](https://awesome-repositories.com/f/development-tools-productivity/remote-file-synchronization.md) — Keeps a local workspace and a remote server synchronized by transferring changed files via FTPS.
- [Remote File Transfers](https://awesome-repositories.com/f/development-tools-productivity/remote-file-transfers.md) — Automates the secure transfer of files from a repository to a remote host without manual intervention.
- [Sync Previews](https://awesome-repositories.com/f/development-tools-productivity/cloud-file-sync/sync-previews.md) — Simulates sync and reports expected file changes without completing any transfers.
- [Differential Transfer Engines](https://awesome-repositories.com/f/development-tools-productivity/remote-file-transfers/differential-transfer-engines.md) — Computes a minimal set of uploads and deletions by comparing local and remote file trees for efficient synchronization.
- [File Uploads](https://awesome-repositories.com/f/development-tools-productivity/remote-file-transfers/sftp-subsystems/file-uploads.md) — Transfers files one at a time over a persistent FTP control connection for ordered and reliable delivery.

### DevOps & Infrastructure

- [Continuous Deployment](https://awesome-repositories.com/f/devops-infrastructure/continuous-deployment.md) — Provides a GitHub Action for continuous deployment pipelines by syncing file changes to production servers over FTP.
- [Remote Server Synchronization](https://awesome-repositories.com/f/devops-infrastructure/remote-server-synchronization.md) — Synchronizes a local workspace with a remote server's file system using FTP or FTPS as a GitHub Action.
- [Dry-Run Modes](https://awesome-repositories.com/f/devops-infrastructure/dry-run-modes.md) — Provides a dry-run simulation mode to preview which files would be uploaded, updated, or deleted without actually transferring them.
- [Static Site Deployment](https://awesome-repositories.com/f/devops-infrastructure/static-site-deployment.md) — Uploads static site files to a web host via FTP automatically after each Git push.

### Software Engineering & Architecture

- [Preview Synchronization Actions](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/workflow-automation-integrations/ci-cd-integrations/github-actions/preview-synchronization-actions.md) — Simulates file synchronization and displays expected differences without making actual changes.
- [Directory Tree Diffs](https://awesome-repositories.com/f/software-engineering-architecture/recursive-validation-engines/recursive-tree-traversers/file-system-traversers/recursive-directory-traversers/directory-tree-diffs.md) — Computes a minimal set of uploads and deletions by comparing local and remote directory structures.

### User Interface & Experience

- [Deployment Previews](https://awesome-repositories.com/f/user-interface-experience/live-preview-integrations/infrastructure-preview-tools/deployment-previews.md) — Simulates file synchronization and displays expected changes before making any actual modifications. ([source](https://github.com/SamKirkland/FTP-Deploy-Action/blob/master/README.md))
