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

如何让GitHub Actions中的Secrets写入settings.xml?

解决GitHub Actions中Secrets无法写入settings.xml的问题

核心问题分析

你的Workflow使用workflow_call触发,这类被调用的子Workflow默认不会自动继承调用者仓库的Secrets,必须显式定义并传递;另外需要确保Secrets名称完全匹配,且Debug步骤的检查对象与实际使用的Secrets一致。

具体解决步骤

1. 为子Workflow定义Secrets参数

在你的Setup Maven Workflow顶层添加secrets字段,明确声明需要接收的Secrets,这样调用它的父Workflow才能传递对应值:

name: Setup Maven
on:
  workflow_call:
    # 新增:定义需要接收的Secrets
    secrets:
      USERNAME:
        required: true # 必填,确保调用时必须传递
      PASSWORD:
        required: true
      REPOSECRETTEST:
        required: false # 测试用,可选
jobs:
  setup-maven:
    runs-on: ubuntu-latest
    steps:
      # 修正Debug步骤,检查实际要用的Secrets
      - name: Debug Secrets        
        run: |
          if [ -n "${{ secrets.USERNAME }}" ]; then
            echo "USERNAME is set"
          else
            echo "USERNAME is missing"
          fi
          if [ -n "${{ secrets.PASSWORD }}" ]; then
            echo "PASSWORD is set"
          else
            echo "PASSWORD is missing"
          fi
      - name: Configure Maven settings.xml
        run: |
          mkdir -p ~/.m2
          cat > ~/.m2/settings.xml <<EOL
          <settings>
            <servers>
              <server>
                <id>githubauth</id>
                <username>${{ secrets.USERNAME }}</username>
                <password>${{ secrets.PASSWORD }}</password>
              </server>
            </servers>
          </settings>
          EOL
      - name: Upload settings.xml
        uses: actions/upload-artifact@v4
        with:
          name: maven-settings
          path: ~/.m2/settings.xml

2. 在父Workflow中传递Secrets

调用这个Setup Maven Workflow的父Workflow,必须显式传递对应的Secrets:

name: Main Workflow
on: [push]
jobs:
  call-setup-maven:
    uses: ./.github/workflows/setup-maven.yml # 替换为你的子Workflow实际路径
    secrets:
      USERNAME: ${{ secrets.USERNAME }}
      PASSWORD: ${{ secrets.PASSWORD }}
      REPOSECRETTEST: ${{ secrets.REPOSECRETTEST }} # 若需要测试则传递

3. 验证Secrets的正确性

  • 确认仓库中创建的Secrets名称与Workflow中使用的完全一致(GitHub Secrets区分大小写),比如定义的是USERNAME就不能写成username。
  • 如果使用组织级Secrets,需确保当前仓库已被授权访问该Secrets。
  • 若Secrets存储在特定环境中,需在Workflow的jobs或steps中指定environment字段。

4. 测试验证

重新触发Workflow后,查看Debug步骤的输出,确认USERNAME和PASSWORD都显示为is set,再下载上传的maven-settings artifact,检查settings.xml中是否已正确填充用户名和密码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:17:02