6

我有一個Gradle項目,它由一個主項目和2個包含使用includeFlat指令的其他項目組成。這三個項目中的每一個在GitHub上都有自己的回購。爲了構建它,我將所有3個項目簽入共同的頂級文件夾,然後將cd加入主項目並運行gradle build。它效果很好!使用AWS CodePipeline在Jenkins中構建多個Gradle項目

現在我需要將生成的應用程序部署到AWS EB(Elastic Beanstalk),當我在本地生成工件並手動部署時,這也非常有用。我想自動化這個過程,所以我試圖使用CodePipelines + Jenkins來設置它,如this document中所述,並針對Gradle進行了調整。

問題是,如果我在管道中指定了3個源文件,我最終會在我的項目中互相提取並在Jenkins工作區中創建一個混亂。我需要以某種方式配置每個項目在Jenkins工作區內輸出到它自己的目錄,我只是沒有看到一個方法來做到這一點(至少在UI中)

然後,當然即使我達到了我想要的我需要以某種方式cd進入主目錄運行gradle build並再次我不知道該怎麼做

PS來自@Phil的偉大建議,但不幸的是,似乎CodePipeline does not currently support Git子模塊或子樹

+0

你不能使用類似git子模塊的東西嗎? https://git-scm.com/docs/gitsubmodules – Phil

+0

有趣的想法,雖然我更喜歡有一個平坦的項目結構 – Bostone

+0

但是,你是否已經有每個項目單獨回購?你可以創建另一個父項目,將它們全部包含到它們自己的目錄中作爲子模塊,並將其用於你的構建 – Phil

回答

0

我會開始共同建設,當任何3回購變化發生。如果延遲5分鐘,即使單個構建,即使更改被引入多個回購。

我看不到使用eb deploy ......以前的方式處理部署的好方法......請在您的jenkins機器上安裝aws工具。創建成功構建時觸發的部署作業。並且讓bash腳本在那裏進行部署。請提供有關您的部署的更多詳細信息,這樣我可以幫助部署腳本。

+0

Jenkins已經在EC2上運行。我不清楚你要去哪裏?我想我已經清楚地說明了我的問題:3個GitHub項目,1個主控,2個子項目(includeFlat)。我認爲你提出的幾乎與我在主要職位的評論中描述的一樣:在涉及的項目上有一個觸發器,忽略最初的代碼並從gradle腳本(在你的案例中是bash)執行scm。此時對我來說不值得麻煩,不幸的是 – Bostone

+0

在你的jenkins上安裝aws工具,使用'eb'工具。創建將部署您的工件的工作。或者以其他方式 - 在詹基斯上做你手動做的事情。也許在腳本中,而不是在控制檯中,但這僅僅是不同的工具。 –

相關問題