Search code examples
linuxgitcpanel

Issues with the format of .cpanel.yml file when trying to deploy cpanel git repository to directory.


  • I am using a cpanel web administration system.
  • With it i create a git repository.
  • I am able to push my local code to that git repository.

The problem arises when i attempt to deploy the code in the repository to a production directory on my server.

According to cpanel documentation about deployment, in order to deploy, a git repository must contain a .cpanel.yml file which is committed with the following example data:

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/user/public_html/
    - /bin/cp index.html $DEPLOYPATH
    - /bin/cp style.css $DEPLOYPATH

I have tried various different configurations of this file in order to be able to deploy but couldn't get it to work. I cannot find any more documentation or any further develop examples or sample files.

The relevant structure of my linux server is thus:

home/<username>/
    - git/gitrepo/
        - all of the git files and folders
    - public_html/<app_folder>/

I would like to deploy all of the files and folders in the git repository into the public_html/<app_folder>/ directory.

I have tried the following different configurations:

---
deployment:
      tasks:
        - export DEPLOYPATH=/home/<username>/public_html/<app_folder>
        - / $DEPLOYPATH

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/user/public_html/
    - /bin/cp  $DEPLOYPATH

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/user/public_html/
    - / index.html $DEPLOYPATH // Tried just one file to see if would work but it didn't.
---
deployment:
  tasks:
    - export DEPLOYPATH=/home/user/public_html/
    - /bin/cp index.html $DEPLOYPATH // Tried just one file to see if would work but it didn't.

Solution

  • So this is basically a bash script that CPanel runs when you update your repo stored on the server. the layout in your case should be:

    Please remove all "# comments" if you are copying the example or it might not work

    ---
    deployment:
          tasks:
            - export DEPLOYPATH=/home/<username>/public_html/<app_folder>
            - /bin/cp <file_name> $DEPLOYPATH #Copy specific file to destination from root
            - /bin/cp /<sub_folder>/<file_name> $DEPLOYPATH #copy specific file from source sub folder
            - /bin cp * $DEPLOYPATH #copy all from root 
            - /bin cp /<sub_folder>/* $DEPLOYPATH #copy all from sub folder root
    

    So the above should work for you.....but.....

    If you are doing the whole root to destination then here is the one I use to just copy all.

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/<user_name>/public_html #Add /<sub_folder> if required
        - /bin/cp -r * $DEPLOYPATH
    
    • /bin/cp "copy command"
    • -r "recursive include sub folder / files"
    • '*' "all"

    Remember to add /<sub_folder> if you need an app folder other than public_html

    You can get the file from my repo:

    https://github.com/FrancoisGeyser/cPanel-yml.git

    Hope that helps.