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 操作在构建期间未识别秘密值的主要内容,如果未能解决你的问题,请参考以下文章
在使用 github 操作进行构建期间执行诗歌安装时,使用预编译的 numpy 包而不是构建它
sh 使用静态libressl,zlib和pcre的nginx构建脚本。灵感来自https://gist.github.com/nlindblad/9709182,https://gist.githu
Libtool 在 make install 期间未创建版本信息符号链接