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

如何通过GitHub Actions推送Go制品至仓库?遇JFrog CLI命令错误求助

问题:GitHub Actions部署Go制品到JFrog Artifactory失败

问题现象

在GitHub Actions流水线中执行JFrog CLI部署Go制品时,报错No help topic for 'go-publish',退出码3。已尝试jfrog go publish、jfrog go-publish、jfrog gp等命令,错误一致。

现有流水线配置

name: Build and Push Docker Image and Go Artifacts

on:
  push:
    branches:
      - jfrog-dev  # Your specified branch
  workflow_dispatch:  # Allows manual triggering of the workflow

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Step 1: Check out the code from the repository
      - name: Checkout code
        uses: actions/checkout@v2

      # Step 2: Verify JFROG_URL and USER
      - name: Verify credentials
        run: |
          echo "JFROG_URL is ${JFROG_URL}"
          echo "JFROG_USER is ${JFROG_USER}"

      # Step 3: Set up Go environment
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.23'

      # Step 4: Install dependencies and build Go binary
      - name: Install dependencies and build Go binary
        run: |
          go mod tidy
          go build -o mit-sphere ./cmd/main.go

      # Step 5: Install JFrog CLI
      - name: Install JFrog CLI
        run: |
          curl -fL https://getcli.jfrog.io | sh
          sudo mv jfrog /usr/local/bin/
          echo "JFrog CLI version:"
          jfrog --version

      # Step 6: Log in to JFrog Artifactory for Docker
      - name: Log in to JFrog Artifactory for Docker
        run: |
          echo "${{ secrets.JFROG_PASSWORD }}" | docker login mani.jfrog.io -u "${{ secrets.JFROG_USER }}" --password-stdin

      # Step 7: Build and tag Docker image
      - name: Build and tag Docker image
        run: |
          docker build . -t mit-sphere:latest
          docker tag mit-sphere:latest mani.jfrog.io/mani1234-maniit/mit-sphere:latest

      # Step 8: Push Docker image to JFrog Artifactory
      - name: Push Docker image to JFrog Artifactory
        run: |
          docker push mani.jfrog.io/mani1234-maniit/mit-sphere:latest

      # Step 9: Configure JFrog CLI with username and password
      - name: Configure JFrog CLI
        run: |
          jfrog config add artifactory --url "https://mani.jfrog.io" --user "${{secrets.JFROG_USER }}" --password "${{ secrets.JFROG_PASSWORD }}" --interactive=false

      # Step 10: Deploy Go artifact to JFrog Artifactory
      - name: Deploy Go artifact to JFrog Artifactory
        run: |
          echo "Publishing Go package to JFrog Artifactory"
          jfrog gp mit-sphere-new-go 1 --server-id rt-server # 1 - stands for version number

错误日志

Run echo "Publishing Go package to JFrog Artifactory"
  echo "Publishing Go package to JFrog Artifactory"
  jfrog go-publish mit-sphere-new-go 1 --build-name my-go-build --build-number 1 --server-id rt-server
  shell: /usr/bin/bash -e {0}
  env:
    GOROOT: /opt/hostedtoolcache/go/1.23.2/x64
Publishing Go package to JFrog Artifactory
No help topic for 'go-publish'
Error: Process completed with exit code 3.

go.yaml配置

version: 1
type: go
resolver:
  repo: mit-sphere-new-go
  serverId: manifest
deployer:
  repo: mani1234-manii
  serverId: manifest

解决方案

1. 升级JFrog CLI并使用正确命令入口

当前安装的是旧版jfrog命令,新版JFrog CLI已改用jf作为命令入口,且go publish命令仅存在于新版中。修改安装步骤:

- name: Install JFrog CLI
  run: |
    curl -fL https://getcli.jfrog.io/v2 | sh
    sudo mv jf /usr/local/bin/
    echo "JFrog CLI version:"
    jf --version

2. 修正CLI配置与命令参数

  • 配置CLI时,确保server-id与go.yaml中的serverId一致(当前go.yaml中是manifest,原命令中用了rt-server,不匹配):
- name: Configure JFrog CLI
  run: |
    jf config add manifest --url "https://mani.jfrog.io" --user "${{ secrets.JFROG_USER }}" --password "${{ secrets.JFROG_PASSWORD }}" --interactive=false
  • 使用新版jf go publish命令,结合go.yaml配置发布:
- name: Deploy Go artifact to JFrog Artifactory
  run: |
    echo "Publishing Go package to JFrog Artifactory"
    jf go publish --build-name my-go-build --build-number 1 --config go.yaml

3. 若发布二进制文件而非Go模块,改用上传命令

如果只是上传编译好的二进制文件,而非Go模块,直接用jf rt upload命令:

- name: Upload Go binary to Artifactory
  run: |
    jf rt upload mit-sphere mani1234-manii/mit-sphere/1/ --build-name my-go-build --build-number 1 --server-id manifest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:35:04