如何使用Gitlab CI构建Java Maven项目?
我一直在尝试,但没有取得任何成功,我正在运行一个基于Linux的Gitlab,并试图了解CI功能 根据Gitlab文档,您只需要创建一个如何使用Gitlab CI构建Java Maven项目?,java,spring,maven,gitlab-ci,gitlab-omnibus,Java,Spring,Maven,Gitlab Ci,Gitlab Omnibus,我一直在尝试,但没有取得任何成功,我正在运行一个基于Linux的Gitlab,并试图了解CI功能 根据Gitlab文档,您只需要创建一个.Gitlab ci.yml文件,即Travis ci的Gitlab实现。现在,从外观上看,您可以使用.gitlab ci.yml完成很多工作,但是很多文档都引用了Ruby和其他语言。关于如何构建javamaven项目,没有人提及 如何用Java构建一个简单的应用程序?我可以使用共享运行程序,还是应该使用特定的运行程序,在这种情况下,我应该选择什么或哪个运行程序
.Gitlab ci.yml
文件,即Travis ci的Gitlab实现。现在,从外观上看,您可以使用.gitlab ci.yml
完成很多工作,但是很多文档都引用了Ruby和其他语言。关于如何构建javamaven项目,没有人提及
如何用Java构建一个简单的应用程序?我可以使用共享运行程序,还是应该使用特定的运行程序,在这种情况下,我应该选择什么或哪个运行程序实现:ssh、docker或shell?那么,我至少应该在
.gitlab ci.yml
文件中放些什么来使用Maven构建项目?文档描述了用于控制构建的YAML语法:
job1:
script: "mvn package"
假设这只在Maven已经安装的情况下才起作用,所以您需要一个支持这一点的
我没有使用GitLab,但建议您可以进一步自定义它,以使用来执行构建。看起来很有趣,但我同意文档缺少一个Java示例。并在.gitlab ci.yml
文件中使用其中一个,例如,maven:3-jdk-11
:
image:maven:3-jdk-11
建造:
脚本:“mvn安装-B”
注意-B
,建议非交互式使用
据我所知,运行程序是共享的还是特定的并不重要。我使用这个命令,但一般来说,关于java/maven构建的文档似乎非常少见
maven-package:
script: "mvn install -B"
我想在这里补充一些信息。首先,让我们澄清一些关于共享和特定跑步者的混淆 共享跑步者: 顾名思义,shared Runner是构建流程流实例,可用于执行已安装gitlab实例中启用了允许的共享Runner选项的每个项目的作业。要做到这一点,你当然需要行政管理权。根据当前的gitlab文档,只有具有管理权限的use才能定义共享运行程序 特定运行程序这种运行程序只执行一个项目的作业 此外,在为您的项目选择runner时,请记住以下几点
我花了相当多的时间试图在Gitlab CI上设置Java项目。我在一定程度上取得了成功。如rolve所述,最直接的解决方案是使用官方回购的图像: 但是,我们有一个公司代理,它导致我的构建在获取项目依赖项时收到超时请求。我尝试了许多解决方案,最后发现了这篇帖子: 这篇文章本身就是关于设置maven,将下载的依赖项缓存在本地repo中,本地repo可以在构建之间访问。其思想是,您可以通过在.gitlab ci.yml中编写本地maven配置文件来设置缓存目录和代理
before_script:
-echo '<settings
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/cache/.m2</localRepository>
<proxies>
<proxy>
<active>true</active>
<protocol>'$PROXY_PROTOCOL'</protocol>
<host>'$PROXY_HOST'</host>
<port>'$PROXY_PORT'</port>
</proxy>
</proxies>
</settings>' > $HOME/.m2/settings.xml
build_debug1:
stage: build
script: "echo $PROXY_HOST"
build_debug2:
stage: build
script: "cat $HOME/.m2/settings.xml"
build_maven:
stage: build
script: "mvn $MAVEN_CLI_OPTS package"
artifacts:
paths:
- target/*.jar
deploy_debug1:
stage: package
script: "ls target/"
在脚本之前:
-回声'
/cache/.m2
真的
“$PROXY_协议”
“$PROXY_HOST”
“$PROXY_PORT”
'>$HOME/.m2/settings.xml
构建调试1:
阶段:建造
脚本:“echo$PROXY\u主机”
构建调试2:
阶段:建造
脚本:“cat$HOME/.m2/settings.xml”
build_maven:
阶段:建造
脚本:“mvn$MAVEN_CLI_OPTS包”
人工产品:
路径:
-target/*.jar
部署调试单元1:
阶段:包装
脚本:“ls target/”
请注意,构建调试作业仅用于查看是否正确插入了代理设置。通过转到Project->Settings->CI/CD Pipelines->Secret variables,可以使用Gitlab将代理环境变量设置为机密
最后一个deploy\u debug
作业是查看在目标目录中生成的内容 在
只需将.gitlab ci.yml
文件添加到存储库的根目录中,即可编译java maven项目,其中包含以下内容:
image: maven:latest
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
- target/
build:
stage: build
script:
- mvn compile
因此,当被问到在注册跑步者时是运行shell、ssh还是docker时,我应该选择docker,对吗?Thx,非常有效!只是一个问题:当我们在
.gitlab ci.yml
文件中指定图像时,在gitlab runner
创建过程中指定的图像会被忽略吗?e、 我用imageubuntu:latest创建了一个runner,并用yml中的maven:3-jdk-7运行了jobfile@jeanMarcAssin关于这方面的文档有点稀疏,但是本节:和foll