Gitlab CI 无法识别变量

问题描述 投票:0回答:1

我目前面临 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 设置中的变量

错误

gitlab devops gitlab-ci-runner
1个回答
0
投票

当您访问 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 环境变量文档

© www.soinside.com 2019 - 2024. All rights reserved.