Github 操作在构建期间未识别秘密值

Posted

技术标签:

【中文标题】Github 操作在构建期间未识别秘密值【英文标题】:Github actions not recognizing secret value during build 【发布时间】: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 【参考方案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

【讨论】:

以上是关于Github 操作在构建期间未识别秘密值的主要内容,如果未能解决你的问题,请参考以下文章

npm 错误!在 github 操作上构建脚本期间失败

在使用 github 操作进行构建期间执行诗歌安装时,使用预编译的 numpy 包而不是构建它

sh 使用静态libressl,zlib和pcre的nginx构建脚本。灵感来自https://gist.github.com/nlindblad/9709182,https://gist.githu

Libtool 在 make install 期间未创建版本信息符号链接

应用程序不会通过 docker build 从 github 检索秘密

如何使用未提交的本地证书文件通过 GitHub 操作构建 Docker 映像