Calling Node.js Script from Azure CI Pipeline
If you want to run node.js script from azure-pipelines.yml and get the value returned from node.js script and use it in your CI next task. Then read this article. Example: I wanted to get new build number as per my package.json next version by running node script and update my CI pipeline build number.
Introduction
In this article I will show:
- How can you call
build.js
file to create new build number using package.json file & Azure CI pipeline build Id. - Then update Azure CI pipeline build number with the returned new build number.
- Our new build number should be like **
- ** example: **123-main** or **123-feature1**
Creating JavaScript to create new Build Number
Create build.js file and here we will take buildId
and branch-name
as
parameter passed from azure-pipelines.yml
file.
Then we will increase the build id by one and add branch name and use that as new Build Number.
const buildId = process.argv[2];
const sourceBranchName = process.argv[3];
const newVersion = `${+buildId + 1}-${sourceBranchName}`;
console.log(newVersion); //Console Log will return the new version to Azure Pipelines.
๐ Remember when you write value using console log in your node.js script. Then that value will be shared to the azure pipelines.yml file.
Therefore, do not write console log in your script which you donโt want to pass to azure pipeline.
Creating Azure Pipelines file
Note: When you are creating a variable that is scoped within a single task. Then
- use
export
to set a variable - And use
$variable
syntax to access variable value.
In below example we create num
variable and we use $num
to read the value of
the variable.
trigger:
- main
steps:
# calling node.js script
- script: |
export num=$(node ./build.js $(Build.BuildId) $(Build.SourceBranchName))
echo "node.js returned $num"
displayName: 'Executing Node.js script'
Running Azure CI Pipeline
Returning multiple value from Node.js to Azure pipeline
In order to return one value make sure just do single console.log and you will return exactly that value. Just like we did for build number above.
In order to return multiple values to Azure pipeline from node.js script. Donโt write multiple console.logs.
For example if u want to return build and test command to azure pipeline then use below syntax in your node.js script file.
console.log({
build: 'npm run build',
test: 'npm test'
})
Updating the Build Number with new build number given by node.js script
We will use "##vso[build.updatebuildnumber]$newNumber"
script to update build
number.
Add script to update the build number in the Azure pipelines
- script: |
echo "old buildnumber ~>$(Build.BuildNumber)"
export num=$(node ./build.js $(Build.BuildId) $(Build.SourceBranchName))
echo "node.js returned $num"
echo "##vso[build.updatebuildnumber]$num"
displayName: 'Update Build Number'
Add another new script to show the build number.
๐ก Do not show the build number on the same previous task otherwise it will display the old build only. You must create new script to show the updated build number.
- script: echo "new buildnumber ~>$(Build.BuildNumber)"
displayName: 'Display New Build Number'
Updating build number Displaying new build number
Become full stack developer ๐ป
If you want to become full stack developer and grow your carrier as new software developer or Lead Developer/Architect. Consider subscribing to our full stack development training programs. We have All-Access Monthly membership plans and you will get unlimited access to all of our video courses, slides, source code & Monthly video calls.
- Please subscribe to All-Access Membership PRO plan to access current and future angular, node.js and related courses.
- Please subscribe to All-Access Membership ELITE plan to get everything from PRO plan. Additionally, you will get access to monthly live Q&A video call with Rupesh and you can ask doubts/questions and get more help, tips and tricks.
Your bright future is awaiting for you so visit today FullstackMaster and allow me to help you to board on your dream software company as a Developer,Architect or Lead Engineer role.
๐ Say ๐ to me!