You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions任务中获取JFrog最新上传的快照制品名称

JFrog最新快照制品检索方案(适配GitHub Actions,无大文件归档开销)

完全不需要使用upload-artifact归档180MB的构建产物,直接通过JFrog原生能力就能精准定位最新的带时间戳快照包,两种可直接落地的实现方案如下:


方案1:JFrog CLI检索(推荐,零匹配误差)

使用官方CLI直接按创建时间排序取最新制品,不需要手动解析版本规则,适配所有JFrog快照命名规则,不会出现版本匹配错误。
GitHub Actions配置示例:

jobs:
  deploy-snapshot:
    runs-on: ubuntu-latest
    steps:
      - name: 初始化JFrog CLI
        uses: jfrog/setup-jfrog-cli@v3
        env:
          # 提前在仓库Secrets中配置以下参数
          JF_URL: ${{ secrets.JFROG_URL }}
          JF_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }}

      - name: 检索最新快照制品
        id: latest-artifact
        run: |
          # 替换占位内容为实际的仓库名、制品组路径
          SEARCH_PATH="<your-snapshot-repo>/<group-path>/jd-bulk-messenger/1.18.0-RC1-SNAPSHOT/jd-bulk-messenger-*.war"
          # 按创建时间倒序,取第一个匹配结果即为最新快照
          LATEST_FILE=$(jf rt search "$SEARCH_PATH" --sort-by=created --sort-order=desc --limit=1 | jq -r '.[0].path')
          # 将制品名、全路径写入输出参数,供后续步骤使用
          echo "file_name=$(basename $LATEST_FILE)" >> $GITHUB_OUTPUT
          echo "full_path=$LATEST_FILE" >> $GITHUB_OUTPUT

      - name: 下载制品到部署目录
        run: |
          jf rt download "${{ steps.latest-artifact.outputs.full_path }}" ./deploy-package/
      
      # 后续直接执行部署脚本即可,无额外存储开销

方案2:解析Maven元数据(无额外工具依赖)

JFrog的Maven快照仓库会在每个版本目录下自动生成maven-metadata.xml元数据文件,固定记录当前版本下最新快照的时间戳后缀,直接解析该文件即可拿到准确的制品名,不需要安装额外CLI。
配置示例:

- name: 从Maven元数据解析最新快照名
  id: parse-metadata
  run: |
    # 替换为实际的元数据文件地址
    METADATA_URL="https://<your-jfrog-domain>/artifactory/<your-snapshot-repo>/<group-path>/jd-bulk-messenger/1.18.0-RC1-SNAPSHOT/maven-metadata.xml"
    # 拉取元数据,提前在Secrets配置JFrog认证信息
    METADATA_CONTENT=$(curl -f -u "${{ secrets.JFROG_USER }}:${{ secrets.JFROG_API_KEY }}" "$METADATA_URL")
    # 提取最新快照的版本值,格式为1.18.0-RC1-20220715.124710-5
    SNAPSHOT_VERSION=$(echo "$METADATA_CONTENT" | grep -oP '(?<=<value>).*(?=</value>)' | head -n1)
    # 拼接得到完整制品名
    FULL_FILENAME="jd-bulk-messenger-${SNAPSHOT_VERSION}.war"
    echo "file_name=$FULL_FILENAME" >> $GITHUB_OUTPUT

避坑提示

  • 检索路径必须精确到具体的快照版本目录(比如1.18.0-RC1-SNAPSHOT),不要全局搜索,避免拉取到其他版本的制品,同时降低API请求开销
  • 不要自行写正则遍历全仓库文件排序,大仓库场景下极易触发JFrog API限流,且匹配准确率低
  • 整个流程在同一个Job内完成检索、下载、部署,完全不需要归档大体积构建产物,没有额外存储成本

内容的提问来源于stack exchange,提问作者Maryo David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:03:23