跳过正文
Background Image
  1. Posts/

Artifactory 与 Jenkins 集成

·719 字·2 分钟· ·
沈显鹏
作者
沈显鹏
目录

上一篇 初识 JFrog Artifactory,介绍了什么是 Artifactory,以及如何安装、启动和升级。

本篇介绍 Artifactory 与 Jenkins 的集成,因为没有与 CI 工具集成的 Artifactory 是没有灵魂的。

通过集成,可以让 Jenkins 在完成构建之后,可以直接将制品(比如 build)推送到 Artifactory,供测试下载、部署或是后续的 Jenkins 任务去继续进行持续集成。

Jenkins 里配置 Artifactory
#

打开 Manage Jenkins->Configure System,找到 Artifactory,点击 Add Artifactory Server, 输入 Server ID 和 URL

  1. Server ID 是给你的 Artifactory 起个别名,这样使用 Jenkins pipeline 的时候会用到
  2. URL 是你的 Artifactory 服务器的地址,例如 http://art.company.com:8040/artifactory
  3. 配置完成后,点击Test Connection,返回 Found Artifactory 6.14.0 表示配置成功。

如图所示:

配置和测试

使用 Pipeline 调用 Artifactory
#

这里演示了两种方式,我在项目中用的是 Jenkins Shared Library;当然你也可以仅仅使用 Jenkinsfile,把如下两个 groovy 文件组合成一个 Jenkinsfile。

方式1:Jenkins Shared Library
#

build.groovy

def call() {
  pipeline {
    # 省略其他代码
    post {
      # 这里只有在 Jenkins Job 成功的时候才将 build post 到 artifactory
      success {
        script {
          if (env.BRANCH_NAME == 'develop') {
            # 如果当前是 develop 分支,则将 release 和 debug build 都 post 到 artifactory
            artifactory("${PATTERN_RELEASE_PATH}", "${TARGET_PATH}", "${BUILD_NAME}", "${BUILD_NUMBER}")
            artifactory("${PATTERN_DEBUG_PATH}",   "${TARGET_PATH}", "${BUILD_NAME}", "${BUILD_NUMBER}")
        } else if (env.BRANCH_NAME.startsWith('PR')) {
            # 如果当前是 pull request 分支,则只将 release build 都 post 到 artifactory
            artifactory("${PATTERN_RELEASE_PATH}", "${TARGET_PATH}", "${BUILD_NAME}", "${BUILD_NUMBER}")
          }
        }
      }
    }
  }
}

artifactory.groovy

import groovy.transform.Field

@Field artifactoryServerId   = "art-1"
@Field artifactoryURL        = "http://art.company.com:8040/artifactory"
@Field artifactoryCredential = "d1cbab74-823d-41aa-abb7"

def call(String patternPath, String targetPath, String buildName, String buildNumber) {
  rtServer (
    id: "${artifactoryServerId}",
    url: "${artifactoryURL}",
    credentialsId: "${artifactoryCredential}"
  )
  rtPublishBuildInfo (
      serverId: "${artifactoryServerId}"
  )
  rtUpload (
    serverId: "${artifactoryServerId}",
    spec: """{
      "files": [
        {
        "pattern": "${patternPath}",
        "target": "${targetPath}"
        }
      ]
    }""",
    buildNumber: "${buildNumber}",
    buildName: "${buildName}",
  )
}

方式2:Jenkinsfile
#

pipeline {
  # 省略其他代码
  stage('config art'){
    rtServer (
    id: "art-1",
    url: "http://art.company.com:8040/artifactory",
    credentialsId: "d1cbab74-823d-41aa-abb7")
  }
  post {
    # 这里只有在 Jenkins Job 成功的时候才将 build post 到 artifactory
    success {
      script {
        if (env.BRANCH_NAME == 'develop') {
          rtUpload (
            serverId: "art-1",
            spec: """{
              "files": [
                {
                "pattern": "/release/build/*.zip",
                "target": "demo/develop/"
                }
              ]
            }""",
            buildNumber: "${buildNumber}",
            buildName: "${buildName}",
          )
      } else if (env.BRANCH_NAME.startsWith('PR')) {
          rtUpload (
            serverId: "art-1",
            spec: """{
                "files": [
                  {
                  "pattern": "/release/build/*.zip",
                  "target": "demo/pull-request/"
                  }
                ]
            }""",
            buildNumber: "${buildNumber}",
            buildName: "${buildName}",
          )
        }
      }
    }
  }
}

Jenkins 与 Artifactory 集成成功
#

蓝色表示构建成功,绿色圆圈表示 Build 已经 Post 到 Artifactory 上了。

显示构建以及 Post 成功

点击绿色圆圈可以跳转到 Artifactory 看到制品。

Artifactory

Jenkins 与 Artifactory 打通了。完!

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
初识 JFrog Artifactory
·896 字·2 分钟
JFrog Artifactory 是一个强大的二进制存储库管理器,本文介绍其安装、升级和使用方法。