Jenkins build fails when pulling code from GitHub on Windows Server

Jenkins: 2.414.2
OS: Windows Server 2022 - 10.0
Java: 17.0.8.1 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
bootstrap5-api:5.3.2-1
bouncycastle-api:2.29
branch-api:2.1128.v717130d4f816
build-timeout:1.31
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloudbees-folder:6.848.ve3b_fd7839a_81
command-launcher:107.v773860566e2e
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.10.0-78.v3e7b_ea_d5a_fe1
credentials:1271.v54b_1c2c6388a_
credentials-binding:636.v55f1275c7b_27
display-url-api:2.200.vb_9327d658781
durable-task:523.va_a_22cf15d5e0
echarts-api:5.4.0-6
email-ext:2.102
font-awesome-api:6.4.2-1
git:5.2.0
git-client:4.5.0
github:1.37.3
github-api:1.316-451.v15738eef3414
github-branch-source:1741.va_3028eb_9fd21
github-oauth:588.vf696a_350572a_
github-pullrequest:0.5.0
gradle:2.8.2
instance-identity:173.va_37c494ec4e5
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.15.2-350.v0c2f3f8fc595
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.8-1
jdk-tool:73.vddf737284550
jjwt-api:0.11.5-77.v646c772fddb_0
jquery3-api:3.7.1-1
junit:1240.vf9529b_881428
ldap:701.vf8619de9160a_
mailer:463.vedf8358e006b_
matrix-auth:3.2.1
matrix-project:808.v5a_b_5f56d6966
mina-sshd-api-common:2.10.0-69.v28e3e36d18eb_
mina-sshd-api-core:2.10.0-69.v28e3e36d18eb_
okhttp-api:4.11.0-157.v6852a_a_fa_ec11
pam-auth:1.10
pipeline-build-step:505.v5f0844d8d126
pipeline-github-lib:42.v0739460cda_c4
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:689.veec561a_dee13
pipeline-input-step:477.v339683a_8d55e
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2144.v077a_d1928a_40
pipeline-model-definition:2.2144.v077a_d1928a_40
pipeline-model-extensions:2.2144.v077a_d1928a_40
pipeline-rest-api:2.33
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2144.v077a_d1928a_40
pipeline-stage-view:2.33
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.3.0
resource-disposer:0.23
scm-api:676.v886669a_199a_a_
script-security:1275.v23895f409fb_d
snakeyaml-api:2.2-111.vc6598e30cc65
ssh-credentials:308.ve4497b_ccd8f4
ssh-slaves:2.916.vd17b_43357ce4
sshd:3.312.v1c601b_c83b_0e
structs:325.vcb_307d2a_2782
timestamper:1.26
token-macro:384.vf35b_f26814ec
trilead-api:2.84.v72119de229b_7
variant:60.v7290fc0eb_b_cd
workflow-aggregator:596.v8c21c963d92d
workflow-api:1283.v99c10937efcb_
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3793.v65dec41c3a_c3
workflow-durable-task-step:1289.v4d3e7b_01546b_
workflow-job:1348.v32a_a_f150910e
workflow-multibranch:756.v891d88f2cd46
workflow-scm-step:415.v434365564324
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:865.v43e78cc44e0d
ws-cleanup:0.45

Hello guys,

I am new to Jenkins, and I am trying to build automation with GitHub repository.
I am running a game-server on Windows Server 2022 where I have a custom .exe that runs from the workspace I created in Jenkins. I created the triggers and the webhook and when I push a commit to the repo, Jenkins automatically pulls the changes and updates the workspace folder. This works fine when the .exe is not running in the background. Once I run the .exe I always get this error:

**01:56:06** Started by user [Artium Johnny Shappo](http://ec2-54-93-213-88.eu-central-1.compute.amazonaws.com:8080/user/artysh) **01:56:06** Running as SYSTEM **01:56:06** Building in workspace C:\jenkins_home\.jenkins\workspace\Project-Los-Santos **01:56:06** The recommended git tool is: NONE **01:56:06** using credential 7ca9f93b-c3a6-4c75-8d91-3792620a9033 **01:56:06** > git.exe rev-parse --resolve-git-dir C:\jenkins_home\.jenkins\workspace\Project-Los-Santos\.git # timeout=10 **01:56:07** Fetching changes from the remote Git repository **01:56:07** > git.exe config remote.origin.url git@github.com:Artysh/Project-Los-Santos-Main.git # timeout=10 **01:56:07** Fetching upstream changes from git@github.com:Artysh/Project-Los-Santos-Main.git **01:56:07** > git.exe --version # timeout=10 **01:56:07** > git --version # 'git version 2.42.0.windows.2' **01:56:07** using GIT_SSH to set credentials Artysh-SSH **01:56:07** > git.exe fetch --tags --force --progress -- git@github.com:Artysh/Project-Los-Santos-Main.git +refs/heads/*:refs/remotes/origin/* # timeout=10 **01:56:08** > git.exe rev-parse "refs/remotes/origin/main^{commit}" # timeout=10 **01:56:08** Checking out Revision 370795434ed71cf022c6bcf158323ea7a0852f37 (refs/remotes/origin/main) **01:56:08** > git.exe config core.sparsecheckout # timeout=10 **01:56:09** > git.exe checkout -f 370795434ed71cf022c6bcf158323ea7a0852f37 # timeout=10 **01:56:09** FATAL: Could not checkout 370795434ed71cf022c6bcf158323ea7a0852f37 **01:56:09** hudson.plugins.git.GitException: Command "git.exe checkout -f 370795434ed71cf022c6bcf158323ea7a0852f37" returned status code 1: **01:56:09** stdout: **01:56:09** stderr: error: unable to unlink old 'server_log.txt': Invalid argument **01:56:09** HEAD is now at 3707954 tds **01:56:09** **01:56:09** at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2842) **01:56:09** at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3170) **01:56:09** Caused: hudson.plugins.git.GitException: Could not checkout 370795434ed71cf022c6bcf158323ea7a0852f37 **01:56:09** at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:3198) **01:56:09** at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1355) **01:56:09** at hudson.scm.SCM.checkout(SCM.java:540) **01:56:09** at hudson.model.AbstractProject.checkout(AbstractProject.java:1245) **01:56:09** at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:649) **01:56:09** at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:85) **01:56:09** at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:521) **01:56:09** at hudson.model.Run.execute(Run.java:1900) **01:56:09** at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44) **01:56:09** at hudson.model.ResourceController.execute(ResourceController.java:101) **01:56:09** at hudson.model.Executor.run(Executor.java:442) **01:56:09** Finished: FAILURE

Now, from some research I did I found out that this issue is quiet common for Jenkins running on Windows systems.

My question is - Is there any way around it? For an example - When using GitHub Desktop which is configured for the same folder, but does everything manually - it succeeds the fetch and pull even when the program is running in the background.

Thanks in advance guys.

Windows doesn’t release locks on files the way some other systems will. So you must close the game server if you need to update its files.

Hey, thanks for the reply.
So you just confirmed what I thought.
How does GH desktop do it with the server being open? They don’t both use git?
If I rewrite the mode to run on linux, jenkins will update the build even when running?

GHD releases .lock file,thats just Windows Server which treats it differently.

It should

Thanks guys, I’ll re-write it for Linux.

At the moment I found a way around it and just wrote quick ps automation to copy the files from the workspace to another project folder that actually runs the program.