Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

behave bitbucket pipelines run another step only if previous step has failed

Walezy Konstanty
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 17, 2021

i want to create a simple 2 step pipeline, 1 step will do the tests (behave -v) and second one will rerun tests (behave "@rerun_failing.features") only if the 1 step will fail. When 1 step has no failures, 2nd step will not run.

First scenario: Step with behave -v will succeed, no need to rerun tests - pipeline should mark as success.

Second scenario: Step with behave -v will fail, rerun also fails - pipeline should mark as failed.

Third scenario: Step with behave -v will fail, rerun was a success - pipeline should mark as success.

What conditions should i use to achive this in a simplest way ?

My code looks like this...

   image: python:3.8
   definitions:
    steps:
       - step: &test
           name: Test
           caches:
           - pip
           script:
             - apt update && apt install -y chromium
             - ln -s /usr/bin/chromium /usr/bin/google-chrome
             - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
             - try{
                 behave -v
               }
               catch(Exception e) {
                 behave "@rerun_failing.features"
                   - if [$BITBUCKET_EXIT_CODE -eq 0]; then echo "Rerun tests have passed successfully"; else echo "Rerun tests have failed" || false; fi
               }
               else{
                 echo "All tests passed successfully"
               }
    pipelines:
      custom:
        dev:
          - step: *test

P.s. When i run this code i got line 14: syntax error near unexpected token '('

Thanks in advance for any tips.

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events