DockerでCypressを動かすためにはdocker run -it --ipc=host --shm-size=1024Mのコマンドで起動する必要があることがわかった
Cloud Build で実行できるdockerコンテナイメージ(gcr.io/cloud-builders/docker)があるのでそれを利用する
やっていて詰まったのは、Cloud Buildで docker runのvolume指定で、-v /workspace:/e2eではうまくいかなかった
以下の記事にあるように少し面倒らしい
なので手を変えてDockerfileを用意することにする
cloudbuild.yamlでのステップは以下
- Dockerfileを作成
- docker build でイメージ作成
- 作成したイメージをGCRに登録する
- docker run でコンテナ起動してCypressを実行
Dockerfile
こちらを参考に作成した
https://github.com/bahmutov/google-cloud-build-example/blob/master/Dockerfile
FROM cypress/base:12 WORKDIR /app RUN npm install --save-dev cypress RUN ls -la COPY cypress cypress COPY cypress.json . RUN ls -la ENV CYPRESS_browser=chrome ENV CYPRESS_screenshotsFolder=results/screenshots ENV CYPRESS_video=false
cloudbuild.yaml
---
steps:
- name: "gcr.io/cloud-builders/docker"
args: ["build",
"-t", "asia.gcr.io/$PROJECT_ID/cypress",
"-f", "Dockerfile_e2e",
"."]
- name: "gcr.io/cloud-builders/docker"
args: ["push", "asia.gcr.io/$PROJECT_ID/cypress"]
- name: "gcr.io/cloud-builders/docker"
args: ["run",
"-i",
"--entrypoint", "/bin/bash",
"--shm-size", "1024M",
"asia.gcr.io/$PROJECT_ID/cypress",
"-c", "npx cypress run"]
timeout: "3600s"
images: ["asia.gcr.io/$PROJECT_ID/cypress"]
ここまででCloud Buildでdocker runを使ってCypressを実行することまでできた
最後にCypressを実行するコンテナ内で出力されたスナップショットをGCSにもっていくためにCloudBuildコンテナにスナップショットをもってくる必要があった
これも苦戦したので別の記事にする
参考
https://www.cypress.io/blog/2019/05/02/run-cypress-with-a-single-docker-command/