use*_*214 1 google-cloud-platform cypress google-cloud-build
我需要在 Google Cloud Build 中运行 cypress e2e 测试。当我刚刚运行时,出现错误,需要安装 cypresses依赖项id: End to End Test。因此,我尝试下载依赖项,但发生了这种情况:
E: Unable to locate package libasound2'
E: Unable to locate package libxss1
E: Unable to locate package libnss3
E: Unable to locate package libgconf-2-4
E: Unable to locate package libnotify-dev
E: Couldn't find any package by regex 'libgtk2.0-0'
E: Couldn't find any package by glob 'libgtk2.0-0'
E: Unable to locate package libgtk2.0-0
E: Unable to locate package xvfb
Reading state information...
Building dependency tree...
Reading package lists...
Status: Downloaded newer image for ubuntu:latest
Digest: sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
latest: Pulling from library/ubuntu
Using default tag: latest
Pulling image: ubuntu
Run Code Online (Sandbox Code Playgroud)
如何在 Google Cloud Build 中运行 cypress?
cloudbuild.yaml
steps:
... npm setup ...
- name: 'ubuntu'
id: Install Cypress Dependencies
args:
[
'apt-get',
'install',
'xvfb',
'libgtk2.0-0',
'libnotify-dev',
'libgconf-2-4',
'libnss3',
'libxss1',
libasound2',
]
- name: 'gcr.io/cloud-builders/npm:current'
id: End to End Test
args: ['run', 'e2e:gcb']
Run Code Online (Sandbox Code Playgroud)
小智 5
因此,您所拥有的问题是步骤应该彼此隔离。运行有效,但当您尝试安装所需的依赖项apt-get update时不会持续存在。在步骤之间仅保留apt-get项目目录(默认为 )中的数据。/workspace
我没有尝试找出解决方法,而是使用Cypress Docker 映像成功让 Cypress 在 Google Cloud Build 中运行。workspace需要注意的一件事是,在此步骤中您还必须将 Cypress 安装缓存在文件夹内npm install。您可能还想将该.tmp目录添加到您的.gcloudignore
- name: node
id: Install Dependencies
entrypoint: yarn
args: ['install']
env:
- 'CYPRESS_CACHE_FOLDER=/workspace/.tmp/Cypress'
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样运行测试
- name: docker
id: Run E2Es
args:
[
'run',
'--workdir',
'/e2e',
'--volume',
'/workspace:/e2e',
'--env',
'CYPRESS_CACHE_FOLDER=/e2e/.tmp/Cypress',
'--ipc',
'host',
'cypress/included:3.2.0'
]
Run Code Online (Sandbox Code Playgroud)
或者,如果您想运行自定义命令而不是默认命令cypress run,您可以这样做
- name: docker
id: Run E2Es
args:
[
'run',
'--entrypoint',
'yarn',
'--workdir',
'/e2e',
'--volume',
'/workspace:/e2e',
'--env',
'CYPRESS_CACHE_FOLDER=/e2e/.tmp/Cypress',
'--ipc',
'host',
'cypress/included:3.2.0',
'e2e',
]
Run Code Online (Sandbox Code Playgroud)
让我们来分解一下......
name: docker告诉 Cloud Build 使用Docker Cloud Builder--workdir /e2e告诉 docker 在运行期间使用/e2e容器中的目录--volume /workspace:/e2e将/e2edocker使用的工作目录指向/workspacecloud build使用的工作目录--env CYPRESS_CACHE_FOLDER=/e2e/.tmp/Cypress告诉 cypress 指向/e2e/.tmp/CypressCypress 缓存。--ipc host修复了 Cypress 在测试运行期间崩溃的问题cypress/included:3.2.0Cypress Docker 镜像,其中包括 cypress 和浏览器如果您正在运行自己的脚本:
--entrypoint yarn覆盖 Dockerfile 中的默认入口点cypress/included(记住,是cypress run)e2e是您想要运行 e2es 的脚本希望这可以帮助!我花了一个多星期的时间试图让它发挥作用,所以我想我可以帮助其他面临同样问题的人:)
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |