我目前正在使用 Kubernetes 和 Karate 创建一个 Jenkins 作业,以使用 Cucumber 报告显示一些测试结果。我在尝试获取通过 configmap 传递到部署文件中的环境变量时遇到困难,如下所示:
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-deployment
spec:
selector:
matchLabels:
app: jenkins
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: url/customjenkinsimage:tag
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: jenkins-configmap
配置映射:
kind: ConfigMap
apiVersion: v1
metadata:
name: jenkins-configmap
data:
# pass data as environment variables
URL_TO_TEST: "http://www.examplewebsite.com"
我查了一下,看到有些人提到在 karate-config.js 文件中使用 karate.properties['VAR_NAME'] 并通过配置传递它,但这导致我的 jenkins 输出告诉我 'url ' Given url host1
中的部分不存在。我也尝试过 process.env(当然这不起作用,但值得一试)
我想知道是否有任何方法可以访问 karate-config.js 中的这个环境变量(或者即使我在 configmap 中传递了一个 json 对象),因为我需要它来构建一个 url 以传递给该功能用于测试。
我的空手道-config.js:
function fn() {
var config = {
host1: karate.properties['URL_TO_TEST']
};
return config;
}
所有这些文件都放入 /var/jenkins_home/jobs/karate_job/workspace/ 文件夹中,以使用 Shell 命令运行:cd /var/jenkins_home/jobs/karate_job/workspace/ ; java -jar karate.jar test.feature
。
任何帮助将不胜感激,谢谢。