108 lines
3.7 KiB
Markdown
108 lines
3.7 KiB
Markdown
# Deploy to FTP(S) server from Drone CI
|
|
|
|
[![Docker Stars](https://badgen.net/docker/stars/cschlosser/drone-ftps)](https://hub.docker.com/r/cschlosser/drone-ftps/)
|
|
[![Docker Pulls](https://badgen.net/docker/pulls/cschlosser/drone-ftps)](https://hub.docker.com/r/cschlosser/drone-ftps/)
|
|
[![Docker Build](https://img.shields.io/docker/cloud/build/cschlosser/drone-ftps)](https://hub.docker.com/r/cschlosser/drone-ftps/)
|
|
[![Docker Size](https://badgen.net/docker/size/cschlosser/drone-ftps)](https://hub.docker.com/r/cschlosser/drone-ftps/)
|
|
|
|
## Usage
|
|
|
|
You have to set the username and password for your FTP server in the `FTP_USERNAME` and `FTP_PASSWORD` secret.
|
|
|
|
## Required settings
|
|
|
|
```yaml
|
|
environment:
|
|
FTP_USERNAME:
|
|
from_secret: username
|
|
FTP_PASSWORD:
|
|
from_secret: password
|
|
PLUGIN_HOSTNAME: example.com:21
|
|
```
|
|
|
|
## Optional settings
|
|
|
|
```yaml
|
|
environment:
|
|
PLUGIN_DEST_DIR: /path/to/dest (default /)
|
|
PLUGIN_SRC_DIR: /path/to/dest (default ./)
|
|
PLUGIN_SECURE: true | false (default true)
|
|
PLUGIN_VERIFY: false
|
|
PLUGIN_EXCLUDE: (egrep like pattern matching)
|
|
PLUGIN_INCLUDE: (egrep like pattern matching)
|
|
PLUGIN_CHMOD: true | false (default true)
|
|
PLUGIN_CLEAN_DIR: true | false (default false)
|
|
PLUGIN_ONLY_NEWER: true | false (default false)
|
|
PLUGIN_AUTO_CONFIRM: true | false (default false)
|
|
PLUGIN_SSH_ACCEPT_RSA: true | false (default false)
|
|
PLUGIN_PRE_ACTION: string (default empty)
|
|
PLUGIN_POST_ACTION: string (default empty)
|
|
PLUGIN_DEBUG: true | false (default false)
|
|
```
|
|
### Pre/Post Action
|
|
Pre/Post Action can be used to move files/folders out of the way or execute additional commands on the server before and after the deployment process.
|
|
The `PLUGIN_PRE_ACTION` is executed *before* the `PLUGIN_CLEAN_DIR` (if set).
|
|
The `PLUGIN_POST_ACTION` is executed *after* the ftp "mirror" operation.
|
|
|
|
Multiple Actions can be set, they need to be divided by a semicolon `;` .
|
|
#### Example:
|
|
There is another project's folder ("project2") in a subfolder in the destination directory. We need to move this folder to a temporary location and restore it after the upload completed.
|
|
```yaml
|
|
PLUGIN_CLEAN_DIR: true
|
|
PLUGIN_PRE_ACTION: mv /dest/project2 /temp/project2;
|
|
PLUGIN_POST_ACTION: mv /temp/project2 /dest/project2;
|
|
```
|
|
|
|
### Transfer only newer files
|
|
The setting `PLUGIN_ONLY_NEWER: true` (only transfer newer files) does not mix well with the `PLUGIN_CLEAN_DIR: true` (clean destination directory before transfer).
|
|
|
|
When setting `PLUGIN_ONLY_NEWER: true` parameter to true, make sure to _exclude_ any files/folders that are not present in the source directory, but should be kept on the server.
|
|
#### Example:
|
|
Source folder does not contain an `.env` file, it exists on the remote server and should be kept.
|
|
Also, we do not want to transfer the source's `.git` folder and `.gitignore` file:
|
|
Set `PLUGIN_ONLY_NEWER: true` and `PLUGIN_EXCLUDE: ^\.git/$,^\.gitignore$,^\.env$` environment variables.
|
|
|
|
## Full file example
|
|
|
|
```yaml
|
|
kind: pipeline
|
|
name: default
|
|
|
|
steps:
|
|
- name: master_build
|
|
image: cschlosser/drone-ftps
|
|
environment:
|
|
FTP_USERNAME:
|
|
from_secret: username
|
|
FTP_PASSWORD:
|
|
from_secret: password
|
|
PLUGIN_HOSTNAME: example.com:21
|
|
|
|
PLUGIN_SECURE: false
|
|
PLUGIN_VERIFY: false
|
|
PLUGIN_EXCLUDE: ^\.git/$
|
|
when:
|
|
branch:
|
|
- master
|
|
event:
|
|
- push
|
|
|
|
- name: develop_build
|
|
image: cschlosser/drone-ftps
|
|
environment:
|
|
FTP_USERNAME:
|
|
from_secret: username
|
|
FTP_PASSWORD:
|
|
from_secret: password
|
|
PLUGIN_HOSTNAME: example.com:21
|
|
PLUGIN_DEST_DIR: /develop
|
|
PLUGIN_SECURE: false
|
|
PLUGIN_VERIFY: false
|
|
PLUGIN_EXCLUDE: ^\.git/$
|
|
when:
|
|
branch:
|
|
- develop
|
|
event:
|
|
- push
|
|
```
|