Pipeline is getting succeeded even after the script return exit code 1

.test:
  image: <iamgename
  allow_failure: true
  only:
   - tags
   - merge_requests
  dependencies: []
  needs: []
  artifacts:
    expire_in: 1 day
    untracked: true
  script:
    - opa eval --format pretty --data "${CI_PROJECT_DIR}/opa/terraform.rego" --input "${CI_PROJECT_DIR}/${ENVIRONMENT}-${PRODUCT}-${CI_PIPELINE_ID}.tfplan.json"  "data.terraform.analysis.score" > score.txt
    - cat score.txt
    - opa eval --format pretty --data "${CI_PROJECT_DIR}/opa/terraform.rego" --input "${CI_PROJECT_DIR}/${ENVIRONMENT}-${PRODUCT}-${CI_PIPELINE_ID}.tfplan.json"  "data.terraform.analysis.authz" > result.txt
    - cat result.txt
    - mapfile opa_flag  < result.txt 
    - echo $opa_flag
    - if [ "$opa_flag" == 'false' ]; then exit 1; else exit 0; fi

image

I want to fail the pipeline if the exit code returned is 1. Here it is still getting succeeded. Is there anything that i am missing?

I dont want to use **rules**, becuase i am using **only**

  rules:
    - if: '$opa_flag == "false"'
      when: never

Any pointers ?

Edited by Rahul soni