2013-08-05 27 views
1

我有一個Grails(2.2.3)項目,我試圖在CloudBees上構建。該項目使用第三方庫,目前尚未託管任何公共回購項目。因此,我需要將此庫jar發佈到Jenkins構建於CLoudbees上的私有Maven回購庫。我如何擁有CloudBees Jenkins Grails可以從私有Maven存儲庫中構建一個JAR?

我已經successfuly內置的第三方jar,並將其發佈到我的本地Maven回購我的電腦上。

按方向在http://wiki.cloudbees.com/bin/view/DEV/CloudBees+Private+Maven+Repository,我已經出版了第三方罐子我CloudBees的釋放和快照庫。

但是,這對於Cloudbees Jenkins構建來獲取單獨的jar是不夠的。

我知道在我的構建設置中的其他一切都很好,因爲如果我將第三方jar添加到我的grails應用程序的/ lib /文件夾中,構建會通過,但將相關性添加到/ lib /文件夾不是很好的做法,所以我想避免它。

這是我看到試圖建立時的錯誤:

| Loading Grails 2.2.3 
| Configuring classpath 
:: problems summary :: 
:::: WARNINGS 
     module not found: com.singly#singly-sdk;1.0.0-SNAPSHOT 
    ==== grailsPlugins: tried 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /scratch/jenkins/workspace/foobarapp master/foobarapp/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/cache-1.0.0/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/hibernate-2.2.3/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/webxml-1.4.1/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/jquery-1.8.0/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/tomcat-2.2.3/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/database-migration-1.1/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/resources-1.1.6/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/2.2.3/projects/foobarapp/plugins/rest-0.7/lib/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsHome: tried 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/lib/com.singly/singly-sdk/ivy-1.0.0-SNAPSHOT.xml 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/lib/com.singly/singly-sdk/jars/singly-sdk-1.0.0-SNAPSHOT.jar 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/lib/com.singly/singly-sdk/bundles/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsHome: tried 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/src/libs/singly-sdk-1.0.0-SNAPSHOT.xml 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/src/libs/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsHome: tried 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/dist/singly-sdk-1.0.0-SNAPSHOT.xml 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/dist/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsHome: tried 
     /home/jenkins/.grails/2.2.3/cached-installed-plugins/singly-sdk-1.0.0-SNAPSHOT.xml 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.grails/2.2.3/cached-installed-plugins/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsHome: tried 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/plugins/singly-sdk-1.0.0-SNAPSHOT.pom 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.grails/wrapper/2.2.3/grails-2.2.3/plugins/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== grailsCentral: tried 
     http://grails.org/plugins/grails-singly-sdk/tags/RELEASE_1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.pom 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     http://grails.org/plugins/grails-singly-sdk/tags/RELEASE_1.0.0-SNAPSHOT/grails-singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== localMavenResolver: tried 
     /home/jenkins/.m2/repository/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.pom 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.m2/repository/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== mavenCentral: tried 
     http://repo1.maven.org/maven2/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.pom 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     http://repo1.maven.org/maven2/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.jar 
    ==== localMavenResolver: tried 
     /home/jenkins/.m2/repository/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.pom 
     -- artifact com.singly#singly-sdk;1.0.0-SNAPSHOT!singly-sdk.jar: 
     /home/jenkins/.m2/repository/com/singly/singly-sdk/1.0.0-SNAPSHOT/singly-sdk-1.0.0-SNAPSHOT.jar 
     :::::::::::::::::::::::::::::::::::::::::::::: 
     ::   UNRESOLVED DEPENDENCIES   :: 
     :::::::::::::::::::::::::::::::::::::::::::::: 
     :: com.singly#singly-sdk;1.0.0-SNAPSHOT: not found 
     :::::::::::::::::::::::::::::::::::::::::::::: 

本質上說,詹金斯不知道它在CloudBees的快照看看或釋放資源庫爲好。

該文件:http://wiki.cloudbees.com/bin/view/DEV/Sharing+Files+with+Build+Executors 說,你可以配置CloudBees的詹金斯建立使用你選擇的Maven的settings.xml文件,但CloudBees的的Grails Jeknins建設似乎並沒有提供設置自定義的方式行家的settings.xml

什麼我需要做的就是在CloudBees的Grails的Jenikns建立獲取罐子從CloudBees的快照或釋放庫?

回答

2

我有應該有你最需要的東西非常類似的例子在線:它實際上是一個Android搖籃構建使用庫中的私有(釋放)的Maven上CloudBees的回購。

實際的構建是在這裏:android-gradle-google-apis

項目生成的文件是在這裏:build.gradle

拿起CloudBees的託管回購,你只需要添加以下內容:

repositories { 
    mavenCentral() 
    maven { 
     url "https://repository-partnerdemo.forge.cloudbees.com/release/" 
    } 
} 

如果您使用DEV @ cloud,則無需對settings.xml執行任何操作,因爲它會自動配置爲允許您訪問您的私人回購站。如果您還想在本地構建,那麼您需要將服務器條目添加到本地settings.xml中,如CloudBees Private Maven Repositories中所述。

有一個例子構建,顯示如何配置編譯安裝庫到您的私人回購在這裏:maven-android-sdk-deployer

有解釋上developer.cloudbees.com的背景,這一切的文檔。

+0

謝謝。然而,我仍然面臨這個問題。多一點調查顯示,即使我的本地機器無法在運行grails編譯時從cloudbees發行版repo中刪除工件。但是,同一臺機器能夠將這些工件發佈到同一個cloudbees發行版回購。我在調試模式下運行Grails編譯器,但無法弄清楚錯誤的含義。基本上:1.可以通過maven發佈到回購。 2.可以通過瀏覽器訪問回購3.無法通過回購從maven訪問。如果我發現我做錯了什麼,我會更新。 – Aml

0

終於明白出了什麼問題:我需要在BuildConfig中擁有maven證書。groovy

CloudBees支持工程師對此很有幫助。

在我的grails-app/conf目錄/ BuildConfig.groovy,我需要有這樣的:

grails.project.dependency.resolution = { 

    repositories { 
     ... 
     mavenRepo "https://repository-foobar.forge.cloudbees.com/release/" 
     ... 
    } 

    credentials { 
     realm = "foobarrealm" 
     host = "repository-foobar.forge.cloudbees.com" 
     username = "foobarusername" 
     password = 'foobarencryptedpassword' 
    } 
} 
相關問題