日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

与詹金斯一起将GitLab中的Gradle项目发布到Artifactory

發布時間:2023/12/3 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 与詹金斯一起将GitLab中的Gradle项目发布到Artifactory 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我將詳細展示如何定期構建您的項目,然后如何進行發布。 它涉及許多工具的協作,我發現這些工具難以正確設置,這就是我編寫此代碼的原因。

目標

我將向您展示如何實現以下兩種方案。 第一個是如何進行常規開發的非發行版:

  • 實現一些東西,提交并推送到GitLab。
  • 通過GitLab的Web鉤子觸發Jenkins構建。
  • 生成,測試,組裝然后將二進制JAR發布到Artifactory存儲庫。
  • 第二個也是更有趣的目標是當您要構建發行版本時:

  • 運行使用Gradle版本插件的參數化Jenkins構建:
  • 驗證項目符合要發布的特定條件。
  • 使用發行版本號創建Git標簽。
  • 修改Gradle項目版本以允許進一步開發。
  • 提交此更改并將其推送到GitLab。
  • 觸發另一個通用參數Jenkins構建,以將發布工件發布到Artifactory。
  • 情況

    我將演示描述使用Gradle構建的真實Scala項目的過程 構建服務器是Jenkins 。 二進制工件被發布到運行Artifactory免費版的服務器上。 版本控制系統是GitLab的免費社區版本。 我確信您可以對任何Java應用程序遵循本指南。 為了使本指南更加清楚,我們假設您的URL在以下位置:

    • 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.gradle

    搖籃項目

    我使用Gradle包裝器,如果尚未在機器上安裝Gradle本身,它只是下載和安裝Gradle本身的便捷工具。 不需要。 但是您需要具有以下三個文件:

    settings.gradle –用于多個項目的通用Gradle設置,對于我們來說并不是必需的

    rootProject.name = name

    gradle.properties –包含組名稱,項目名稱和版本

    group=com.buransky name=release-example version=1.0.0-SNAPSHOT

    build.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。 我什么都沒輸入,我只是按回車鍵確認了默認值。

    查看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
    • 搖籃 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。