You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中配置Playwright测试跨文件使用的环境变量?

解决方案

首先明确:你的random.test.ts代码完全没问题,不需要修改,它已经正确通过process.env读取环境变量,只要Jenkins的Docker容器能拿到EMAIL和PASSWORD这两个变量,测试就能正常执行。

下面是几种可行的环境变量传递方案,按安全性和实用性排序:

方案1:使用Jenkins凭据管理(推荐,安全)

这是最安全的方式,避免明文存储密码:

  1. 在Jenkins中添加凭据
    • 进入Jenkins主页 → 「凭据」→ 「系统」→ 「全局凭据」→ 「添加凭据」
    • 分别添加两个「秘密文本」类型的凭据:
      • 一个存邮箱,凭据ID设为TEST_EMAIL
      • 一个存密码,凭据ID设为TEST_PASSWORD
  2. 修改Pipeline代码
    通过credentials()方法从Jenkins凭据中读取变量,注入到Docker容器的环境中:
    pipeline {
      agent { 
        docker { 
          image 'mcr.microsoft.com/playwright:v1.17.2-focal'
        } 
      }
      environment {
        EMAIL = credentials('TEST_EMAIL')
        PASSWORD = credentials('TEST_PASSWORD')
      }
      stages {
        stage('install playwright') {
          steps {
            sh '''
              npm i -D @playwright/test
              npx playwright install
            '''
          }
        }
        stage('test') {
          steps {
            // 可选:先打印变量确认是否生效(不要在生产环境打印密码)
            sh 'echo "EMAIL: $EMAIL"'
            sh 'npx playwright test'
          }
        }
      }
    }
    

方案2:Pipeline中明文设置(仅测试用)

如果只是临时测试,可以直接在Pipeline的environment块里明文定义变量,但绝对不要在生产环境这么做:

pipeline {
  agent { 
    docker { 
      image 'mcr.microsoft.com/playwright:v1.17.2-focal'
    } 
  }
  environment {
    EMAIL = 'your-test-email@xxx.com'
    PASSWORD = 'your-test-password'
  }
  stages {
    stage('install playwright') {
      steps {
        sh '''
          npm i -D @playwright/test
          npx playwright install
        '''
      }
    }
    stage('test') {
      steps {
        sh 'npx playwright test'
      }
    }
  }
}

方案3:参数化构建传递本地变量

如果想从本地触发Pipeline时动态传递变量,可以设置Pipeline为参数化构建:

  1. 配置参数化构建
    • 进入你的Jenkins项目 → 「配置」→ 「参数化构建过程」
    • 添加两个「字符串参数」:EMAIL和PASSWORD,设置默认值或留空
  2. 修改Pipeline代码引用参数
    pipeline {
      agent { 
        docker { 
          image 'mcr.microsoft.com/playwright:v1.17.2-focal'
        } 
      }
      parameters {
        string(name: 'EMAIL', defaultValue: '', description: '测试登录邮箱')
        string(name: 'PASSWORD', defaultValue: '', description: '测试登录密码')
      }
      environment {
        EMAIL = params.EMAIL
        PASSWORD = params.PASSWORD
      }
      stages {
        // 后续stage代码不变
      }
    }
    
    触发构建时,输入对应的邮箱和密码即可传递到Docker容器中。

内容的提问来源于stack exchange,提问作者1449

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:46:06