詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory
詹金斯搭建
我將詳細展示如何定期構建您的項目,然后如何進行發布。 它涉及許多工具的協作,我發現很難正確設置這些工具,這就是我編寫此代碼的原因。
目標
我將向您展示如何實現以下兩種方案。 第一個是如何進行常規開發的非發行版:
第二個也是更有趣的目標是當您要構建發行版本時:
情況
我將演示描述使用Gradle構建的真實Scala項目的過程。 構建服務器是Jenkins 。 二進制工件被發布到運行免費版本Artifactory的服務器上。 版本控制系統是GitLab的免費社區版本。 我確信您可以對任何Java應用程序遵循本指南。 為了清楚起見,假設您的網址如下:
- GitLab存儲庫(SSH)= git@gitlab.local:com.buransky / release-example.git
- Jenkins服務器= http:// jenkins /
- Artifactory服務器= http:// artifactory /
項目結構
沒什么特別的。 我使用常見的目錄結構:
<project root>+ build (build output)+ gradle (Gradle wrapper)+ src (source code)+ main+ scala+ test+ scala- build.gradle- gradle.properties- gradlew- gradlew.bat- settings.gradleGradle項目
我使用Gradle包裝器,如果尚未將Gradle本身安裝在機器上,它只是下載和安裝Gradle本身的便捷工具。 不需要。 但是您需要具有以下三個文件:
settings.gradle –用于多個項目的通用Gradle設置,對于我們來說并不是必需的
rootProject.name = namegradle.properties –包含組名稱,項目名稱和版本
group=com.buransky name=release-example version=1.0.0-SNAPSHOTbuild.gradle – Gradle項目的主要定義
buildscript {repositories {mavenCentral()maven { url 'http://repo.spring.io/plugins-release' }}... }plugins {id 'scala'id 'maven'id 'net.researchgate.release' version '2.1.2' }group = group version = version...release {preTagCommitMessage = '[Release]: 'tagCommitMessage = '[Release]: creating tag 'newVersionCommitMessage = '[Release]: new snapshot version 'tagTemplate = 'v${version}' }添加以下內容以生成帶有源的JAR文件:
task sourcesJar(type: Jar, dependsOn: classes) {classifier = 'sources'from sourceSets.main.allSource }artifacts {archives sourcesJararchives jar }讓我們測試一下。 從shell運行此命令:
$ gradle assemble :compileJava :compileScala :processResources :classes :jar :sourcesJar :assembleBUILD SUCCESSFUL現在,您應該在build / libs目錄中有兩個JAR文件:
- 版本示例1.0.0-SNAPSHOT.jar
- 版本示例1.0.0-SNAPSHOT-sources.jar
好的,所以如果這可行,讓我們嘗試釋放它:
$ gradle release :release :release-example:createScmAdapter :release-example:initScmAdapter :release-example:checkCommitNeeded :release-example:checkUpdateNeeded :release-example:unSnapshotVersion > Building 0% > :release > :release-example:confirmReleaseVersion ??> This release version: [1.0.0] :release-example:confirmReleaseVersion :release-example:checkSnapshotDependencies :release-example:runBuildTasks :release-example:beforeReleaseBuild UP-TO-DATE :release-example:compileJava UP-TO-DATE :release-example:compileScala :release-example:processResources UP-TO-DATE :release-example:classes :release-example:jar :release-example:assemble :release-example:compileTestJava UP-TO-DATE :release-example:compileTestScala :release-example:processTestResources :release-example:testClasses :release-example:test :release-example:check :release-example:build :release-example:afterReleaseBuild UP-TO-DATE :release-example:preTagCommit :release-example:createReleaseTag > Building 0% > :release > :release-example:updateVersion ??> Enter the next version (current one released as [1.0.0]): [1.0.1-SNAPSHOT] :release-example:updateVersion :release-example:commitNewVersionBUILD SUCCESSFUL由于我尚未使用必需的參數運行發布任務,因此該構建是交互式的,要求我首先輸入(或確認)發布版本1.0.0。 然后,它再次要求我輸入下一個工作版本,該插件自動建議該版本為1.0.1-SNAPSHOT。 我沒有輸入任何內容,只是按Enter確認了默認值。
查看Git歷史記錄,您應該在本地存儲庫以及GitLab中看到名為v1.0.0的標簽。 還要打開gradle.properties文件,您應該看到版本已更改為version = 1.0.1-SNAPSHOT。
發布任務需要做很多事情。 例如,您的工作目錄不得包含未提交的更改。 或所有項目依賴項都必須是發行版(它們不能是快照)。 否則您當前的分支必須是主分支。 另外,您還必須具有在GitLab中推送到master分支的權限,因為發布插件將執行git push。
設置工廠
在Artifactory方面沒有特殊要求。 我假設它已經啟動并在http:// artifactory /上運行。 當然,您的網址可能有所不同。 默認安裝已經有兩個存儲庫,我們將發布它們:
- libs-release-local
- libs-snapshot-local
Jenkins Artifactory插件
該插件將Jenkins與Artifactory集成在一起,從而可以發布Jenkins構建中的工件。 安裝插件,轉到Jenkins配置,在Artifactory部分中添加新的Artifactory服務器并進行以下設置:
- 網址= http:// artifactory /(您有所不同)
- 默認部署者憑證
- 為有權部署的現有Artifactory用戶提供用戶名和密碼
單擊測試連接按鈕,以確保該部分正常工作。
持續集成Jenkins構建
這是在每次向master分支提交并推送到GitLab之后運行的構建。 將其創建為新的自由式項目,并為其命名。 這是此構建的步驟和設置的列表:
- 源代碼管理– Git
- 資料庫URL = git@gitlab.local:com.buransky / release-example.git(您有所不同)
- 構建觸發器
- 輪詢SCM(這是必需的,以便GitLab上的Webhook起作用)
- 搭建環境
- Gradle-Artifactory集成(需要Artifactory插件)
- 人工配置
- Artifactory服務器= http:// artifactory /(您有所不同)
- 構建–調用Gradle腳本
- 使用Gradle包裝器
運行構建,然后轉到Artifactory,以檢查快照是否已成功發布。 我使用樹瀏覽器導航到libs-snapshot-local / com / buransky / release-example / 1.0.1-SNAPSHOT。 在那里您應該找到:
- 二進制JAR
- 源JAR
- POM文件
每次運行此構建時,都會在此處添加新的三個文件。 您可以配置Artifactory刪除舊快照以節省空間。 我只保留5張最新快照。
從GitLab觸發Jenkins構建
我們懶得手動運行我們剛剛創建的持續集成Jenkins構建。 我們可以將GitLab配置為在每次推送后自動為我們完成。 轉到您的GitLab項目設置的Web Hooks部分。 輸入以下內容,然后單擊“添加Web掛鉤”按鈕:
- 網址= http:// jenkins / git / notifyCommit?url=git@gitlab.local:com.buransky / release-example.git
- 嘿!
- 觸發=推送事件
如果嘗試測試此掛鉤并單擊“測試掛鉤”按鈕,則可能會驚訝于沒有觸發任何構建。 原因(很多時候)可能是該機制非常智能,如果沒有新的提交,則構建不會運行。 因此,對源代碼進行更改,提交,推送,然后觸發Jenkins構建。
休息一下,喝杯咖啡
這已經是很多工作了。 我們現在可以做很多事情。 服務器工作并相互通信。 我希望您可能需要在各個計算機之間設置SSH,但這超出了此范圍。 準備繼續嗎? 讓我們釋放這個sh * t。
通用Jenkins構建后將發布發布給Artifactory
我們將創建一個參數化的Jenkins構建,該構建從git中檢出發行版,進行構建并將工件部署到Artifactory。 此構建是通用的,因此可以將其重新用于單個項目。 讓我們從新的自由式Jenkins項目開始,然后設置以下內容:
- 項目名稱=向Artifactory發布發行
- 此構建已參數化
- 字符串參數
- 源代碼管理– Git
- 存儲庫URL = $ GIT_REPOSITORY_URL
- 搭建環境
- 開始構建之前刪除工作空間
- 人工配置
- Artifactory服務器= http:// artifactory /(您有所不同)
- 構建–調用Gradle腳本
- 使用Gradle包裝器
通用Jenkins構建以發布Gradle項目
我們還需要一個可重用的參數化Jenkins構建,它使用提供的參數運行Gradle版本插件,然后觸發我們已經創建的通用發布Jenkins構建。
- 項目名稱= Release Gradle項目
- 此構建已參數化
- 字符串參數
- 源代碼管理– Git
- 存儲庫URL = $ GIT_REPOSITORY_URL
- 其他行為
- 簽到特定的本地分支機構
- 構建–調用Gradle腳本
- 使用Gradle包裝器
- 觸發器/調用建立在另一個項目上(需要參數化觸發器插件)
- 要構建的項目=將發布發布到Artifactory
最終版本
現在我們終于準備好為我們的項目創建一個構建,該構建將創建一個發行版。 它只會調用先前創建的通用內部版本。 上一次,創建新的自由式Jenkins項目,然后:
- 項目名稱=示例發行版
- 此構建已參數化
- 字符串參數
- 為運行準備環境
- 保留Jenkins環境變量
- 源代碼管理– Git
- 從另一個項目使用SCM
- 搭建環境
- 開始構建之前刪除工作空間
- 建立
- 使用其他項目中的構建器
讓我們嘗試發布示例項目。 如果按照我的步驟進行操作,則該項目當前應為1.0.1-SNAPSHOT版本。 將發布版本1.0.1,并將當前項目版本提升到下一個開發版本1.0.2-SNAPSHOT。 因此,只需運行示例發布版本并進行設置:
- RELEASE_VERSION = 1.0.1
- NEW_VERSION = 1.0.2-快照
使用的工具
- 斯卡拉 2.11
- Gradle 2.4
- Gradle Release插件 2.1.2
- 詹金斯 1.617
- Artifactory插件 2.3.1
- Artifactory 3.3.0
- 亞搏體育app 7.7.2
結論
我確信本指南中肯定有一些錯誤,也許我也忘記提及關鍵步驟了。 如果您遇到任何問題,請告訴我,我們將嘗試解決。 它可以在我的機器上工作,因此必須有一種方法使其在您的機器上工作。
翻譯自: https://www.javacodegeeks.com/2015/09/release-gradle-project-in-gitlab-with-jenkins-to-artifactory.html
詹金斯搭建
總結
以上是生活随笔為你收集整理的詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查端口linux(查端口 linux)
- 下一篇: 软件安卓系统管家(安卓系统管家)