You can (and should!) do exactly the same with "traditional" GitHub Actions style YAML.
Avoid putting commands in the YAML - put those in separate scripts and call them from the YAML. The YAML should only be used for things that can't be done from scripts (e.g. job matrices, uploading artifacts, reporting status etc.)