Version Control System (VSC)

Error: cannot lock ref ‘refs/remotes/origin/windows’: unable to resolve reference ‘refs/remotes/origin/windows’, Not a directory

ref-error

GitLab’s application offers functionality to collaboratively plan, build, secure, and deploy software as a complete DevOps Platform. GitLab is highly scalable and can be hosted on-premises or on cloud storage. It also includes a wiki, issue-tracking, IDE, and CI/CD pipeline features. After you install the application, you register individual runners. When you register a runner, you are setting up communication between your GitLab instance and the machine where GitLab Runner is installed. Runners usually process jobs on the same machine where you installed GitLab Runner. Kindly refer to these related guides: How to install, register and start GitLab Runner on Windows, Panic: Failed to register the GitLab-runner, you may be having network issues, how to clone a repository and install software from GitHub on Windows, how to install and uninstall Docker Desktop on Windows 10 and Windows Server, and how to install Git on macOS.

GitLab Runner implements a few shell script generators that allow executing builds on different systems. Kindly refer to this similar guide: Error, cannot lock ref ‘refs/remotes/origin/windows’: unable to resolve ‘refs/remotes/origin/windows’: not a directory.

The following error below was because, in the config.toml file, a shell executor was specified in the config.toml file and this does not work well in Windows 10.

Screenshot-2022-02-08-at-15.53.11

Below is the config.toml that caused the issue. In the PowerShell script, all commands are executed in the PowerShell Core context. In GitLab Runner 14.0 and later, this is the default when registering a new runner, and this is why we had it in the file. This is not the complete config.toml file, this is just to show you what was wrong 🙂

  concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-windows executor"
  url = "https://techdirectarchive.com"
  token = "xxxxxxxxxxxxxx"
  executor = "docker-windows"
    shell = "pwsh" -------------------------------------> This was the reason for the error
  [runners.custom_build_dir]

To resolve this issue, ensure the config.toml file is edited with notepad++ which is one of my preferred editors. To do this, ensure notepad++ is installed on your device and then right-click on the config.toml file and select Notepad++. It should look like this below if you are running the docker-window executor without having to specify the shell = "pwsh".

  concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-windows executor"
  url = "https://techdirectarchive.com"
  token = "xxxxxxxxxxxxxx"
  executor = "docker-windows"
  [runners.custom_build_dir]

Now that you have modified the config.toml file, you will have to restart the GitLab-runner service and the Docker-Desktop service and proceed to run the job again. If everything is fine, the job will run and status showing the job has succeeded.

Running with gitlab-runner 14.7.0 (xxxx)
  on Windows runner with docker-windows executor XXXXXXXX
Preparing the "docker-windows" executor
00:01
Using Docker executor with image mcr.microsoft.com/windows:xxxx ...
Pulling docker image mcr.microsoft.com/windows:xxxx ...
Using docker image xxxxxx for mcr.microsoft.com/windows:xxxx with digest mcr.microsoft.com/windows@xxxxxxx ...
Preparing environment
00:04
Running on RUNNER-XXXXXXXXX via 
device-Niemand...
Getting source from Git repository
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in ----
.
.
.
$ dir
    Directory: C:-------------
Mode                 LastWriteTime         Length Name                         
----                 -------------         ------ ----                         
-a----          2/6/20XX   1:57 PM            182 .gitlab-ci.yml               
$ echo %PATH%
%PATH%
Cleaning up project directory and file based variables
00:04
Job succeeded

Note: Since pwsh entry for the shell attribute in GitLab-runner config.toml does not work in Windows 10 devices correctly, instead of taking the shell = "pwsh" off, you can simply replace the “pwsh” with “PowerShell” and this would work as well. Therefore edit the confg.toml as discussed below.

  concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-windows executor"
  url = "https://techdirectarchive.com"
  token = "xxxxxxxxxxxxxx"
  executor = "docker-windows"
    shell = "powershell" -------------------------------------> This will also have the issue resolved
  [runners.custom_build_dir]

And then restarting GitLab-runner and the Docker-Desktop services will have this issue fixed. Kindly refer to these similar errors: Install Git on Windows: The term “git” was not used as the name of a cmdlet, function, script file, or executable Program recognized, how to resolve “Failed to remove network for build: Error during connect in the default daemon configuration on Windows, the Docker client must be run with elevated privileges“, and how to resolve “failed to remove network for the build, Job failed error: Invalid volume specification: “/cache”.

gitlab-runner.exe restart

I hope you found this blog post helpful. If you have any questions, please let me know in the comment session.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x