【发布时间】: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