Single Docker image tests don't test the MR changes
In https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/3289, we started testing the single Docker images by checking out the branch defined in the `GITLAB_VERSION` variable. While this solved the issue described in https://gitlab.com/gitlab-org/gitlab-docs/-/issues/1284, it introduced another issue: if we change `single.Dockerfile` in a merge request, the changes of the MR are not tested, since we're checking out another branch!
## Solution 1
A possible solution would be to checkout the branch, but also apply the changes in the MR.
```shell
git checkout $CI_COMMIT_REF_NAME -- <list of files>
```
The question is which files to use to checkout. We'd need only `single.Dockerfile` and probably the associated CI file, like `.gitlab/ci/docker-images.gitlab-ci.yml`.
## Solution 2
[Fetch the patch and apply it](https://docs.gitlab.com/ee/user/project/merge_requests/reviews/#download-merge-request-changes-as-a-patch-file):
```shell
curl "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/$CI_MERGE_REQUEST_IID.patch" | git am
```
This has the caveat that the patch might not apply cleanly and the job fails.
## Solution 3
The main issues for not using a stable branch when testing the single images are:
- We don't pull the stable upstream branches. This could be fixed by setting up the `CI_COMMIT_REF_NAME` variable to be the same as `GITLAB_VERSION`.
- We don't pull the respective stable branch of `gitlab-docs` which resulted to URL tests failing because of mismatch in the `navigation.yaml`. This could be fixed if we checked out the respective `navigation.yaml` file for the branch defined in `GITLAB_VERSION`:
```shell
git checkout $GITLAB_VERSION -- content/_data/navigation.yaml
```
## Solution 4
Since the changes we mostly want to test are in `single.Dockerfile`, we can fetch this file from the MR and build against that.
```yaml
- curl --output $DOCKERFILE "https://gitlab.com/$CI_PROJECT_PATH/-/raw/$CI_COMMIT_SHA/$DOCKERFILE"
```
issue