How To: Stop a freestyle step from failing on a first command with non-zero exitcode

Overview

By default codefresh adds set -e to the beginning of the freestyle step commands list so the step will be considered as failed on first command returning non-zero exitcode. However, you might need to reconfigure what is considered an error for some commands for example terraform plan with --detailed-exitcode flag which will return 2 when there are changes to apply

Details

To override the default behavior you just need to put set +e before the command (or a group of commands) that shouldn’t fail the whole step and set it back with set -e to get back to the default behavior for all further commands in the step.

Example

commands:  
  - |-
    set +e
    terraform plan -out terraform-plan -input=false -detailed-exitcode
    export t_exitcode=$?
    set -e
    echo $t_exitcode
  ...