gpt4 book ai didi

docker - 如何设置 TeamCity 与 Cypress 一起工作,而无需为每个测试执行安装节点、xvfb、cypress

转载 作者:行者123 更新时间:2023-12-02 18:34:13 24 4
gpt4 key购买 nike

我想通过预定的计时器在 CI(Teamcity)中运行我的 cypress.io 测试。测试将非常频繁地运行,这就是为什么我很感兴趣尽快执行它们
这是我目前的实现。
我使用以下 docker-compose.yml 运行带有 3 个 teamcity-agents 的 teamcity-server


version: "3"
services:
server:
image: jetbrains/teamcity-server:2020.1.2
ports:
- "8112:8111"
volumes:
- ./data_dir:/data/teamcity_server/datadir
- ./log_dir:/opt/teamcity/logs
teamcity-agent-1:
image: jetbrains/teamcity-agent:2020.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-1
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_1
teamcity-agent-2:
image: jetbrains/teamcity-agent:2020.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-2
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_2
teamcity-agent-3:
image: jetbrains/teamcity-agent:2020.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-3
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_3

在构建步骤中,我在设置中使用 node:10.18.1,如下面的屏幕所示:
enter image description here
我的建筑步骤现在如下:
1.
npm install yarn --no-save
yarn install --no-lockfile
  • #!/bin/bash
    set -e -x
    export CYPRESS_CACHE_FOLDER="%env.cypress_cache_path%"
    export CYPRESS_VAR1=%env.var1%
    export CYPRESS_VAR2=%env.var2%

    apt-get update && apt-get -y install libgtk2.0-0 libgtk-3-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb

    yarn silent --spec "%env.cypress_path_to_landing_pages%"
  • yarn 生成:html:报告

  • 这是我每次执行测试时都需要运行的,执行每个测试集大约需要 10 分钟,安装所有依赖项需要 60-70% 的时间
      {
    "@types/mocha": "^8.0.0",
    "cypress": "4.11.0",
    "cross-env": "^7.0.2",
    "mocha": "^7.2.0",
    "mochawesome": "^6.1.1",
    "mochawesome-merge": "^4.1.0",
    "mochawesome-report-generator": "^5.1.0",
    "typescript": "^3.9.6"
    }
  • apt-get install xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2(我需要为 linux 安装额外的)
    我相信主要的重依赖是 cypress 和 xvfb 包。

  • 我看到了 3 种方法来避免这种巨大的执行时间:
  • 拥有一个与包含所有 cypress ENV 的 teamcity 兼容的 docker 镜像:node、cypress、xvfb 等。在这种情况下,我不需要每次运行测试时都安装它。我正在关注 cypress 文档,并意识到专门为此设计了特殊的 docker 图像
    https://github.com/cypress-io/cypress-docker-images

  • 柏树/基地
    柏树/浏览器
    柏树/包括
    但是它们与 Teamcity 服务器不兼容(Teamcity 代理需要有一个 java 包装器)或者我不知道如何从 docker-compose.yml 运行它们
    我试过了,但是 TeamCity 服务器无法找到这个代理并且代理选项卡是空的
    version: "3"
    services:
    server:
    image: jetbrains/teamcity-server:2020.1.2
    ports:
    - "8112:8111"
    volumes:
    - ./data_dir:/data/teamcity_server/datadir
    - ./log_dir:/opt/teamcity/logs
    teamcity-agent-2:
    image: cypress/included:3.4.0
    environment:
    - SERVER_URL=http://server:8111
    - AGENT_NAME=docker-agent-2
    - DOCKER_IN_DOCKER=start
    privileged: true
    container_name: docker_agent_2
  • 以某种方式缓存 node_modules 和 xvfb。我看到https://cypress.slides.com/cypress-io/cypress-on-ci#/5/2/0但无法理解如何将其放入我的构建步骤中
  • 在 TeamCity 中设置构建依赖项,并在一次构建中安装所有依赖项,然后以某种方式将工件(node_modules、xvfb 等)移动到下一个构建,该构建将通过计时器运行测试。

  • 我自己是如何理解 cypress 文档的,他们建议按照我的列表中的第 1 点进行操作,但是我不明白如何将他们的图像作为 teamcity 代理运行
    欢迎任何建议

    最佳答案

    回答我自己的问题。对于那些遇到相同问题的人来说,这是设置 Teamcity 和 Cypress 的优化方法:
    我的主题中的 docker-compose.yml 是正确的。运行它买

    docker-compose up -d
    在 Teamcity 中设置 2 种不同的配置
  • 安装依赖项(当您需要更新依赖项时很少运行)
  • 运行测试(当您需要运行测试时会经常运行)

  • 在第一个配置中使用简单的 1 构建步骤
    npm install yarn --no-save
    yarn install --no-lockfile
    和每个屏幕的容器设置
    enter image description here
    创建工件后
    node_modules => node_modules.zip
    在第二个配置设置依赖项中,根据屏幕从第一个配置中获取 node_modules
    enter image description here

    关于docker - 如何设置 TeamCity 与 Cypress 一起工作,而无需为每个测试执行安装节点、xvfb、cypress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63172855/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com