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/