【问题标题】:Github actions not recognizing secret value during buildGithub 操作在构建期间未识别秘密值
【发布时间】:2021-06-24 17:39:54
【问题描述】:

我有一个带有 api 密钥的 Spring Boot 应用程序。我已经在我的 Github 存储库中设置了这个值 秘诀如下。

EMAIL_API_KEY = 123

当我推送我的代码时,它开始构建并在 maven 构建期间失败并出现以下错误。

创建 bean restHelper 时出错。无法解析占位符 值“${EMAIL_API_KEY}”中的“EMAIL_API_KEY”

在 Spring boot 中,我的 application.properties 文件中的值如下所示。

api_key=${EMAIL_API_KEY}

如何引用这个变量。秘密不是正确的位置吗?
我没有看到设置环境变量和使用机密的选项。请指教。谢谢。

更详细的错误日志。

原因: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建文件中定义的名称为“emailController”的 bean 时出错 [/../EmailController.class]:不满足的依赖通过表达 构造函数参数 0;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建文件中定义的名称为“restHelper”的bean [/../RestHelper.class]:bean创建过程中出现意外异常; 嵌套异常是 java.lang.IllegalArgumentException: 不能 解析值“${EMAIL_API_KEY}”中的占位符“EMAIL_API_KEY”

我的 GitHub Actions 的 Yaml 文件。

name: CI/CD Pipeline

on:
  push:
    branches:
      - 'main'

jobs:

  test:
    name: Test - Units & Integrations
    runs-on: ubuntu-18.04

    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11.0.4
      - name: Maven Package
        run: mvn -B clean package # FAILS AT THIS STEP
      - name: Maven Verify
        run: mvn -B clean verify
        
        # added this to test, same outcome.
        env:
          EMAIL_API_KEY: ${{ secrets.EMAIL_API_KEY }}

【问题讨论】:

  • EMAIL_API_KEY 是否出现在 repo 中的 secrets 下?
  • @fixxxer 是的,它在正确的 repo 的秘密之下。
  • 您是否尝试在失败的特定作业下添加环境变量? - 名称:Maven 包环境:EMAIL_API_KEY:${{ secrets.EMAIL_API_KEY }} 运行:mvn -B clean package
  • @GuiFalourd 谢谢你确实做到了。这是一种规范,必须在整个地方重复那个变量吗? Coss 我还有几个步骤也需要相同的变量。
  • 由于作业在不同的跑步者中运行,这些跑步者在不同的机器上。每个作业都在 runs-on 指定的虚拟环境的新实例中运行。不能在机器之间共享环境变量。他们不支持在工作之间共享变量(尚未)但是;有一些操作允许使用工件在作业之间共享数据。如果有意义,您最终可以使用它:github.com/marketplace/actions/share-jobs-data

标签: java spring-boot maven github-actions


【解决方案1】:

您必须为每个作业通知您的环境变量。

示例:

 - name: Maven Package 
     env: EMAIL_API_KEY: ${{ secrets.EMAIL_API_KEY }} 
     run: mvn -B clean package

解释:

由于作业在不同的运行器中运行,因此这些运行器位于不同的机器中。每个作业都在 runs-on 指定的虚拟环境的新实例中运行。

不能在机器之间共享环境变量。 Github 操作不支持在作业之间共享变量(目前)。

但是,有一些操作允许使用工件在作业之间共享数据。如果有意义,您最终可以使用它:github.com/marketplace/actions/share-jobs-data

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 2020-09-19
    • 1970-01-01
    • 2021-06-25
    • 2021-06-15
    • 2020-12-03
    • 2021-06-27
    • 2022-08-13
    • 1970-01-01
    相关资源
    最近更新 更多