Pipeline流水線透過git拉取Jenkinsfile報錯 error: RPC failed; result=22, HTTP code = 404

xiao智發表於2024-09-08

Pipeline流水線透過git拉取Jenkinsfile報錯 error: RPC failed; result=22, HTTP code = 404

在學習共享庫時使用透過git拉取jenkinsfile時,報錯在排查gitlab服務狀態,網路通訊,防火牆規則以及Jenkins憑據均可以正常使用,最後發現的時在URL填寫中缺少 .git 結尾所導致的,在瞭解後得知在 GitLab 或 GitHub 中,通常使用倉庫 URL 來拉取程式碼,例如:

http://12.12.1.171/root/pipeline.git

這個 URL 字尾的 .git 對 Git 來說是必要的,尤其是當伺服器需要識別它是一個 Git 倉庫時。這有以下幾個原因:

  1. 伺服器路徑解析:帶 .git 字尾的 URL 通常用於指示伺服器該路徑是一個 Git 倉庫。如果缺少 .git,伺服器可能無法正確處理這個請求,從而導致 404 錯誤,因為它可能將其解釋為常規網頁請求,而不是一個倉庫拉取請求。
  2. 標準規範:雖然在某些情況下,Git 伺服器可能會容忍省略 .git,但為了相容性和確保正確性,建議始終使用 .git 字尾。

所以,少寫 .git 字尾會導致 Jenkins 或其他 Git 客戶端在嘗試從伺服器獲取倉庫時找不到該路徑,從而報錯。在 Repository URL 欄位中補充 .git 來解決這個問題。

Started by user jenkins管理員
hudson.plugins.git.GitException: Command "git fetch --tags --progress --prune origin +refs/heads/master:refs/remotes/origin/master" returned status code 128:
stdout: 
stderr: error: RPC failed; result=22, HTTP code = 404
fatal: The remote end hung up unexpectedly

	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2846)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:2185)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:635)
	at PluginClassLoader for git//jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:406)
	at PluginClassLoader for scm-api//jenkins.scm.api.SCMFileSyst
	em.of(SCMFileSystem.java:219)
	at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:126)
	at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:73)
	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:311)
	at hudson.model.ResourceController.execute(ResourceController.java:101)
	at hudson.model.Executor.run(Executor.java:446)
Finished: FAILURE

image-20240908181628563

image-20240908182021268

image-20240908182314042

相關文章