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

如何在GitHub Actions中用JFrog CLI自动部署Maven快照与发布版本

用JFrog CLI在GitHub Actions中自动区分快照/发布仓库部署Maven包

核心思路

通过提取项目版本号判断是否为SNAPSHOT,动态指定Artifactory仓库,全程用GitHub Secrets隐藏敏感配置,同时借助JFrog CLI自动捕获构建信息。

具体配置步骤

  1. 在GitHub仓库配置Secrets
    把以下敏感信息存入GitHub仓库的Settings > Secrets and variables > Actions中:

    • ARTIFACTORY_URL: Artifactory实例的基础URL(比如https://your-artifactory.jfrog.io/artifactory)
    • ARTIFACTORY_USER: Artifactory认证用户名
    • ARTIFACTORY_API_KEY: Artifactory用户的API Key
    • ARTIFACTORY_SNAPSHOT_REPO: 快照仓库的key(比如libs-snapshot-local)
    • ARTIFACTORY_RELEASE_REPO: 正式发布仓库的key(比如libs-release-local)
  2. 编写GitHub Actions Workflow文件
    在项目.github/workflows目录下创建部署流程文件(比如deploy-to-artifactory.yml),内容如下:

    name: Deploy to Artifactory
    on:
      push:
        branches: [ main, develop ] # 根据你的分支策略调整
      release:
        types: [ published ]
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          - name: Set up JDK
            uses: actions/setup-java@v4
            with:
              java-version: '17' # 替换为你的项目JDK版本
              distribution: 'temurin'
    
          - name: Install and configure JFrog CLI
            uses: jfrog/setup-jfrog-cli@v2
            with:
              url: ${{ secrets.ARTIFACTORY_URL }}
              user: ${{ secrets.ARTIFACTORY_USER }}
              password: ${{ secrets.ARTIFACTORY_API_KEY }}
    
          - name: Extract project version
            run: echo "PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
    
          - name: Determine target repository
            run: |
              if [[ "$PROJECT_VERSION" == *"SNAPSHOT"* ]]; then
                echo "REPO_KEY=${{ secrets.ARTIFACTORY_SNAPSHOT_REPO }}" >> $GITHUB_ENV
              else
                echo "REPO_KEY=${{ secrets.ARTIFACTORY_RELEASE_REPO }}" >> $GITHUB_ENV
              fi
    
          - name: Deploy with JFrog CLI
            run: |
              jf mvn deploy -DskipTests \
                -DaltDeploymentRepository=artifactory::default::${{ secrets.ARTIFACTORY_URL }}/${REPO_KEY}
              # 发布构建信息到Artifactory(可选,用于追踪构建详情)
              jf build-publish
    

关键细节说明

  • 自动版本判断:通过mvn help:evaluate提取项目版本,用bash字符串匹配判断是否包含SNAPSHOT,自动切换目标仓库
  • 敏感配置隐藏:所有Artifactory地址、仓库key、认证信息都存在GitHub Secrets中,不会出现在代码或构建日志里
  • 构建信息捕获:JFrog CLI执行jf mvn命令时会自动收集构建元数据,执行jf build-publish后可在Artifactory中查看完整构建信息
  • 无需修改pom.xml:通过altDeploymentRepository参数指定部署仓库,完全不用在项目pom里配置仓库信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:05:19