question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Incomplete upload (FTPError) resulting in broken production site + action does not fail

See original GitHub issue

What do I do? On push or pull request onto the master branch a job is building the current repository. If the build job succeeds a second job is triggered which uses FTP-Deploy-Action to upload the built ./dist/ folder to my webserver into the ./html/ directory.

Bug Description The upload reliably fails as seen in the action log. It throws three FTPErrors and aborts connection (see example vsftp log below) to the ftp server. Although the upload is incomplete and resulting in a broken deployed build the action doesn’t fail (probably related to #150). This means you wont notice the error until you try to open the broken website and dive into those logs posted below.

My Action Config


on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build:
    name: build
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.15.1]

    defaults:
      run:
        working-directory: ./

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install
      - run: npm run build --if-present
      - run: npm test --if-present
        env:
          CI: true

  web-deploy:
    name: web-deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Get latest code
        uses: actions/checkout@v2.3.2

      - name: Use Node.js 14.15.1
        uses: actions/setup-node@v2-beta
        with:
          node-version: '14.15.1'

      - name: Build Project
        run: |
          npm install
          npm run build

      - name: Sync files
        uses: SamKirkland/FTP-Deploy-Action@4.0.0
        with:
          server: domain_name.com
          username: ${{ secrets.FTP_USER }}
          password: ${{ secrets.FTP_PASSWORD }}
          protocol: ftps
          security: strict
          local-dir: ./dist/
          server-dir: ./html/
          dry-run: false
          log-level: verbose

My Action Log

   # Paste Log here
   # you may want enable verbose logging with   log-level: verbose
----------------------------------------------------------------
🚀 Thanks for using ftp-deploy. Let's deploy some stuff!   
----------------------------------------------------------------
If you found this project helpful, please support it
by giving it a ⭐ on Github --> https://github.com/SamKirkland/FTP-Deploy-Action
or add a badge 🏷️ to your projects readme --> https://github.com/SamKirkland/FTP-Deploy-Action#badge
Creating local state at ./dist/.ftp-deploy-sync-state.json
Local state created
Connected to SERVER_IP:21 (No encryption)
< 220 (vsFTPd 3.0.3)

> AUTH TLS
< 234 Proceed with negotiation.

Control socket is using: TLSv1.3
Login security: TLSv1.3
> USER ***
< 331 Please specify the password.

> PASS ###
< 230 Login successful.

> TYPE I
< 200 Switching to Binary mode.

> STRU F
< 200 Structure set to F.

> OPTS UTF8 ON
< 200 Always in UTF8 mode.

> OPTS MLST type;size;modify;unique;unix.mode;unix.owner;unix.group;unix.ownername;unix.groupname;
< 501 Option not understood.

> PBSZ 0
< 200 PBSZ set to 0.

> PROT P
< 200 PROT now Private.

  changing dir to ./html/
> MKD .
< 550 Create directory operation failed.

> CWD .
< 250 Directory successfully changed.

> MKD html
< 550 Create directory operation failed.

> CWD html
< 250 Directory successfully changed.

  dir changed
Trying to find optimal transfer strategy...
> EPSV
< 229 Entering Extended Passive Mode (|||43408|)

Optimal transfer strategy found.
> RETR .ftp-deploy-sync-state.json
< 550 Failed to open file.

----------------------------------------------------------------
No file exists on the server "./html/.ftp-deploy-sync-state.json" - this much be your first publish! 🎉
The first publish will take a while... but once the initial sync is done only differences are published!
If you get this message and its NOT your first publish, something is wrong.
----------------------------------------------------------------
Local Files:	15
Server Files:	15
----------------------------------------------------------------
Calculating differences between client & server
----------------------------------------------------------------
📁 Create: css
➕ Upload: css/app.530b0f43.css
➕ Upload: css/chunk-vendors.94bc0478.css
➕ Upload: favicon.ico
📁 Create: img
➕ Upload: img/de.69ccebc7.svg
➕ Upload: img/gb.c4cd6642.svg
➕ Upload: img/nk.36cd8266.jpg
➕ Upload: img/Ufer_StVO_1992.svg.36be322b.png
➕ Upload: index.html
📁 Create: js
➕ Upload: js/app.a4068a06.js
➕ Upload: js/app.a4068a06.js.map
➕ Upload: js/chunk-vendors.61fa426d.js
➕ Upload: js/chunk-vendors.61fa426d.js.map
----------------------------------------------------------------
Making changes to 15 files to sync server state
Uploading: 4.33 MB -- Deleting: 0 B -- Replacing: 0 B
----------------------------------------------------------------
creating folder "css/"
  changing dir to css
> MKD css
< 257 "/html/css" created

> CWD css
< 250 Directory successfully changed.

  dir changed
> CDUP
< 250 Directory successfully changed.

  completed
creating folder "img/"
  changing dir to img
> MKD img
< 257 "/html/img" created

> CWD img
< 250 Directory successfully changed.

  dir changed
> CDUP
< 250 Directory successfully changed.

  completed
creating folder "js/"
  changing dir to js
> MKD js
< 257 "/html/js" created

> CWD js
< 250 Directory successfully changed.

  dir changed
> CDUP
< 250 Directory successfully changed.

  completed
uploading "css/app.530b0f43.css"
> EPSV
< 229 Entering Extended Passive Mode (|||47203|)

> STOR css/app.530b0f43.css
< 150 Ok to send data.

Uploading to SERVER_IP:47203 (TLSv1.3)
upload progress for "css/app.530b0f43.css". Progress: 0 bytes of 0 bytes
upload progress for "css/app.530b0f43.css". Progress: 2195 bytes of 2195 bytes
< 226 Transfer complete.

  file uploaded
uploading "css/chunk-vendors.94bc0478.css"
> EPSV
< 229 Entering Extended Passive Mode (|||43239|)

> STOR css/chunk-vendors.94bc0478.css
< 150 Ok to send data.

Uploading to SERVER_IP:43239 (TLSv1.3)
upload progress for "css/chunk-vendors.94bc0478.css". Progress: 0 bytes of 2195 bytes
upload progress for "css/chunk-vendors.94bc0478.css". Progress: 215241 bytes of 217436 bytes
< 226 Transfer complete.

  file uploaded
uploading "favicon.ico"
> EPSV
< 229 Entering Extended Passive Mode (|||47418|)

> STOR favicon.ico
< 150 Ok to send data.

Uploading to SERVER_IP:47418 (TLSv1.3)
upload progress for "favicon.ico". Progress: 0 bytes of 217436 bytes
upload progress for "favicon.ico". Progress: 4286 bytes of 221722 bytes
< 226 Transfer complete.

  file uploaded
uploading "img/de.69ccebc7.svg"
> EPSV
< 229 Entering Extended Passive Mode (|||47173|)

> STOR img/de.69ccebc7.svg
< 150 Ok to send data.

Uploading to SERVER_IP:47173 (TLSv1.3)
upload progress for "img/de.69ccebc7.svg". Progress: 0 bytes of 221722 bytes
upload progress for "img/de.69ccebc7.svg". Progress: 308 bytes of 222030 bytes
< 226 Transfer complete.

  file uploaded
uploading "img/gb.c4cd6642.svg"
> EPSV
< 229 Entering Extended Passive Mode (|||42582|)

> STOR img/gb.c4cd6642.svg
< 150 Ok to send data.

Uploading to SERVER_IP:42582 (TLSv1.3)
upload progress for "img/gb.c4cd6642.svg". Progress: 0 bytes of 222030 bytes
upload progress for "img/gb.c4cd6642.svg". Progress: 495 bytes of 222525 bytes
< 226 Transfer complete.

  file uploaded
uploading "img/nk.36cd8266.jpg"
> EPSV
< 229 Entering Extended Passive Mode (|||41603|)

> STOR img/nk.36cd8266.jpg
< 150 Ok to send data.

Uploading to SERVER_IP:41603 (TLSv1.3)
upload progress for "img/nk.36cd8266.jpg". Progress: 0 bytes of 222525 bytes
upload progress for "img/nk.36cd8266.jpg". Progress: 5575 bytes of 228100 bytes
< 226 Transfer complete.

  file uploaded
uploading "img/Ufer_StVO_1992.svg.36be322b.png"
> EPSV
< 229 Entering Extended Passive Mode (|||45308|)

> STOR img/Ufer_StVO_1992.svg.36be322b.png
< 150 Ok to send data.

Uploading to SERVER_IP:45308 (TLSv1.3)
upload progress for "img/Ufer_StVO_1992.svg.36be322b.png". Progress: 0 bytes of 228100 bytes
upload progress for "img/Ufer_StVO_1992.svg.36be322b.png". Progress: 236519 bytes of 464619 bytes
< 226 Transfer complete.

  file uploaded
uploading "index.html"
> EPSV
< 229 Entering Extended Passive Mode (|||46869|)

> STOR index.html
< 150 Ok to send data.

Uploading to SERVER_IP:46869 (TLSv1.3)
upload progress for "index.html". Progress: 0 bytes of 464619 bytes
upload progress for "index.html". Progress: 864 bytes of 465483 bytes
< 226 Transfer complete.

  file uploaded
uploading "js/app.a4068a06.js"
> EPSV
< 229 Entering Extended Passive Mode (|||41544|)

> STOR js/app.a4068a06.js
< 150 Ok to send data.

Uploading to SERVER_IP:41544 (TLSv1.3)
upload progress for "js/app.a4068a06.js". Progress: 0 bytes of 465483 bytes
upload progress for "js/app.a4068a06.js". Progress: 31280 bytes of 496763 bytes
< 426 Failure reading network stream.

400 level error from server when performing action - retrying...
FTPError: 426 Failure reading network stream.
    at FTPContext._onControlSocketData (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3759:39)
    at TLSSocket.<anonymous> (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3600:44)
    at TLSSocket.emit (events.js:210:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:286:13)
    at TLSSocket.Readable.push (_stream_readable.js:224:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23) {
  name: 'FTPError',
  code: 426
}
Connection closed. This library does not currently handle reconnects
FTPError: 426 Failure reading network stream.
    at FTPContext._onControlSocketData (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3759:39)
    at TLSSocket.<anonymous> (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3600:44)
    at TLSSocket.emit (events.js:210:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:286:13)
    at TLSSocket.Readable.push (_stream_readable.js:224:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23) {
  name: 'FTPError',
  code: 426
}
FTPError: 426 Failure reading network stream.
    at FTPContext._onControlSocketData (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3759:39)
    at TLSSocket.<anonymous> (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/4.0.0/dist/index.js:3600:44)
    at TLSSocket.emit (events.js:210:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:286:13)
    at TLSSocket.Readable.push (_stream_readable.js:224:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23) {
  name: 'FTPError',
  code: 426
}
----------------------------------------------------------------
Time spent hashing:               32 milliseconds
Time spent connecting to server:  1.4 seconds
Time spent deploying:             6.7 seconds (644 kB/second)
  - changing dirs:                940 milliseconds
  - logging:                      69 milliseconds
----------------------------------------------------------------
Total time:                       8.8 seconds
----------------------------------------------------------------

vsftp log

Wed Dec 30 15:24:29 2020 [pid 8693] CONNECT: Client "GITHUB_ACTION_SERVER_IP"
Wed Dec 30 15:24:30 2020 [pid 8692] [FTP_USER] OK LOGIN: Client "GITHUB_ACTION_SERVER_IP"
Wed Dec 30 15:24:31 2020 [pid 8694] [FTP_USER] FAIL MKDIR: Client "GITHUB_ACTION_SERVER_IP", "/."
Wed Dec 30 15:24:31 2020 [pid 8694] [FTP_USER] FAIL MKDIR: Client "GITHUB_ACTION_SERVER_IP", "/html"
Wed Dec 30 15:24:32 2020 [pid 8694] [FTP_USER] FAIL DOWNLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/.ftp-deploy-sync-state.json", 0.00Kbyte/sec
Wed Dec 30 15:24:32 2020 [pid 8694] [FTP_USER] OK MKDIR: Client "GITHUB_ACTION_SERVER_IP", "/html/css"
Wed Dec 30 15:24:33 2020 [pid 8694] [FTP_USER] OK MKDIR: Client "GITHUB_ACTION_SERVER_IP", "/html/img"
Wed Dec 30 15:24:33 2020 [pid 8694] [FTP_USER] OK MKDIR: Client "GITHUB_ACTION_SERVER_IP", "/html/js"
Wed Dec 30 15:24:34 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/css/app.530b0f43.css", 2195 bytes, 3.38Kbyte/sec
Wed Dec 30 15:24:36 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/css/chunk-vendors.94bc0478.css", 215241 bytes, 276.43Kbyte/sec
Wed Dec 30 15:24:36 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/favicon.ico", 4286 bytes, 11.01Kbyte/sec
Wed Dec 30 15:24:37 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/img/de.69ccebc7.svg", 308 bytes, 0.79Kbyte/sec
Wed Dec 30 15:24:38 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/img/gb.c4cd6642.svg", 495 bytes, 1.27Kbyte/sec
Wed Dec 30 15:24:39 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/img/nk.36cd8266.jpg", 5575 bytes, 14.34Kbyte/sec
Wed Dec 30 15:24:40 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/img/Ufer_StVO_1992.svg.36be322b.png", 236519 bytes, 260.59Kbyte/sec
Wed Dec 30 15:24:41 2020 [pid 8694] [FTP_USER] OK UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/index.html", 864 bytes, 2.22Kbyte/sec
Wed Dec 30 15:24:42 2020 [pid 8693] [FTP_USER] DEBUG: Client "GITHUB_ACTION_SERVER_IP", "DATA connection terminated without SSL shutdown. Buggy client! Integrity of upload cannot be asserted."
Wed Dec 30 15:24:42 2020 [pid 8694] [FTP_USER] FAIL UPLOAD: Client "GITHUB_ACTION_SERVER_IP", "/html/js/app.a4068a06.js", 16384 bytes, 31.50Kbyte/sec
Wed Dec 30 15:24:42 2020 [pid 8693] [FTP_USER] DEBUG: Client "GITHUB_ACTION_SERVER_IP", "Control connection terminated without SSL shutdown."

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:8
  • Comments:5

github_iconTop GitHub Comments

1reaction
TimAnthonyAlexandercommented, Feb 23, 2021

No, sadly it didn’t work. @TimAnthonyAlexander

I found a solution for myself, which was using a pre-push hook. There are great scripts that you can use as pre-push hooks that just upload the files via git-ftp, for example.

My script looks like this:

#!/bin/sh
git ftp push
exit 0

And I installed git-ftp and configured it to upload to my ftp server.

0reactions
mfsbocommented, Apr 1, 2021

Same here. Was able to see a folder creation failed on ftp action but the action was marked as successful in github workflow so reports came through as completed successful but ftp was missing some folders which were listed in details of the successful completed ftp task. Some other tasks show warnings and errors if something has failed. It would be good if this task also produced some annotations for warnings like “seems like first upload so sync file created for you at /path/to/sync_file.ext”

Read more comments on GitHub >

github_iconTop Results From Across the Web

Bountysource
Incomplete upload (FTPError) resulting in broken production site + action does not fail.
Read more >
8 Best Ways to Fix Google Drive Incomplete Upload on Android
Are you facing frequent incomplete upload errors from Google Drive on Android? Let's troubleshoot the issue by following the methods in the ...
Read more >
Networking File Transfer Protocol - IBM
Do not attach the FTP server to the rest of your company's Local Area Networks ... Load your public libraries or directories with...
Read more >
Integration Server Messages - Software AG Documentation
The upload service supplied during mobile sync component creation does not exist in the specified namespace. Action. Make sure the service exists within...
Read more >
Untitled
Poly aluminium chloride properties, Broken rib cast, Ct1702t. Mee kuning ... Southend caravan sites, Bas taiping ke kuala kangsar, Sakura doesn't love ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found