Initial commit

This commit is contained in:
SamKirkland 2019-01-05 00:48:18 -06:00
parent b6d9340796
commit d1fda48913
5 changed files with 105 additions and 0 deletions

17
Dockerfile Normal file
View File

@ -0,0 +1,17 @@
FROM alpine:latest
LABEL version="1.0.0"
LABEL repository="https://github.com/SamKirkland/FTP-Deploy-Action"
LABEL homepage="https://github.com/SamKirkland/FTP-Deploy-Action"
LABEL maintainer="Sam Kirkland <FTP-Deploy-Action@samkirkland.com>"
LABEL "com.github.actions.name"="FTP Deploy Action"
LABEL "com.github.actions.description"="Deploy your website via FTP"
LABEL "com.github.actions.icon"="upload-cloud"
LABEL "com.github.actions.color"="orange"
RUN apk add lftp
COPY entrypoint.sh /entrypoint.sh
RUN chmod 777 entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

73
README.md Normal file
View File

@ -0,0 +1,73 @@
# FTP Deploy for GitHub Actions
Automate deploying websites and more with this GitHub action.
![Action](images/action.png)
### Usage
```
action "FTP-Deploy-Action" {
uses = "SamKirkland/FTP-Deploy-Action@master"
secrets = ["FTP_USERNAME", "FTP_PASSWORD", "FTP_SERVER"]
}
```
1. Select the repository you want to add the action to
2. Select the actions tab `(currently only for beta testers)`
3. Select `Create a new workflow`
4. Select `Edit new file`
5. Paste the above code into the bottom of the file
6. Go back to the `Visual editor`
7. Click edit on the `FTP-Deploy-Action`
8. In the `secrets` section add the required params
* FTP_USERNAME
* FTP_PASSWORD
* FTP_SERVER
* (see optional settings below)
### Settings
- Options
- __FTP Username__: ${FTP_USERNAME}
- __FTP Password__: ${FTP_PASSWORD}
- __FTP Server__: ${FTP_SERVER}
- __(Optional) Local Dir__: ${LOCAL_DIR}
- __(Optional) Remote Dir__: ${REMOTE_DIR}
- Set actions by editing the action then adding them in the `secrets` section:
- ![Action](images/env.png)
### Explination of steps
- This action is triggered by a `event` on your repo
- A docker image based on `mwienk/docker-lftp` is spun up on github servers
- The docker container compresses your code into a tar.gz file
- The file is then uploaded to the remote server
- The file is then un-zipped
### Debugging locally
###### Instructions for windows
- Install docker for windows
- Open powershell
- Navigate to the repo folder
- Run `docker build --tag action .`
- (Optional) This step is only required when editing entrypoint.sh due to windows editors saving the file with windows line breaks instead of linux line breaks
- Download http://dos2unix.sourceforge.net/
- In another powershell window nagivate to the dos2unix folder /bin
- Run this command every time you modify entrypoint.sh `.\dos2unix.exe "{FULL_PATH_TO_REPO\entrypoint.sh}"`
- Run `docker run action`
###### Instructions for linux
- Please submit a PR for linux instructions :)
### ToDo
- More config options
- Deploy Mode: ${DEPLOY_MODE} `full`|`diffs`
- SSH support
- Switch from lftp to git
Pull Requests Welcome!
### License
----
MIT

15
entrypoint.sh Normal file
View File

@ -0,0 +1,15 @@
#!/bin/sh
# "to avoid continuing when errors or undefined variables are present"
set -eu
echo "Starting FTP Deploy"
echo "Uploading files..."
WDEFAULT_LOCAL_DIR=${LOCAL_DIR:-"."}
WDEFAULT_REMOTE_DIR=${REMOTE_DIR:-"."}
lftp $FTP_SERVER -u $FTP_USERNAME,$FTP_PASSWORD -e "set ftp:ssl-allow no; mirror -R $WDEFAULT_LOCAL_DIR $WDEFAULT_REMOTE_DIR; quit"
echo "FTP Deploy Complete"
exit 0

BIN
images/action.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/env.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB