Hello team !
We are evaluating various managed CICD vendors including Bitbucket pipelines for our deployment. Bitbucket Pipelines has a higher preference in our category as we are already using Bitbucket for our code. Our current provider for CICD pipeline is Jenkins. Please help us with one of our blocker. I will explain our use-case and blocker below.
We have two kind of deployment for our applications for each build -
- Full Deployment : In this we install our package on a fresh Linux machine and decommission the old machine
- Hot Deployment : We copy necessary artifact (jar, war, pkg, dll, executables etc.) in an existing machine at a specific directory to be picked and deployed without restarts
We have been successfully able to migrate our Full Deployment logs to Bitbucket Pipelines which works reasonably fine. However, with the existing constructs, I fail to understand how can I achieve Hot Deployments. Let me share what all I have looked into :
- Try using different steps under an environment. Example :
- step: &Deploy-to-dev
name: '🚀 Deployment - 💻 Dev'
deployment: dev
trigger: manual
script:
- ./full_deployment.sh dev
- step: &HotDeployment-Pkg1-to-dev
name: '⚡️Hot Deploy Pkg1 - 💻 Dev'
deployment: dev
trigger: manual
script:
- ./hot_deploy.sh dev Pkg1
But with this I see following issue
The deployment environment 'dev' in your bitbucket-pipelines.yml file occurs multiple times in the pipeline. Please refer to our documentation for valid environments and their ordering.
- Using Stage concept. However, the issue with the Stage is that one cannot choose what to run and what not to run. It is full or none
Any help on the matter would be greatly appreciated.