Gitlab: Always having the possibility to launch a manual job (even if something failed before)
You can use when: on_failure, in your case you can create a new job for rollback when your some more tests have failed.
Example:
cleanup_build_job:
  stage: cleanup_build
  script:
    - cleanup build when failed
  when: on_failure

For more example: https://docs.gitlab.com/ee/ci/yaml/#when