Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Files not deleted from remote server when deleted in repo #108

Open
ravewebdev opened this issue Oct 21, 2024 · 3 comments
Open

Files not deleted from remote server when deleted in repo #108

ravewebdev opened this issue Oct 21, 2024 · 3 comments

Comments

@ravewebdev
Copy link

Describe the bug
The workflow does not delete files/folders from the server when they're deleted in the repo. This has caused builds to fail when a folder containing PHP classes was replaced with a renamed folder in the repo, with the error "PHP Fatal error: Cannot declare class..." as it detected duplicate classes, despite the fact that in the repo the classes were actually unique. To fix the issue, we had to SFTP into the server and manually delete the old files. This should not be necessary.

To reproduce

  1. Add new file, commit and push to remote.
  2. Delete that file, commit and push to remote.

The file will be deleted from the repo but not from the server.

deploy workflow for reference:

name: Develop

on:
  push:
    branches:
      - develop

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: |
          git fetch --prune --unshallow

    - name: GitHub Action for WP Engine Git Deployment
      uses: wpengine/github-action-wpe-site-deploy@v3
      env:
        WPE_ENV: '<dev-install>'
        WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPENGINE_SSH_KEY_PRIVATE }}

Expected behavior

Files deleted from the repo should be deleted from the server as well.

Version information

  • Action version: 3.2.6
  • Git version: 2.45.2
  • WordPress version: 6.6.2
  • Operating system: MacOS Sequoia 15.0.1
@apmatthews
Copy link
Member

Hi @ravewebdev 👋🏻

Correct, the action defaults to a non-destructive deploy. This is the intended behavior. If you'd like to make your deploy destructive, please check out the FLAGS deploy option for information on using the --delete rsync flag.

@groenroos
Copy link

Please take care to note that the --delete flag will destroy everything relative to REMOTE_PATH, not just files related to your GitHub repo. It will not take .gitignore or WP Engine's built-in exclusions into account.

So for instance, you do not want to use this in a situation where your repo is structured to represent the WP root (rather than a specific plugin or theme folder):

- name: GitHub Action Deploy to WP Engine
  uses: wpengine/github-action-wpe-site-deploy@v3
  with:
    WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }}
    WPE_ENV: <your_install_name_here>
    SRC_PATH: "dist/"
    REMOTE_PATH: "/"
    FLAGS: -azvr --inplace --delete

The above configuration will delete all of WordPress from your remote, including user uploads.

@ravewebdev
Copy link
Author

@groenroos thanks for noting that. We discovered that already when testing (which is why we intentionally spun up a new testing site to avoid breaking anything active), so it's good to know that wasn't a bug/error on our part.

@apmatthews given that the --delete flag wipes out the entire root directory, not just the files deleted via git, what are our options? Is there a way to configure the workflow to only delete files we indicate should be deleted? Or do we really have to SFTP into the site every time we want to delete a file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants