Azure Devops PreDefined Variables in JMeter (Blazemeter) - azure-devops

Currently I am integrating using Blazemeter plugin in azure devops for the JMeter script . I have one issue I am trying with different combination to pass the PreDefined variables in azure for JMeter . What I am trying is I am trying to pass the User Defined Variable of JMeter in Azure Pre-Defined Variable . But I am unable to do so . I have tried different combination , following pre-defined document . The reason to do so is . Suppose tomorrow any non technical person just want to run the script by just change the environment at predefined level in azure instead of changing them in JMeter User Defined Variable or you can say by making any change in the script of .jmx . I have tried different combination of integration of predefined . One of the combination i have shared with screenshot . If anyone have any idea please let me know . One more thing in Release.EnvironmentUri I have checked the release because of that I am able to send those value at run time ..
Let me elaborate more Here in this image. I have also shared the plugins I am using. .

I think you need to set an environment variable like below:
And in JMeter's User Defined Variables read the variable value using __groovy() function
${__groovy(System.getenv('Release.EnvironmentUri'),)}
More information: Testing via Azure DevOps Pipeline

Related

Debugging ADF and Databrickswith display dataframes

I have ADF pipelines that calls Azure Databricks notebook. I want to call an ADF pipeline in normal mode(high performance) and then in debug mode.
When in debug mode, I want to display some DFs(Data frames) in databricks. But when run normally DFs should not displayed.
To achieve this I am thinking of sending parameters from ADF (debug=true) and let the display happen in an 'if' condition in databricks notebook. Is this the recommended approach or are there builtin functionlities in databricks or ADF?
If I understand the ask ,you are trying to to capture if the pipeline was initiated in debug mode or scheduled trigger mode . I think you can use the expression
#pipeline().TriggerName .
Atleast when I tested for debug mode it shows the value as "Sanbox" or for scheduled mode you its shows the trigger name which triggered the pipeline .
You can pass this as a parameter to the notebook and put a IF statement to add your logic .
HTH

Question regarding parameter store and Cloud formation integration

I was trying this scenario but I am not able to figure out
I have a name and value in parameter store in SSM, now I am running the CF template from CLI using code pipeline, and I want the CF template take values directly from parameter store and should not prompt
on screen asking me to give the value.
I tried this but it prompt me .
AWS::SSM::Parameter::value
this is prompting when I used to upload a template in screen. how to avoid it and make the script take the value from parameter store directly
You have two choices for that:
Provide a default value for the parameter.
Use ParameterOverrides in your CodePiepline to provide the required value for the parameter.

Azure DevOps - Can we reuse the value of a key in the same variable group?

I have lots of URL values and their keys. But there is no way to batch import the variables and the "value" controls are also not text boxes in the Variables Group page to perform chrome browser extensions assisted find and replace.
If this is possible, what is the syntax to refer to the key?
As in, I have a variable App.URL : www.contoso.com.
I am using the key to substitute value in my next variable like this Login.URL : $(App.URL)\Login and this doesn't work.
GitHub link : https://github.com/MicrosoftDocs/vsts-docs/issues/3902#issuecomment-489694654
This isn't currently available, not sure if it will be. Can you create a task early in your pipeline that sets the variables you need in subsequent tasks/steps? This gives you more control as you can store the script along with your source. You could then use a pipeline variable for the environment you're in and let your script use that to set values appropriately.
See Set variables in scripts in the MS docs.
If it's not possible to re-architect your app to concatenate the url strings in the application, what the previous commenter said about creating a simple script to do that for you would be the way to go. Ie:
#!/bin/bash
#full login url
fullLoginUrl=$APP.URL\$LOGINSUFFIX
echo "##vso[task.setvariable variable=Login.URL]$fullLoginUrl
Otherwise, perhaps playing around with the run time vs compile time variables in YAML pipelines might be worth trying.
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#understand-variable-syntax

VSTS: Built in variable for organization name?

In many of the calls described in the Azure DevOps REST API documentation, I need to supply the name of the organization, e.g.:
https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=5.0-preview.8
The project I can get from System.TeamProject. I would have expected something similar for organization name, something like:
System.TeamFoundationCollectionName
This does not seem to be available. I've even printed out all of my environment variables on the agent and don't see anything that fits the need exactly. Sure, I can parse it out of one of the other values, but this seems fragile since MS seems to like to change the format of URLs.
I also can't hard code the organization name because this release definition will live in multiple organizations and we don't want to have to manually update it for each. How are others solving this problem?
Try using System.TeamFoundationServerUri and System.TeamFoundationCollectionUri to build your API requests. They have the organization included in them.
https://learn.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=vsts&tabs=batch
edit: SYSTEM_TEAMFOUNDATIONSERVERURI/BUILD_PROJECTNAME/_apis/release/releases?api-version=5.0-preview.8
It looks like currently there is no such variable for the organization, also, the variables return the old URL (xxx.visualstudio.com) and not the new URL (dev.azure.com/xxx) so if you use the System.TeamFoundationCollectionName the API should work without the {organization}:
https://System.TeamFoundationCollectionName/{project}/_apis/release/releases?api-version=5.0-preview.8.
In Powershell, do this:
# Where SYSTEM_TEAMFOUNDATIONCOLLECTIONURI=https://some_org_name.visualstudio.com/
([System.Uri]$Env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI).Host.split('.')[-3] # returns 'some_org_name'
Now, just assign that to a variable and use it anywhere you like. "SYSTEM_TEAMPROJECT" is the Project Name, so no need to do any parsing there. It is already available.

Rundeck implicit variable

Run dick gives us the ability to define options to be entered by the its GUI, is there any capability to have job variable based on the input without the end user of the job seeing it?
E.g, if the the user choose the product and the environment and the product behind LB, I want to use a script internally to define new job variable and assign it the port number that could be used later on within the job steps.
Yes, there is.
You can add a new option whith Allowed Values set to Remote URL, then put the URL to your script which will return the actual value based on other options.
For exmaple
http://localhost/cgi-bin/getPort.py?environment=${option.environment.value}&product=${option.product.value}
Rundeck Manual option-model-provider