我花的時間相當數量試圖建立我們的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/"
請注意,構建調試作業僅用於查看代理設置是否正確注入。您可以通過轉至項目 - >設置 - > CI/CD管道 - >祕密變量,使用Gitlab將代理環境變量設置爲祕密。
最後的deploy_debug
作業是查看目標目錄中生成的內容。
所以當問到在註冊runner時是否運行shell,ssh或者docker,我應該選擇docker吧? – MRK187
Thx,就像一個魅力!只是一個問題:當我們在'.gitlab-ci.yml'文件中指定圖像時,'gitlab-runner'創建期間指定的圖像會被忽略?例如我使用image * ubuntu:latest *創建了一個運行器,並在yml文件中運行帶有* maven:3-jdk-7 *的作業 – PierreF
@jeanMarcAssin關於此方面的文檔有點稀疏,但本節內容爲:http:// doc。 gitlab.com/ce/ci/docker/using_docker_images.html#overwrite-image-and-services,以下兩條建議您在'.gitlab-ci.yml'文件中指定的圖像將覆蓋* runner的圖像配置有。 – rolve