在 GitLab CICD 中注入 application.properties 值

Ari*_*dam 2 java amazon-web-services spring-boot gitlab-ci

目前我的技术栈是Java、Spring Boot。

我正在使用 application-dev.properties 来保存 AWS 访问密钥和秘密密钥。

在 application-dev.properties 中注入密钥我有:

#This property provide access key details
com.abc.sqs.accesskey = AWS_ACCESS_KEY
#This property provide secret key details
com.abc.sqs.secretkey = AWS_SECRET_KEY
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试对应用程序 .jar 进行冒烟测试时,来自 GitLab CICD .gitlab-ci.yml 文件,我有类似这样的东西(阶段是冒烟测试)-

smoke test:
  stage: smoke-test
  image: openjdk:12-alpine
  before_script:
    - apk add --update curl && rm -rf /var/cache/apk/*
  script:
    - ls -la ./app-service/target/
    - sed -i "s/AWS_ACCESS_KEY/$AWS_ACCESS_KEY_ID/" ./app-service/src/main/resources/application-dev.properties
    - sed -i "s/AWS_SECRET_KEY/$AWS_SECRET_ACCESS_KEY/" ./app-service/src/main/resources/application-dev.properties
    - java -jar -Dspring.profiles.active=dev ./app-service/target/app-service.jar &
    - sleep 30
    - curl http://localhost:5000/actuator/health | grep "UP"
    - curl -i -X POST http://localhost:5000/actuator/shutdown
Run Code Online (Sandbox Code Playgroud)

在这里,我从 GitLab CICD 环境变量中引入 $AWS_ACCESS_KEY_ID 和 $AWS_SECRET_ACCESS_KEY ,并尝试替换属性文件的 AWS_ACCESS_KEY 和 AWS_SECRET_KEY 。但这样我就无法在服务器启动期间注入。

在尝试测试 jar 时出现以下异常:

原因:com.amazonaws.services.sqs.model.AmazonSQSException:请求中包含的安全令牌无效。(服务:AmazonSQS;状态代码:403;错误代码:InvalidClientTokenId;

请需要您的建议。提前致谢。

RUA*_*ult 9

如果您想覆盖属性文件中的属性,sed您可以简单地声明一个环境变量或具有相似名称的 JVM 变量,而不是使用 。它将优先于文件中声明的属性。例如:

com.abc.sqs.accesskey = AWS_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)

可以与 JVM 变量一起变为:

java -jar -Dspring.profiles.active=dev -Dcom.abc.sqs.accesskey=$AWS_ACCESS_KEY_ID ./app-service/target/app-service.jar
Run Code Online (Sandbox Code Playgroud)

这将覆盖属性文件的值,并且这将在应用程序启动时可用。