2019-08-29 00:21:07 -05:00
2019-01-05 00:03:29 -06:00
2019-01-05 00:48:18 -06:00
2019-01-05 00:48:18 -06:00
2019-01-05 00:03:29 -06:00

FTP Deploy for GitHub Actions

Automate deploying websites and more with this GitHub action.

Action

Usage (Your_Project/.github/workflows/push.yaml)

on: push
name: Publish Website
jobs:
  fTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@master
      env:
        FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}
        FTP_SERVER: ${{ secrets.FTP_SERVER }}
        FTP_USERNAME: ${{ secrets.FTP_USERNAME }}
  1. Select the repository you want to add the action to
  2. Select the actions tab (currently only for beta testers)
  3. Select Blank workflow file or Set up a workflow yourself, if you don't see these options manually create a yaml file Your_Project/.github/workflows/push.yaml
  4. Paste the above code into your file and save
  5. Now you need to add a few keys to the secrets section in your project, the following are required at a minimum. To add a secret go to the Settings tab in your project then select Secrets. Add a new Secret for each of the following
    • FTP_USERNAME
    • FTP_PASSWORD
    • FTP_SERVER
    • (see optional settings below)

Settings

To add a secret go to the Settings tab in your project then select Secrets. Add a new Secret for each of the following

Secret Key Name Required? Example Default Description
FTP_USERNAME Yes git-action@samkirkland.com N/A FTP account username
FTP_PASSWORD Yes CrazyUniquePassword&%123 N/A FTP account password
FTP_SERVER Yes ftp.samkirkland.com N/A FTP server name (you may need to specify a port)
LOCAL_DIR No / The local folder to copy, defaults to root project folder
REMOTE_DIR No / The remote folder to copy to, deafults to root FTP folder (I recommend you configure this on your server side instead of here)

Common Examples

Building and deploying a javascript website

on: push
name: Build and Publish Website
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Project setup
      run: npm install
    - name: Compile javascript
      run: npm run build
    - name : FTP-Deploy
      uses: SamKirkland/FTP-Deploy-Action@master
      env: 
       FTP_SERVER :  ${{ secrets.FTP_SERVER }}
       FTP_PASSWORD :  ${{ secrets.FTP_PASSWORD }}
       FTP_USERNAME :  ${{ secrets.FTP_USERNAME }}

What does this action do exactly?

  • 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

Deprecated main.workflow config (used for beta/legacy apps that haven't been migrated to .yaml workflows yet)

action "FTP-Deploy-Action" {
   uses = "SamKirkland/FTP-Deploy-Action@master"
   secrets = ["FTP_USERNAME", "FTP_PASSWORD", "FTP_SERVER"]
}

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

Description
Languages
TypeScript 100%