You can definitely do all of your requirements, but likely as a result of recent features
1) you can customise the git checkout depth and style: https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning https://docs.gitlab.com/ee/ci/yaml/#git-strategy
2) https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
3) https://docs.gitlab.com/ee/ci/yaml/#tags
I'm not associated with gitlab at all but happy to give pointers if anyone wants to contact me direct