I have been trying to wrap my head around how to utilise BitBucket's Pipelines to auto-deploy my (Laravel) application onto a Vultr Server instance.
I have the following steps I do manually, which I am trying to replicate autonomously:
commit my changes and push to BitBucket repossh root@ipaddress cd to the correct directory: cd /var/www/html/app/ pull from my BitBucket repo: git pull origin master composer install, php artisan migrate etc..exit My understanding is that you can use Pipelines to automatise this, is this true?
So far, I have set up a SSH key pair for pipelines and my server, so my server's authorized_keys file contains the public key from BitBucket Pipelines.
My pipelines file bitbucket-pipelines.yml is as follows:
image: atlassian/default-image:latest pipelines: default: - step: deployment: staging caches: - composer script: - ssh root@ipaddress - cd /var/www/html/app/ - git pull origin master - php artisan down - composer install --no-dev --prefer-dist - php artisan cache:clear - php artisan config:cache - php artisan route:cache - php artisan migrate - php artisan up - echo 'Deploy finished.' When the pipeline executes, I get the error: bash: cd: /var/www/html/app/: No such file or directory.
I read that each script step is run in it's own container.
Each step in your pipeline will start a separate Docker container to run the commands configured in the script
The error I get makes sense if it's not executing cd /var/www/html/app within the VPS after logging into it using SSH.
Could someone guide me into the correct direction?
Thanks
Bitbucket Pipelines is an integrated CI/CD service built into Bitbucket. It allows you to automatically build, test, and even deploy your code based on a configuration file in your repository.
The commands you are defining under script are going to be run into a Docker container and not on your VPS.
Instead, put all your commands in a bash file on your server.
1 - Create a bash file pull.sh on your VPS, to do all your deployment tasks
#/var/www/html php artisan down git pull origin master composer install --no-dev --prefer-dist php artisan cache:clear php artisan config:cache php artisan route:cache php artisan migrate php artisan up echo 'Deploy finished.' 2 - Create a script deploy.sh in your repository, like so
echo "Deploy script started" cd /var/www/html sh pull.sh echo "Deploy script finished execution" 3 - Finally update your bitbucket-pipelines.yml file
image: atlassian/default-image:latest pipelines: default: - step: deployment: staging script: - cat ./deploy.sh | ssh <user>@<host> - echo "Deploy step finished" I would recommend to already have your repo cloned on your VPS in /var/www/html and test your pull.sh file manually first.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With