For a very long time, I used to work with Jenkins most of my work time, but since my new job, I have to spend more time with Gitlab and started having a bunch of WTFs. So here is my list:
- Caching. Distributed cache requires S3 implementation. Here is free one: https://min.io/
- Stages. Stages are not the same stages as Jenkins has, these are naturally separate jobs with the separate BUILD_IDs, so you'd better use CI_PIPELINE_ID.
- Declarative pipeline. The only YAML can be used with its pros and cons, but having Gitlab Actions is mainstream nowadays.
- Files. You can't store ssh key as a file in GitLab, only like a variable. That means you need to create one using echo $variable in your script. With proper permissions.