docker 如何设置TeamCity以与Cypress配合使用,而无需为每次测试执行安装node、xvfb、cypress

8qgya5xd  于 2023-01-12  发布在  Docker
关注(0)|答案(1)|浏览(113)

我想cypress.io在CI(Teamcity)中按计划的计时器运行www.example.com测试。测试将非常频繁地运行,这就是为什么我希望尽快执行它们。这是我当前的实现。我运行带有3个teamcity-agent的teamcity-server,带有以下docker-compose.yml

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

在构建步骤中,我在设置中使用节点:10.18.1,如下图所示:

我的建筑步骤如下:
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%"

1.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 libnss 3 libxss 1 libasound 2(我需要为linux安装额外的)我相信主要的严重依赖是cypress和xvfb包。

我认为有3种方法可以避免这种巨大的执行时间:
1.要使docker映像与包含所有cypress ENV的teamcity兼容:node、cypress、xvfb等。在这种情况下,我不需要在每次运行测试时都安装它。我遵循cypress文档,并意识到特殊的docker映像是为https://github.com/cypress-io/cypress-docker-images设计的
柏树/底座
Cypress/浏览器
柏树/包括
但它们与Teamcity服务器不兼容(Teamcity代理需要有一个java Package 器),或者我不知道如何从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

1.以某种方式缓存node_modules和xvfb。我看到https://cypress.slides.com/cypress-io/cypress-on-ci#/5/2/0,但不明白如何将其放入我的构建步骤
1.在TeamCity中设置构建依赖项,在一个构建中安装所有依赖项,并以某种方式将工件(node_modules、xvfb等)移动到下一个构建,该构建将通过计时器运行测试。
我自己是如何理解Cypress文档的,他们建议按照我列表中的第1点操作,但我不明白如何作为TeamCity代理运行他们的映像
欢迎提出任何建议

2lpgd968

2lpgd9681#

回答我自己的问题。对于那些谁陷入了相同的这是一个优化的方式来设置Teamcity和Cypress:
我的docker-compose.yml从这主题是正确的.运行它买

docker-compose up -d

在Teamcity中设置2种不同的配置
1.安装依赖项(在需要更新依赖项时很少运行)
1.运行测试(在需要运行测试时经常运行)
在第一个配置中,使用简单的1构建步骤

npm install yarn --no-save
yarn install --no-lockfile

通过node_modules =〉node_modules.zip创建工件后,按照屏幕x1c 0d1x进行容器设置
在第二个配置中,根据屏幕

设置从第一个配置获取node_modules的依赖性

相关问题