Jenkins的golang爬虫问题

昨天在Jenkins中突然开始出现的MalformedURLException。

java.net.MalformedURLException: no protocol: /dl/go1.14.2.linux-amd64.tar.gz
    at java.net.URL.<init>(URL.java:593)
    at java.net.URL.<init>(URL.java:490)
    at java.net.URL.<init>(URL.java:439)
    at org.jenkinsci.plugins.golang.GolangInstaller.performInstallation(GolangInstaller.java:57)
    at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:72)
    at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
    at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
    at org.jenkinsci.plugins.golang.GolangInstallation.forNode(GolangInstallation.java:44)
    at org.jenkinsci.plugins.golang.GolangInstallation.forNode(GolangInstallation.java:22)
    at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:152)
    at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:49)
    at hudson.security.ACL.impersonate(ACL.java:260)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:46)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

我对此感到困惑,尝试了很多方法但效果并不明显。
直到今天,在网上搜索时找到了以下文章:
https://qiita.com/cpp0302/items/27c1747bc3f9d753eb64

由于这正好是问题的本质,我们也以同样的方式处理了它。
这是因为根据下面所写的,这是由于golang的规范更改而导致jenkins的爬虫无法适应。

https://github.com/jenkins-infra/crawler/pull/89的中文释义:
这是一个Jenkins基础设施中的爬虫项目,链接为https://github.com/jenkins-infra/crawler/pull/89。

https://github.com/golang/website/commit/58a31798e86f7e67791de8767e8353f734576199#diff-8dfde61e35bbbe9e94ea52fe96273aa9L280-R280的中文释义:
这是一个Golang官方网站项目中的提交记录,链接为https://github.com/golang/website/commit/58a31798e86f7e67791de8767e8353f734576199#diff-8dfde61e35bbbe9e94ea52fe96273aa9L280-R280。

当这个爬虫发生变化时,会产生怎样的反应呢?我对自动下载的机制还不太清楚。

在“管理Jenkins > 全局工具配置”中,您可以编辑您的Go安装程序,将“从golang.org安装”安装程序替换为“从.tar.gz安装”安装程序,然后提供相应的下载URL和子目录(可能是“go”)。

作为解决方法,尽管使用了上述方法,但在日语版本中,是指“顶部→左侧面板的Jenkins管理→全局工具配置”的go栏。
哎呀,最近我完全不熟悉这些,所以完全迷失了方向(笑)。

此外,如果需要进行设置,应该放在下载目录的直接下级。(通常情况下,除非是进行全新的构建,应该是已经存在的。)
换句话说,应该是${JENKINS_HOME}/tools/org.jenkinsci.plugins.golang.GolangInstallation/(已经在Jenkins中设置的名称),
应该就可以了。

填補的缺陷

我之前把1.14版本的Golang安裝在${JENKINS_HOME}/tools/org.jenkinsci.plugins.golang.GolangInstallation/1.14目錄下。

[jenkins]$ ls -ltr
合計 204
-rw-r--r--  1 jenkins jenkins   397  4月  9 04:15 SECURITY.md
-rw-r--r--  1 jenkins jenkins  1607  4月  9 04:15 README.md
-rw-r--r--  1 jenkins jenkins  1303  4月  9 04:15 PATENTS
-rw-r--r--  1 jenkins jenkins  1479  4月  9 04:15 LICENSE
-rw-r--r--  1 jenkins jenkins 90098  4月  9 04:15 CONTRIBUTORS
-rw-r--r--  1 jenkins jenkins  1339  4月  9 04:15 CONTRIBUTING.md
-rw-r--r--  1 jenkins jenkins 55383  4月  9 04:15 AUTHORS
-rw-r--r--  1 jenkins jenkins    26  4月  9 04:15 robots.txt
-rw-r--r--  1 jenkins jenkins  5686  4月  9 04:15 favicon.ico
-rw-r--r--  1 jenkins jenkins     8  4月  9 04:15 VERSION
drwxrwxr-x  2 jenkins jenkins   312  4月 30 18:05 api
drwxrwxr-x  2 jenkins jenkins    29  4月 30 18:05 bin
drwxrwxr-x  3 jenkins jenkins    18  4月 30 18:05 lib
drwxrwxr-x  7 jenkins jenkins  4096  4月 30 18:05 doc
drwxrwxr-x 12 jenkins jenkins   165  4月 30 18:05 misc
drwxrwxr-x  6 jenkins jenkins    76  4月 30 18:05 pkg
drwxrwxr-x 47 jenkins jenkins  4096  4月 30 18:05 src
drwxrwxr-x 23 jenkins jenkins 12288  4月 30 18:05 test

因为go二进制文件位于bin文件夹下,所以最初设置了${JENKINS_HOME}/tools/org.jenkinsci.plugins.golang.GolangInstallation/1.14/bin,结果出现了以下错误。

[xxxx-THAL7GIC7EP2KG363RGLDNNRHS6T5VIFM7P5FDFXNXB5U4DDPX3Q] Running shell script
+ go env -w CGO_ENABLED=0
/jenkins_home/workspace/xxx-THAL7GIC7EP2KG363RGLDNNRHS6T5VIFM7P5FDFXNXB5U4DDPX3Q@tmp/durable-27fdf3a0/script.sh: 行 2: go: コマンドが見つかりません

填補2

有两个分支,一个是发生,一个是不发生。
可能有爬取的条件,但我还没有深入调查。

广告
将在 10 秒后关闭
bannerAds