使用 leiningen 和 jenkins 构建简单的 clojure web 项目

Build simple clojure webproject with leiningen and jenkins

我有一个基于 clojure 的简单 Web 项目,它只包含资源文件夹中的一些降价文件。以前我运行它用

cd my-project
lein ring server

然后我在 http://localhost:port 的浏览器中查看了 运行 项目。

现在我想将这个过程与 jenkins 集成,所以我

但是,Jenkins 总是抱怨

> java -client -XX:+TieredCompilation
> -Xbootclasspath/a:/home/.lein/self-installs/clojure-1.8.0.jar 
> -Dfile.encoding=UTF-8 
> -Dmaven.wagon.http.ssl.easy=false 
> -Dleiningen.original.pwd=/var/lib/jenkins/jobs/my-project/workspace
> -cp /home/.lein/self-installs/clojure-1.8.0.jar clojure.main -m leiningen.core.main install 
> 
> Error: Could not find or load main class clojure.main
> Build step 'Build project using leiningen' marked build as failure

我假设,jenkins 缺少 clojure.jar 并且它没有将它安装到 .m2 存储库,所以我手动将它添加到

/var/lib/jenkins/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar

但这不会改变构建的任何内容。

如何告诉 jenkins 在哪里可以找到 clojure.main?任何提示,我错过了什么?

您是否已将 clojure 添加为 project.clj 的依赖项?

:dependencies [[org.clojure/clojure "1.8.0"]]

tl;dr - 检查权限

当您为 Jenkins 设置 leiningen+plugin 时,请确保 jenkins 所在的服务帐户 运行 是所有者并且有权访问 leiningen-standalone.jar

在我的例子中,我在 /var/lib/jenkins/.lein 安装了 leiningen,这是 jenkins 安装的默认设置,并将所有者更改为 jenkins:jenkins