Open BlueInstinct312 opened 4 years ago
@SamuelDeveloper3 are you providing an example, or are you having issues with this endpoint?
This pipeline client is in early preview, and is not documented yet.
I need help figuring out how to specify to DevOps I want my pipeline to run on master branch. It always runs on release.
I keep trying to pass this dictionary into the run_params parameter of pipeline_client.run_pipeline()
run_params = {'branch/tag' : "master"}
from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
#pip install azure-devops
# Fill in with your personal access token and org URL
PERSONAL_ACCESS_TOKEN = ''"
ORGANIZATION_URL = ''"
PROJECT_NAME = ""
def main():
print("Automation script to run pipelines on DevOps.")
run_params = {'branch/tag' : "master"}
build_pipeline("3011", run_params, None)
def create_pipeline_client():
# Get connection from devOps & create pipeline client
credentials = BasicAuthentication('', PERSONAL_ACCESS_TOKEN)
connection = Connection(base_url=ORGANIZATION_URL, creds=credentials)
pipeline_client = pipeline_client = connection.clients_v5_1.get_pipelines_client()
return pipeline_client
def build_pipeline(pipe_id, run_params, pipe_version=None):
pipeline_client = create_pipeline_client()
print(run_params)
print("Running Pipeline with id " + str(pipe_id))
#try:
pipeline_client.run_pipeline(
run_parameters=run_params,
project=PROJECT_NAME,
pipeline_id=pipe_id,
pipeline_version=pipe_version)
print("Pipeline run successfully activated.")
#except Exception as ex:
#print("Pipeline run failed with exception: " + str(ex))
def get_pipeline(pipe_id, pipe_version=None):
pipeline_client = create_pipeline_client()
pipeline = pipeline_client.get_pipeline(
project=PROJECT_NAME,
pipeline_id=pipe_id,
pipeline_version=pipe_version)
print(pipeline)
def list_pipelines():
pipeline_client = create_pipeline_client()
pipeline_list = pipeline_client.list_pipelines(PROJECT_NAME)
for x in dir(pipeline_client):
print(x)
def get_run(pipe_id, runid):
pipeline_client = create_pipeline_client()
run = pipeline_client.get_run(project=PROJECT_NAME, pipeline_id=pipe_id, run_id=runid)
print(run)
# Create a connection to the org
if __name__ == '__main__':
main()
Thanks for all the help!
@SamuelDeveloper3 are you sure the pipeline id 3011 is of build pipeline and not a release pipeline?
I am also trying to use the run_pipeline method to trigger a pipeline. I am able to trigger a pipeline run without trouble, but I can't seem to figure out how to trigger the pipeline on a branch other than master. Any guidance?
I'll answer my own question. In order to run a pipeline using a particular source branch, you can use the queue_build method on the build client (instead of the pipelines client). When doing this, you should use the pipeline id as the build definition id.
I haven’t tried to do this yet, but I would recommend trying to solve it using the same approach I used to solved my first problem:
Since it is possible to send in variables and a custom branch via the CLI, I’m confident there is a way to do it through the SDK, even if it is not obvious.
Good Luck!
-Nick
From: venutm notifications@github.com Reply-To: microsoft/azure-devops-python-api reply@reply.github.com Date: Sunday, May 3, 2020 at 10:19 AM To: microsoft/azure-devops-python-api azure-devops-python-api@noreply.github.com Cc: Nick Komen nick.komen@ChurchofJesusChrist.org, Comment comment@noreply.github.com Subject: Re: [microsoft/azure-devops-python-api] No documentation on how to trigger pipeline build on 'master' branch. (#290)
MS pointed me to your post and I am glad you figured out a work around. Do you have any suggestions on, how would we send pipeline variables It seems to have a parameters :param parameters: The parameters for the build of type string.
— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fazure-devops-python-api%2Fissues%2F290%23issuecomment-623134530&data=02%7C01%7Cnick.komen%40churchofjesuschrist.org%7C551e67f9fbc94c23f4ba08d7ef7db5d4%7C61e6eeb35fd74aaaae3c61e8deb09b79%7C0%7C0%7C637241195516731709&sdata=7R0tU2Ph8H3BRHNaaDugUAm934xCOpIGXCMY3WiwgAA%3D&reserved=0, or unsubscribehttps://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAMUSH4LPFXPE7TH4FKDGM43RPWKPZANCNFSM4JHT5Z7Q&data=02%7C01%7Cnick.komen%40churchofjesuschrist.org%7C551e67f9fbc94c23f4ba08d7ef7db5d4%7C61e6eeb35fd74aaaae3c61e8deb09b79%7C0%7C0%7C637241195516741704&sdata=%2Bhvxd7uVYN%2BT%2FAzP18dbHdikHilt5Q4ZKT%2BFEiF9ofE%3D&reserved=0.
Thanks fr the suggestions. I am able to pass all the variables as a json string against the parameters: "{}". Now I have a different challenge. How would I pass the template parameters? I tried adding templateParameters to the run_parameters in pipeline_client as well. None of these seem to work.
I'll answer my own question. In order to run a pipeline using a particular source branch, you can use the queue_build method on the build client (instead of the pipelines client). When doing this, you should use the pipeline id as the build definition id.
@nickkomen can you please provide a code example? I'm trying like below and unfortunately getting errors
a = build_client.get_build(project='MyProject', build_id=1769, property_filters=None)
response = build_client.queue_build(build=a, project='MyProject')
import os from azure.devops.connection import Connection from msrest.authentication import BasicAuthentication
Fill in with your personal access token and org URL
PERSONAL_ACCESS_TOKEN = os.getenv("PERSONAL_ACCESS_TOKEN") ORGANIZATION_URL = 'xxxxxx' PROJECT_NAME = "xxxxxx"
def create_pipeline_client():
Get connection from devOps & create pipeline client
def build_pipeline(): pipeline_client = create_pipeline_client() run_params = {'sourceBranch' : "master"} pipe_id = 2098 pipeline_client.run_pipeline( run_parameters=run_params, project=PROJECT_NAME, pipeline_id=pipe_id, pipeline_version=None) print("Pipeline run successfully activated.")
build_pipeline()