Trigger one pipeline AFTER another in Azure Pipelines

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024
  • Large products have several components that are dependent on each other. These components are often independently built, and when an upstream component changes, the dependencies have to be rebuilt and revalidated.
    In situations like these, you can trigger one pipeline after another in Azure Pipelines using the Azure Pipelines triggers.
    🆘 NEED HELP? 🆘
    Book a 1:1 Consultation with CoderDave: geni.us/cdconsult
    We can talk about GitHub, Azure DevOps, or any other DevOps tool or project you need help with!
    🙏🏻SUPPORT THE CHANNEL🙏🏻
    Buy me a coffee: www.buymeacoff...
    PayPal me donation: paypal.me/dabe...
    💬JOIN THE COMMUNITY
    ► Website: coderdave.io
    ► Discord: geni.us/cddiscord
    ► Newsletter: coderdave.io/n...
    ► Blog: dev.to/n3wt0n
    ► GitHub: github.com/n3wt0n
    ► Twitter: / davidebenvegnu
    ► Facebook: / coderdaveyt
    🎥VIDEOS
    ► Pipelines Decorators: • Azure Pipelines Decora...
    ► Make your Azure Pipelines faster: • How to REDUCE Build Ti...
    ► Azure Pipelines Triggers Deep Dive series: • Azure Pipelines Trigge...
    📄RESOURCES
    ► Pipelines triggers documentation: bit.ly/3cyQ7nW
    🎤PODCAST: geni.us/cdpodcast
    ❓QUESTIONS?
    Have a question about DevOps, Cloud, Coding, or Anything Else? Post in comments section of this video!
    🔴SUBSCRIBE to CoderDave here: www.youtube.co...
    _______________
    👕GET MY MERCH: geni.us/cdmerch
    🔮TOOLS I USE
    ► Twingate - Connect to your Private Resources SECURELY: geni.us/twingate
    ► TubeBuddy - #1 RUclips channel Management tool (FREE): www.tubebuddy....
    ► Moosend - Free Newsletter and Automation Platform: geni.us/moosend
    📸🖥️GEAR AND SOFTWARE
    ► Music - Epidemic Sound (Get 30 days free): epidemicsound....
    ► Editing - Adobe Premiere Pro: geni.us/AdobeV...
    ► Gear I Use for RUclips: kit.co/CoderDa...
    ► Gear I Use for Streaming: kit.co/CoderDa...
    ► My Computer Setup: kit.co/CoderDa...
    ► Full office setup: github.com/n3w...
    Disclaimer:
    Some product links are affiliate links which means if you buy something I'll receive a small commission at no additional cost to you.
    As an Amazon Associate, I earn from qualifying purchases.

Комментарии • 94

  • @CoderDave
    @CoderDave  4 года назад +1

    ✨ *Question of the day* ✨ How do you chain different pipelines/builds?
    *SUPPORT THE CHANNEL :*
    Buy me a coffee: www.buymeacoffee.com/CoderDave
    Join my Patreon: www.patreon.com/CoderDave
    PayPal me donation: paypal.me/dabenveg

  • @zubiinTube
    @zubiinTube 4 года назад +2

    Good work mate! what a timely upload - I was searching for exactly this kind of video that you just uploaded ;) now I need to know can we set up a trigger on a branch(master) that exist in another repository of same project :)

    • @CoderDave
      @CoderDave  4 года назад +2

      Glad I could help! about the trigger, not sure what you mean. But if the use case is having Pipeline A in Repo 1 triggering Pipeline B in Repo 2, that is entirely possible :)

  • @georgigeorgiev4871
    @georgigeorgiev4871 3 года назад +1

    It's very clear the way you explained it. I had big problems understanding how triggers worked from the docs. The keyword "trigger" is somewhat hidden within all the other resource setup. Wish they found a better way to manage that.

    • @CoderDave
      @CoderDave  3 года назад +1

      I agree, it’s not the simplest/best way to do it. But when you understand it it’s not too bad anyway.. other CI systems are worse 😄 thanks for the compliment anyway!

    • @georgigeorgiev4871
      @georgigeorgiev4871 3 года назад +1

      One observation - I did a textbook case using your example. Nothing triggered. Tried replacing steps with echo logic, still didn't trigger. After all my efforts turns out I had to recreate my DESTINATION pipeline. First I tried replacing the source pipelin and that didn't do it. Keep that awful bug in mind - people!

    • @CoderDave
      @CoderDave  3 года назад

      Uhm, not sure why that didn't work. Recreating the destination pipeline shouldn't be necessary... interesting...

    • @georgigeorgiev4871
      @georgigeorgiev4871 3 года назад +1

      ​ @CoderDave It was mentioned as a solution by someone on one of those issues forums. It's clearly a bug, my original deployment script was quite extensive and was also ran several times before adding a trigger, so yeah... Keep that in mind.

    • @CoderDave
      @CoderDave  3 года назад

      Thanks for letting us know.

  • @embacktall
    @embacktall 3 года назад +1

    Great video! Can't wait to check out your other videos.
    A question: can I trigger a pipeline from a stage, pause the stage and wait for the triggered pipeline to complete successfully before continuing through the stages/original pipeline?

    • @CoderDave
      @CoderDave  3 года назад +2

      Thanks for the compliment. AFAIK there is no way to do it automatically. I think the only way to do it is having 3 pipelines... A triggers B and when B finishes it triggers C (which is the continuation of A). or perhaps doing an AzDO API call as a gate (but this would work only in Classic pipelines)

    • @vergmeister9479
      @vergmeister9479 3 года назад

      I was looking for similar solution, hope this is supported in the future, where a pipeline can be called by any pipeline and its output can be used in the calling pipeline.
      As a workaround, I was thinking pipeline A to make a commit to a dummy repo with a guid where pipeline B monitors and is triggered. Pipeline B reports the result for the guid in the same dummy repo (somehow must no trigger itself) where pipeline A polls for the file with that guid for x amount of time. Based on output pipeline A fails or succeeds to next step/stage. It fails after x amount of polling has happened.

  • @_champy_
    @_champy_ 3 года назад +2

    Great video @CoderDave
    ✨ Question of the day ✨ How do you chain different pipelines/builds?
    I use 'az pipelines run ....' on the last task in pipelineA
    which allows me to add additional conditions linked to the triggering of my pipelineB
    merry christmas

    • @CoderDave
      @CoderDave  3 года назад +1

      That's another great way to do it! Thanks for your support, have a happy new year.

  • @dries9070
    @dries9070 2 года назад +1

    Thanks Dave, I have several classic pipelines (because of microservices all in seperate repo) deploying to ACC and PROD. There is a powershell script firing all pipelines based upon the versionnumber. This way, we only need to start one powershell script to deploy all applications to ACC or PROD. But now, I have a new pipeline (a new microservice) with the new 'environment' ACC and PROD. What is the best way to incorporate this in the script? Thanks in advance

  • @MartaZagrajek
    @MartaZagrajek Год назад

    Thanks for those tutorials Dave. I found on Azure site that it is also possible to trigger on stages from previous pipeline. But even when I am simply echoing the variable, it doesnt find the previous stages. Did you have a chance to use them ?

    • @CoderDave
      @CoderDave  Год назад +1

      Thanks for the compliment, I'm happy to know you found it helpful. I am not sure I understood your question tho

  • @mykolakozub675
    @mykolakozub675 3 года назад

    thanks! you saved one hours of my life

    • @CoderDave
      @CoderDave  3 года назад

      Great to hear! Always happy to help

  • @luigisinbigotes
    @luigisinbigotes 9 месяцев назад +1

    is there a way to notify PR owner from trigger (source) branch about triggered (destination/tests) pipe has failed? As source might have a successful result but broken some tests in the other pipe!

    • @CoderDave
      @CoderDave  9 месяцев назад +1

      uhm, I don't think there is an out-of-the-box way for this, because the PR will only know about the first pipeline.
      I think you can tho pass some info to the second one and send a notification to the user who open the PR... this needs some fiddling tho

  • @praneethb8037
    @praneethb8037 2 года назад +1

    Both the triggering pipeline and the triggered pipeline use the same commit (When both the pipelines run on the same repo). Is there a way for triggered pipeline to use the latest commit instead? In my case, triggering pipeline upon completion creates a commit which I want the triggered pipeline to run on.

  • @tarcisiocortedepaula
    @tarcisiocortedepaula 3 года назад

    Thanks for this content.

    • @CoderDave
      @CoderDave  3 года назад

      No problem! And glad you liked it :)

  • @kushagrakalla7933
    @kushagrakalla7933 7 месяцев назад +1

    Hi Dave, I have one problem statement. So I have a Yaml file in the branch devops-as-code. Using this branch and the Yaml file I have created a pipeline . Now the task here is that I want my pipeline to run when a pull request is completed on suppose dev branch. How can we do it. Have given a lot of tries but it seems it is not working. Please help

    • @CoderDave
      @CoderDave  7 месяцев назад

      Not sure if I understand your question 100%, but for a Pipeline to use a specific YAML file, that needs to be present in the default branch as well or, in your case, in the branch the pull request targets

  • @MrBuzerguy
    @MrBuzerguy 3 года назад +1

    Awesome video! Is there any way to do this also when the source pipeline ends with a warning?

    • @MrBuzerguy
      @MrBuzerguy 3 года назад +1

      If anyone is curious about the anwser to my question above, I fixed it using a external job from the marketplace called Trigger Azure Devops Pipeline

    • @CoderDave
      @CoderDave  3 года назад +2

      Thanks 😊 if the pipeline ends with a warning the other pipeline is triggered anyway. If you instead mean that you want to run another pipeline only if the calling one has a warning then unfortunately no, because the status field of the API can only be “succeeded”, “failed”, “cancelled” and “unknown”

  • @MrMactub
    @MrMactub 2 года назад +2

    Hi Dave,
    is there a way to set a trigger pipeline to failed if dependent pipeline failed?
    Thank you!

    • @CoderDave
      @CoderDave  2 года назад +2

      Unfortunately not. The dependent pipeline will be triggered only upon successful completion of the parent one.
      In GitHub Actions, instead, it is the opposite… the workflow is triggered anyway upon completion of the parent, and then it is “your” job to check if it was a success or a failure

    • @MrMactub
      @MrMactub 2 года назад

      @@CoderDave thanks a lot for the answer! Do you know if I can set trigger pipeline to failed via a REST API?

    • @CoderDave
      @CoderDave  2 года назад +1

      AFAIK it is not possible

    • @MrMactub
      @MrMactub 2 года назад +1

      just BTW, posting a comment via REST to a pull request from trigger pipeline solved it for me. Trigger PR can not be merged if there is unresolved comment.

    • @CoderDave
      @CoderDave  2 года назад

      Oh ok that’s quite a workaround 😄

  • @psp5587
    @psp5587 2 года назад +1

    Nice video. I have one query. In my cd pipeline, i defined pipeline resource with and without branch filter but cd pipeline only works if I commit on main branch. If I commit on any feature branch then ci pipeline get triggered but cd is not triggering. Does pipeline resource only works for main branch? Thanks in advance for help.

    • @CoderDave
      @CoderDave  2 года назад

      When you say "cd pipeline" are we still talking about YAML or the Classic Release Pipelines? How do you trigger the CD one? It is kinda difficult to answer this without seeing your code :)
      Perhaps you can consider joining our Discord, where you can ask in the Azure DevOps section, pasting the YAML, so we can have a better look at it. Here: geni.us/cddiscord

  • @syams84
    @syams84 Год назад +1

    Dave my child pipeline is not getting triggered when parent fails, can you suggest? This would really help me.

    • @CoderDave
      @CoderDave  Год назад

      hey there. Hard to say without seeing the Pipeline. What kind of trigger did you use? Is the config right? Does it get triggered when the parent pipeline succeed?

    • @syams84
      @syams84 Год назад

      @@CoderDave yes it is triggered when parent succeed but do not when parent fails. Thanks In Advance.

  • @mohammedsuhailbasha4860
    @mohammedsuhailbasha4860 4 года назад +1

    Please make and upload video on how to trigger second pipeline automatically after completion of first pipeline. Challenge is both pipeline present in different branches with same repositories.

    • @CoderDave
      @CoderDave  4 года назад +1

      Hey. Not sure I can make a video in the near future about this, but the way to do it is using the `workflow_run` event to trigger the second pipeline, because you can specify the branch. Check the doc here: docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#workflow_run
      Please let me know if this helps

  • @FranciscoLegonDev
    @FranciscoLegonDev Год назад +1

    Hi Dave. How can I send parameters used in source pipeline build to target pipeline? Thanks

    • @CoderDave
      @CoderDave  Год назад +1

      Unfortunately there is no direct way, because as I explain in the video technically it is not the first pipeline triggering the second, but rather the second waiting for the first to finish. You would have to come up with workarounds, like for example saving whatever you need on the second pipeline in an artifact.

    • @FranciscoLegonDev
      @FranciscoLegonDev Год назад

      @@CoderDave then I might temporary store the params in a file in the repository. Thanks for the response Dave, have a nice day!

  • @Yaabalhassan1214
    @Yaabalhassan1214 Год назад +1

    I want to trigger my second pipeline only when a certain condition is met. For example, if variable “x” in pipeline 1 is = 1 then trigger the second pipeline. Is that possible. The main idea is I don’t want to trigger pipeline 2 every time pipeline 1 runs, I only want to do it in a specific case of pipeline 1

    • @CoderDave
      @CoderDave  Год назад +1

      Unfortunately you can't, since it is not the first pipeline triggering the second but rather the second waiting for the completion of the first one. The only available data from the first one available in the second one are the field summarized at minute 3:35 ruclips.net/video/o6fMncjlrW8/видео.html

  • @krishna172225
    @krishna172225 2 года назад +1

    how to trigger a pipeline when particular file in a project is committed when there is multiple projects in a solution. For example I have Coder solution and under this I have A,B,C projects, in C project a file in changed or updated and committed then a build pipeline will trigger. Can you please suggest how to do.

    • @CoderDave
      @CoderDave  2 года назад +1

      Hi. You can target specific folders or even files by using the path filter on the trigger.
      For example, if you want to trigger a pipeline only for the project A in your monorepo, and let's suppose that project is in the folder /src/A, then you'll do something like this:
      trigger:
      branches:
      include:
      - main
      paths:
      include:
      - src/A
      You can also filter by specific file types... let's say you want to trigger only when some javascript files are modified... you can do it by:
      trigger:
      branches:
      include:
      - main
      paths:
      include:
      - src/A/**.js
      Finally, remember that when you specify paths, you must explicitly specify branches to trigger on.

  • @robhein7573
    @robhein7573 3 года назад +1

    Is there a way to limit the dependent pipeline to a certain path as you would with a normal trigger?

    • @CoderDave
      @CoderDave  3 года назад +1

      Good question. No, it is not possible. You can filter by Branch or by Tag, but not by Path because the Path information is not present in the pipeline resource trigger nor in the build completion trigger

    • @robhein7573
      @robhein7573 3 года назад +1

      @@CoderDave Thank you!

  • @EngineeringVignettes
    @EngineeringVignettes 3 года назад +1

    This is good info but...
    I wish you would have gone into more details on how the source pipeline *publishes* its artifacts...
    I have been trying to understand that part of the process for more than half a day now; it's really confusing as I have found at least 2 options;
    - PublishPipelineArtifact
    - PublishBuildArtifacts
    But do not know really what the difference is between the two...
    Creating a simple package to artifact is another hard one to figure out. I ended up just using a bash step to make a new folder and copy an executable over to it (in linux there is no .exe to filter!) and then giving the path (and sussing out the s/ directory that the self-hosted agent generates) to the artifact step.
    --
    I still don't understand why the published artifacts are not visible in the Azure Artifacts system or where they are actually stashed (???)
    There is lots more to understand in this part of the system and it's not easy getting answers out of the MS documentation... :/
    Cheers,

    • @CoderDave
      @CoderDave  3 года назад +2

      Hi, thanks! That's a really good point, I will definitely make a video explaining the differences. In short:
      "Publish Pipeline Artifact" can be used only in the YAML pipelines, and it is used only to share "bits and pieces" between jobs and stages within the same Pipeline.
      "Publish Build Artifact" instead can be used in both YAML and Classic, and it is designed to share things between different Pipelines. For example, if you build something in PipelineA and you want to deploy it using PipelineB, then you use a Build Artifact to share that "thing"
      Finally, Azure Artifacts are a different thing... they are private repositories for Nuget, Npm, etc... they can be used to store private packages that can then be used during development (for example).
      Feel free to join the community discord server if you have more questions: discord.gg/sJFmYC9TXb
      As I've mentioned, I will definitely do a video about this. Thanks again for the suggestion!

    • @EngineeringVignettes
      @EngineeringVignettes 3 года назад +1

      @@CoderDave - No problem, hope my comment did not sound too much like a rant... thanks a lot for the info, I will check out the Discord!
      Cheers,

  • @dhunddhund
    @dhunddhund 3 года назад +1

    Hi I have a feature branch triggering a dependent build, however when I checkin code in feature brach, the dependent pipeline is running the master branch and not the feature branch.

    • @CoderDave
      @CoderDave  3 года назад +1

      Hi, yes that is the default behavior. If you want to checkout a different branch, then you need to do it manually (using a git command directly)

  • @manaspal5
    @manaspal5 Год назад +1

    How can we trigger a build pipeline after completion of release pipeline?

    • @CoderDave
      @CoderDave  Год назад

      You can use a 3rd party task for that. AFAIK it is not supported out of the box

  • @aasaithambi2010
    @aasaithambi2010 2 года назад +1

    can we trigger another pipline in one of the mid stages instead after first pipeline completed

    • @CoderDave
      @CoderDave  2 года назад

      Not out of the box, you'd have to use some 3rd party extension for it (or do API calls)

  • @krishnaimadabattuni2649
    @krishnaimadabattuni2649 3 года назад +1

    What is the difference b/w variable groups and task groups?

    • @CoderDave
      @CoderDave  3 года назад +2

      Hi @Krishna. Task groups are to add together multiple steps and use them as a single step in a pipelines. Variable groups are for referencing variables as a single entity, and are also useful to connect to external sources like KeyVault. As I mentioned in your previous comment, I will make a video about this so stay tuned.

  • @andreilupu150
    @andreilupu150 3 года назад

    Hello, Dave. I'm currently messing up with some pipelines, but I wen through this tutorial and it helped a lot. I have a Question tho. In resources you said that we can name more pipelines (dependant can be triggered by source1 or source2 let's say). How can I use different variables group (variables for test and staging for ex) from library in this case? Please help, I searched through all the internet :(

    • @CoderDave
      @CoderDave  3 года назад

      Hey, thanks for the feedback :)
      I'm not 100% sure of what your use case is... maybe you can join the Discord server (link in the description) so it is easier to talk to me (and the rest of the community) and explain the use case and get the answers (hopefully :D)

    • @andreilupu150
      @andreilupu150 3 года назад

      @@CoderDave Ok, will do. Thank you for the quick response! and continue with the good job you're doing

  • @varunrai8278
    @varunrai8278 2 года назад

    Hi Dave,
    I'm getting an error "Configuring the trigger failed, edit and save the pipeline again" Whenever I try to create new CI pipeline for another branch. How do I solve it?

    • @CoderDave
      @CoderDave  2 года назад

      It could be related to many reason, it is difficult to say without seeing the pipeline. One of the most common issues is if the path to the YAML file starts with a slash. For example "/builds/build.yaml" should actually be "builds/build.yaml"

  • @dragomirstanchev645
    @dragomirstanchev645 3 года назад +1

    I followed this tutorial and created a lot of pipelines which should be triggered automatically but it was triggered only 4 from 14. Idea where to check?

    • @CoderDave
      @CoderDave  3 года назад

      Hi. Are the pipelines all in the main branch or in different branches?

    • @dragomirstanchev645
      @dragomirstanchev645 3 года назад

      @@CoderDave They are all in Dev branch which is the strange thing.

    • @dragomirstanchev645
      @dragomirstanchev645 3 года назад +1

      Found it. It was an issue with the pool.

  • @akashbais6651
    @akashbais6651 2 года назад +1

    Help me to build only modified file or last checked-in files in repository using azure classic ci pipeline

    • @CoderDave
      @CoderDave  2 года назад

      it is kinda difficult to do it here. Please join our Discord at geni.us/cddiscord so the community and I can help you :)

  • @sachintripathi5742
    @sachintripathi5742 2 года назад

    Hi tried the classic way and it worked. But I have dependent pipeline which has several branch so i want to trigger different different branch of the same pipeline if its related source pipeline is triggered. Can you please help me here

    • @CoderDave
      @CoderDave  2 года назад

      I'm afraid that is not possible. As per the documentation: "the triggered pipeline will use the version of the code in the branch specified by the Default branch for manual and scheduled builds setting"
      docs.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers?view=azure-devops

  • @subodhmirgal
    @subodhmirgal 3 года назад +1

    How to trigger release pipeline once another release pipeline is completed & code deployed to environment?

    • @CoderDave
      @CoderDave  3 года назад +1

      Hi, sorry for the late reply. There is no build in way to trigger a release after another release has completed. You need to either write a ask yourself that uses the APIs, or use something like the Release Orchestrator you can find on the marketplace here: marketplace.visualstudio.com/items?itemName=dmitryserbin.release-orchestrator
      However, I wouldn't recommend either of these approaches. To me, if you need to trigger a release form anther release there is almost certainly a better way to design your release pipelines :)

  • @dannyroy8571
    @dannyroy8571 Год назад

    In Azure DevOps how do i extract the pipeline status for each stage or task and forward each pipeline stage status to google chat hangout ?

    • @CoderDave
      @CoderDave  Год назад

      Heya. There is nothing out of the box, as far as I know. But you can check this: dev.to/ib1/azure-devops-integration-with-google-hangouts-chat-3imn

  • @akhileshagrawal3369
    @akhileshagrawal3369 3 года назад +1

    How do i chain a pipeline with release pipeline. I want to trigger a pipeline after release pipeline has been completed.

    • @CoderDave
      @CoderDave  3 года назад

      There is no build in way to trigger a pipeline after a release has completed. You need to either write a task yourself that uses the APIs, or use something like the Release Orchestrator you can find on the marketplace here: marketplace.visualstudio.com/items?itemName=dmitryserbin.release-orchestrator

  • @MilosKocan
    @MilosKocan 3 года назад +1

    Now resources ... varriable should be in simple ()

    • @CoderDave
      @CoderDave  3 года назад

      In the video I have both "flavors", with $(xxx) and ${{xxx}}. Both should work now

  • @rubentestear190
    @rubentestear190 3 года назад +1

    bro, cant trigger others pipeline
    did everything u did ....

    • @rubentestear190
      @rubentestear190 3 года назад +1

      why the pipeline only triggers when someting changes in the branch? and not like you, when you run a pipeline it triggers the other one?

    • @rubentestear190
      @rubentestear190 3 года назад +1

      only works with the manual trigger... not work if i configure like you in the yaml file.,............

    • @rubentestear190
      @rubentestear190 3 года назад +1

      all iin the same branch and noone runs...

    • @CoderDave
      @CoderDave  3 года назад +1

      Uhm, interesting... I'd need to see the YAML but if you have done it as in the example it should work... Just double checking, in the Pipelines resource did you specify "trigger: true" ?
      Also, double check the "Branch considerations" section of the documentation to see if you are in one of the unsupported cases: docs.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers?view=azure-devops#branch-considerations

    • @rubentestear190
      @rubentestear190 3 года назад +1

      @@CoderDave hello i finally managed to trigger the pipeline... but it only happens on the main/master branch, if i create a new branch i can't trigger a pipeline with another... is it normal? can you get it to work on any branch?