This was pretty straight forward since BitBucket has hooks ready for Jenkins.
I usually create 2 Jenkins projects, 1 to build and 1 to deploy.
Jenkins Server
Make sure you have a Jenkins user that can Read Overall and Read Job. I use “Project-based Matrix Authorization Strategy” you can find that under “Configure Global Security”
So I have a user called automated-user and it has Read Overall and Read Job checked. It also has an API Token you will need that you will find here: Jenkins >> Manage Jenkins >> Manage Users >> Select your user, in my case ‘automated-user’ >> Configure >> “Show API Token”. I get eadefe23232121232sdasdfadf as an example.
Build Project
Give the project a name: project-name-build
Source Code Management: Select “Git Repositories” >> Repository URL = https://username@bitbucket.org/username/git-repo.git >> Add credentials & Select it.
Build Triggers: Check, “Trigger builds remotely (e.g., from scripts)” >> Authenticated Token, enter a token SecureRandom.urlsafe_base64 works well for this. Lets say we got this: wtOhS3d4TV1MRX_bVn_lAA
Deploy Project
Source Code Management: Select “Git Repositories” >> Repository URL = https://username@bitbucket.org/username/git-repo.git >> Add credentials & Select it.
Build Triggers: Check, “Build after other projects are built”
BitBucket
Go to: Your Repo >> Settings >> Hooks >> Select Jenkins
Enter:
Endpoint: http://automated-user:eadefe23232121232sdasdfadf@ci-server-address.com
Project Name: project-name-build
Token: wtOhS3d4TV1MRX_bVn_lAA
Save.
You should be good to go minus some settings you’ll need to configure based on your needs.