我目前面临 Gitlab CI 的问题,我希望有人能为我指出正确的方向。问题在于使用 Gitlab CI 时无法识别 URL 中的变量。
我有一个场景,如果我硬编码完整的 URL,一切都会按预期工作。然而,当我尝试使用来自 CYPRESS_BASE_URL 的 baseUrl 这样的变量时,Gitlab CI 似乎没有选择它。当然,CYPRESS_USERNAME、CYPRESS_PASSWORD 也会发生同样的情况
这是我在 cypress 中测试的片段
const baseUrl = Cypress.env("CYPRESS_BASE_URL");
const user = Cypress.env("CYPRESS_USER");
const password = Cypress.env("CYPRESS_PASSWORD");
describe('Login and Sort', () => {
beforeEach(() => {
cy.visit(baseUrl);
cy.login(user, password);
});
管道编辑器中的 .gitlab-ci.yml 文件
stages:
- test
variables:
CYPRESS_BASE_URL: "$CYPRESS_BASE_URL"
CYPRESS_ENDPOINT: "$CYPRESS_ENDPOINT"
CYPRESS_USER: "$CYPRESS_USER"
CYPRESS_PASSWORD: "$CYPRESS_PASSWORD"
test:
image: cypress/browsers:node18.12.0-chrome107
stage: test
script:
- npm ci
- npm run chrome
然后根据文档我尝试了这个只是为了看看baseUrl是否可以通过但不行:
stages:
- test
variables:
CYPRESS_BASE_URL: "CYPRESS_BASE_URL"
CYPRESS_ENDPOINT: "CYPRESS_ENDPOINT"
CYPRESS_USER: "CYPRESS_USER"
CYPRESS_PASSWORD: "CYPRESS_PASSWORD"
test:
image: cypress/browsers:node18.12.0-chrome107
stage: test
script:
- npm ci
- npm run chrome
- echo "The URL is '$CYPRESS_BASE_URL'"
CI/CD 设置中的变量
当您访问 Cypress 中的变量时,它们与操作系统级别的环境变量不同。如果使用
CYPRESS_
前缀约定添加变量,Cypress 会自动从变量名称中删除前导 CYPRESS_
。
因此,如果您的操作系统环境变量设置为
CYPRESS_BASE_URL
,您应该使用 Cypress.env('BASE_URL')
来访问它,而不是 Cypress.env('CYPRESS_BASE_URL')
。
const baseUrl = Cypress.env("BASE_URL");
const user = Cypress.env("USER");
const password = Cypress.env("PASSWORD");
Cypress.env
和 Cypress 环境变量文档。