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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

詹金斯搭建

我將詳細(xì)展示如何定期構(gòu)建您的項(xiàng)目,然后如何進(jìn)行發(fā)布。 它涉及許多工具的協(xié)作,我發(fā)現(xiàn)很難正確設(shè)置這些工具,這就是我編寫此代碼的原因。

目標(biāo)

我將向您展示如何實(shí)現(xiàn)以下兩種方案。 第一個(gè)是如何進(jìn)行常規(guī)開發(fā)的非發(fā)行版:

  • 實(shí)現(xiàn)一些東西,提交并推送到GitLab。
  • 通過GitLab的Web鉤子觸發(fā)Jenkins構(gòu)建。
  • 生成,測(cè)試,組裝然后將二進(jìn)制JAR發(fā)布到Artifactory存儲(chǔ)庫(kù)。
  • 第二個(gè)也是更有趣的目標(biāo)是當(dāng)您要構(gòu)建發(fā)行版本時(shí):

  • 運(yùn)行使用Gradle版本插件的參數(shù)化Jenkins構(gòu)建:
  • 驗(yàn)證項(xiàng)目符合要發(fā)布的特定條件。
  • 使用發(fā)行版本號(hào)創(chuàng)建Git標(biāo)簽。
  • 修改Gradle項(xiàng)目版本以允許進(jìn)一步開發(fā)。
  • 提交此更改并將其推送到GitLab。
  • 觸發(fā)另一個(gè)通用參數(shù)Jenkins構(gòu)建,以將發(fā)布工件發(fā)布到Artifactory。
  • 情況

    我將演示描述使用Gradle構(gòu)建的真實(shí)Scala項(xiàng)目的過程 構(gòu)建服務(wù)器是Jenkins 。 二進(jìn)制工件被發(fā)布到運(yùn)行免費(fèi)版本Artifactory的服務(wù)器上。 版本控制系統(tǒng)是GitLab的免費(fèi)社區(qū)版本。 我確信您可以對(duì)任何Java應(yīng)用程序遵循本指南。 為了清楚起見,假設(shè)您的網(wǎng)址如下:

    • GitLab存儲(chǔ)庫(kù)(SSH)= git@gitlab.local:com.buransky / release-example.git
    • Jenkins服務(wù)器= http:// jenkins /
    • Artifactory服務(wù)器= http:// artifactory /

    項(xiàng)目結(jié)構(gòu)

    沒什么特別的。 我使用常見的目錄結(jié)構(gòu):

    <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項(xiàng)目

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

    settings.gradle –用于多個(gè)項(xiàng)目的通用Gradle設(shè)置,對(duì)于我們來說并不是必需的

    rootProject.name = name

    gradle.properties –包含組名稱,項(xiàng)目名稱和版本

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

    build.gradle – Gradle項(xiàng)目的主要定義

    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}' }

    添加以下內(nèi)容以生成帶有源的JAR文件:

    task sourcesJar(type: Jar, dependsOn: classes) {classifier = 'sources'from sourceSets.main.allSource }artifacts {archives sourcesJararchives jar }

    讓我們測(cè)試一下。 從shell運(yùn)行此命令:

    $ gradle assemble :compileJava :compileScala :processResources :classes :jar :sourcesJar :assembleBUILD SUCCESSFUL

    現(xiàn)在,您應(yīng)該在build / libs目錄中有兩個(gè)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

    由于我尚未使用必需的參數(shù)運(yùn)行發(fā)布任務(wù),因此該構(gòu)建是交互式的,要求我首先輸入(或確認(rèn))發(fā)布版本1.0.0。 然后,它再次要求我輸入下一個(gè)工作版本,該插件自動(dòng)建議該版本為1.0.1-SNAPSHOT。 我沒有輸入任何內(nèi)容,只是按Enter確認(rèn)了默認(rèn)值。

    查看Git歷史記錄,您應(yīng)該在本地存儲(chǔ)庫(kù)以及GitLab中看到名為v1.0.0的標(biāo)簽。 還要打開gradle.properties文件,您應(yīng)該看到版本已更改為version = 1.0.1-SNAPSHOT。

    發(fā)布任務(wù)需要做很多事情。 例如,您的工作目錄不得包含未提交的更改。 或所有項(xiàng)目依賴項(xiàng)都必須是發(fā)行版(它們不能是快照)。 否則您當(dāng)前的分支必須是主分支。 另外,您還必須具有在GitLab中推送到master分支的權(quán)限,因?yàn)榘l(fā)布插件將執(zhí)行g(shù)it push。

    設(shè)置工廠

    在Artifactory方面沒有特殊要求。 我假設(shè)它已經(jīng)啟動(dòng)并在http:// artifactory /上運(yùn)行。 當(dāng)然,您的網(wǎng)址可能有所不同。 默認(rèn)安裝已經(jīng)有兩個(gè)存儲(chǔ)庫(kù),我們將發(fā)布它們:

    • libs-release-local
    • libs-snapshot-local

    Jenkins Artifactory插件

    該插件將Jenkins與Artifactory集成在一起,從而可以發(fā)布Jenkins構(gòu)建中的工件。 安裝插件,轉(zhuǎn)到Jenkins配置,在Artifactory部分中添加新的Artifactory服務(wù)器并進(jìn)行以下設(shè)置:

    • 網(wǎng)址= http:// artifactory /(您有所不同)
    • 默認(rèn)部署者憑證
      • 為有權(quán)部署的現(xiàn)有Artifactory用戶提供用戶名和密碼

    單擊測(cè)試連接按鈕,以確保該部分正常工作。

    持續(xù)集成Jenkins構(gòu)建

    這是在每次向master分支提交并推送到GitLab之后運(yùn)行的構(gòu)建。 將其創(chuàng)建為新的自由式項(xiàng)目,并為其命名。 這是此構(gòu)建的步驟和設(shè)置的列表:

    • 源代碼管理– Git
      • 資料庫(kù)URL = git@gitlab.local:com.buransky / release-example.git(您有所不同)
    • 構(gòu)建觸發(fā)器
      • 輪詢SCM(這是必需的,以便GitLab上的Webhook起作用)
    • 搭建環(huán)境
      • Gradle-Artifactory集成(需要Artifactory插件)
    • 人工配置
      • Artifactory服務(wù)器= http:// artifactory /(您有所不同)
    • 構(gòu)建–調(diào)用Gradle腳本
      • 使用Gradle包裝器

    運(yùn)行構(gòu)建,然后轉(zhuǎn)到Artifactory,以檢查快照是否已成功發(fā)布。 我使用樹瀏覽器導(dǎo)航到libs-snapshot-local / com / buransky / release-example / 1.0.1-SNAPSHOT。 在那里您應(yīng)該找到:

    • 二進(jìn)制JAR
    • 源JAR
    • POM文件

    每次運(yùn)行此構(gòu)建時(shí),都會(huì)在此處添加新的三個(gè)文件。 您可以配置Artifactory刪除舊快照以節(jié)省空間。 我只保留5張最新快照。

    從GitLab觸發(fā)Jenkins構(gòu)建

    我們懶得手動(dòng)運(yùn)行我們剛剛創(chuàng)建的持續(xù)集成Jenkins構(gòu)建。 我們可以將GitLab配置為在每次推送后自動(dòng)為我們完成。 轉(zhuǎn)到您的GitLab項(xiàng)目設(shè)置的Web Hooks部分。 輸入以下內(nèi)容,然后單擊“添加Web掛鉤”按鈕:

    • 網(wǎng)址= http:// jenkins / git / notifyCommit?url=git@gitlab.local:com.buransky / release-example.git
      • 嘿!
    • 觸發(fā)=推送事件

    如果嘗試測(cè)試此掛鉤并單擊“測(cè)試掛鉤”按鈕,則可能會(huì)驚訝于沒有觸發(fā)任何構(gòu)建。 原因(很多時(shí)候)可能是該機(jī)制非常智能,如果沒有新的提交,則構(gòu)建不會(huì)運(yùn)行。 因此,對(duì)源代碼進(jìn)行更改,提交,推送,然后觸發(fā)Jenkins構(gòu)建。

    休息一下,喝杯咖啡

    這已經(jīng)是很多工作了。 我們現(xiàn)在可以做很多事情。 服務(wù)器工作并相互通信。 我希望您可能需要在各個(gè)計(jì)算機(jī)之間設(shè)置SSH,但這超出了此范圍。 準(zhǔn)備繼續(xù)嗎? 讓我們釋放這個(gè)sh * t。

    通用Jenkins構(gòu)建后將發(fā)布發(fā)布給Artifactory

    我們將創(chuàng)建一個(gè)參數(shù)化的Jenkins構(gòu)建,該構(gòu)建從git中檢出發(fā)行版,進(jìn)行構(gòu)建并將工件部署到Artifactory。 此構(gòu)建是通用的,因此可以將其重新用于單個(gè)項(xiàng)目。 讓我們從新的自由式Jenkins項(xiàng)目開始,然后設(shè)置以下內(nèi)容:

    • 項(xiàng)目名稱=向Artifactory發(fā)布發(fā)行
    • 此構(gòu)建已參數(shù)化
      • 字符串參數(shù)
    • 源代碼管理– Git
      • 存儲(chǔ)庫(kù)URL = $ GIT_REPOSITORY_URL
    • 搭建環(huán)境
      • 開始構(gòu)建之前刪除工作空間
    • 人工配置
      • Artifactory服務(wù)器= http:// artifactory /(您有所不同)
    • 構(gòu)建–調(diào)用Gradle腳本
      • 使用Gradle包裝器

    通用Jenkins構(gòu)建以發(fā)布Gradle項(xiàng)目

    我們還需要一個(gè)可重用的參數(shù)化Jenkins構(gòu)建,它使用提供的參數(shù)運(yùn)行Gradle版本插件,然后觸發(fā)我們已經(jīng)創(chuàng)建的通用發(fā)布Jenkins構(gòu)建。

    • 項(xiàng)目名稱= Release Gradle項(xiàng)目
    • 此構(gòu)建已參數(shù)化
      • 字符串參數(shù)
    • 源代碼管理– Git
      • 存儲(chǔ)庫(kù)URL = $ GIT_REPOSITORY_URL
    • 其他行為
      • 簽到特定的本地分支機(jī)構(gòu)
    • 構(gòu)建–調(diào)用Gradle腳本
      • 使用Gradle包裝器
    • 觸發(fā)器/調(diào)用建立在另一個(gè)項(xiàng)目上(需要參數(shù)化觸發(fā)器插件)
      • 要構(gòu)建的項(xiàng)目=將發(fā)布發(fā)布到Artifactory

    最終版本

    現(xiàn)在我們終于準(zhǔn)備好為我們的項(xiàng)目創(chuàng)建一個(gè)構(gòu)建,該構(gòu)建將創(chuàng)建一個(gè)發(fā)行版。 它只會(huì)調(diào)用先前創(chuàng)建的通用內(nèi)部版本。 上一次,創(chuàng)建新的自由式Jenkins項(xiàng)目,然后:

    • 項(xiàng)目名稱=示例發(fā)行版
    • 此構(gòu)建已參數(shù)化
      • 字符串參數(shù)
    • 為運(yùn)行準(zhǔn)備環(huán)境
      • 保留Jenkins環(huán)境變量
    • 源代碼管理– Git
      • 從另一個(gè)項(xiàng)目使用SCM
    • 搭建環(huán)境
      • 開始構(gòu)建之前刪除工作空間
    • 建立
      • 使用其他項(xiàng)目中的構(gòu)建器

    讓我們嘗試發(fā)布示例項(xiàng)目。 如果按照我的步驟進(jìn)行操作,則該項(xiàng)目當(dāng)前應(yīng)為1.0.1-SNAPSHOT版本。 將發(fā)布版本1.0.1,并將當(dāng)前項(xiàng)目版本提升到下一個(gè)開發(fā)版本1.0.2-SNAPSHOT。 因此,只需運(yùn)行示例發(fā)布版本并進(jìn)行設(shè)置:

    • 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

    結(jié)論

    我確信本指南中肯定有一些錯(cuò)誤,也許我也忘記提及關(guān)鍵步驟了。 如果您遇到任何問題,請(qǐng)告訴我,我們將嘗試解決。 它可以在我的機(jī)器上工作,因此必須有一種方法使其在您的機(jī)器上工作。

    翻譯自: https://www.javacodegeeks.com/2015/09/release-gradle-project-in-gitlab-with-jenkins-to-artifactory.html

    詹金斯搭建

    總結(jié)

    以上是生活随笔為你收集整理的詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。