Skip to main content
DevOps icon showing cogs

This post is from the XebiaLabs blog and has not been updated since the original publish date.

Last Updated May 14, 2015 — DevOps Expert

Using XL Release Gate Task for Deciding Future Tasks

DevOps

For all of those working with XL Release, you must be familiar with Gate Task. You can provide conditions in a Gate Task which have to be all checked before you can actually complete the task. What if you could use those to programmatically check which conditions are met?  One caveat here of course would be to skip the task in case you don't want to check all conditions. Here's how it works

  • Create a new XLR Template with a Gate Task and a Script task after that.
  • You can add a manual step at the start and end of the phase to stop the execution and verify results of script execution.
  • Add the following code snippet inside the Script task
def gatesBeforeTask(task):
  gatesList = []
  for item in phase.tasks:
    if str(item.getTaskType()) == "xlrelease.GateTask":
     gatesList.append(item)
    if item.id == task.id:
     break
  return gatesList
gates = gatesBeforeTask(task)
conditions = gates[0].getConditions()
for condition in conditions:
   print "Condition: " + str(condition.title) + " is : " + str(condition.isChecked()) + "\n"
  • Then start a new release
Screen Shot 2015-05-14 at 2.55.45 PM
  • Continue with the manual task and complete it.
  • Next Open the Gate Task.
  • Select only gate2 and leave gate1 unchecked
Screen Shot 2015-05-14 at 2.56.18 PM
  • Skip Gate Task since you cannot complete it without both the tasks completed
Screen Shot 2015-05-14 at 2.56.41 PM
  • The script task will get executed automatically. Look at the output of script task once its completed
Screen Shot 2015-05-14 at 2.57.11 PMThis prints out the value of the conditions based on which ones were checked or not   Now to use the same for Pre Conditions, this is what you can do
  • Add two manual steps after the last(manual) step in your release
Screen Shot 2015-05-14 at 8.07.35 PM
  • In the first manual Step , add this code to precondition. Notice we are setting a result variable at the end of snippet
def gatesBeforeTask(task):
  gatesList = []
  for item in phase.tasks:
    if str(item.getTaskType()) == "xlrelease.GateTask":
     gatesList.append(item)
    if item.id == task.id:
     break
  return gatesList
gates = gatesBeforeTask(task)
conditions = gates[0].getConditions()
for condition in conditions:
 if condition.title == "gate2" and condition.isChecked():
    result = False
  • Now execute the steps
  • Based on the fact that the gate2 condition was checked, you would be skipping the first manual task and going directly onto second
Screen Shot 2015-05-14 at 8.09.40 PM  You can see how the step is skipped if the result is FalseHave Fun!!

More from the Blog

View more
Ascension Launch Banner
Apr 26, 2022

Get ready for peak performance with Digital.ai’s newest AI-Powered DevOps Platform Ascension Release

DevOps
Today, Digital.ai is excited to announce our latest AI-Powered DevOps ...
Read More
Jan 24, 2022

Digital.ai Value Stream Delivery for SAFe®: The key to amazing business outcomes

DevOps
The Scaled Agile Framework (SAFe) is the world’s leading framework for ...
Read More
Dec 09, 2021

How SaaS and cloud-based solutions helped the U.S. Department of Veterans Affairs achieve digital transformation

DevOps
Modernizing legacy systems was an ongoing goal for the U.S. Department ...
Read More
Nov 29, 2021

Increase velocity and reduce risk with AI and machine learning

DevOps
Artificial Intelligence (AI) and machine learning (ML) have proven use ...
Read More
Contact Us