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

Walezy Konstanty 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