我一直在试验没有成功,我正在运行一个在Linux上托管的Gitlab,并试图了解CI功能。
根据Gitlab文档,您只需要创建一个.gitlab-ci.yml
文件,即Travis-CI的Gitlab实现。现在从它的外观来看,你可以用.gitlab-ci.yml
完成很多工作,但很多文档都引用了Ruby和其他语言。关于如何构建Java Maven项目没有任何说法。
如何在Java中构建一个简单的应用程序?我可以使用共享运行器,还是应该使用特定的运行器,在这种情况下,我应该选择哪种或哪种运行器实现:ssh,docker或shell?那么,我应该在.gitlab-ci.yml
文件中放入什么,至少用Maven构建项目?
答案 0 :(得分:52)
Register a Docker runner并在maven:3-jdk7
文件中使用official Maven Docker images之一,例如.gitlab-ci.yml
:
image: maven:3-jdk-7
build:
script: "mvn install -B"
请注意-B
flag,建议用于非互动用途。
据我了解,跑步者是分享还是具体并不重要。
答案 1 :(得分:4)
该文档描述了用于控制构建的YAML语法:
那你为什么不尝试从下面开始呢?:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
alert = [[UIAlertView alloc]initWithTitle:@"" message:[NSString stringWithFormat:@"Reload data ?"] delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"Cancel", nil];
[alert show];
}];
据推测,只有在已安装Maven的情况下,这才有效,因此您需要runner支持此功能。
我没有使用GitLab,但documentation建议您可以进一步自定义它以使用official Maven Docker image来执行构建。看起来非常有趣,但我同意文档缺少Java示例。
答案 2 :(得分:4)
我想在这里添加一些信息。首先让我们清楚一些关于共享和特定跑步者的困惑。
共享亚军: 正如其名称一样,共享运行程序是构建流程实例,可用于执行已安装的gitlab实例中每个项目的作业,并启用允许共享运行程序选项。要做到这一点当然你需要管理权。根据当前的gitlab文档,只有使用管理权限才能定义共享运行程序。
特定跑步者这种跑步者只执行一个项目的作业。
此外,在为项目选择跑步者时,请记住这些要点。
现在为项目选择正确的执行者,非常重要的是我们对gitlab runner的所有可用执行程序都有鸟瞰图。 Gitlab通过here提供了很好的文档解释了不同执行者可以获得的不同选项,使我们的工作变得轻松。
如果您想了解更多关于跑步者和不同执行者的信息,我建议您从这篇文章开始, Gitlab Runner
答案 3 :(得分:4)
我花了相当多的时间尝试在Gitlab CI上设置我们的Java项目。我得到了一些成功的工作。如rolve所述,最直接的解决方案是使用官方仓库中的图像:https://hub.docker.com/_/maven
但是,我们有一个公司代理,它导致我的构建在获取项目的依赖项时获得超时请求。我尝试了很多解决方案,最后发现了这篇文章:https://gitlab.com/gitlab-org/gitlab-ce/issues/15167。
帖子本身是关于设置maven来缓存本地仓库中下载的依赖项,可以在构建之间访问。我们的想法是您可以在 .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/"
请注意,构建调试作业只是为了查看代理设置是否正确注入。您可以使用Gitlab将代理环境变量设置为秘密,方法是转到Project - &gt;设置 - &gt; CI / CD管道 - &gt;秘密变量。
最后一个deploy_debug
作业是查看目标目录中生成的内容。
答案 4 :(得分:2)
我使用此命令,但一般来说,java / maven版本的文档似乎很少见
maven-package:
script: "mvn install -B"
答案 5 :(得分:0)
借助How to deploy Maven projects to Artifactory with GitLab CI/CD
您可以通过将.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