UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Cypress】Cloud Buildでdocker runを使ってCypressを実行する

DockerでCypressを動かすためにはdocker run -it --ipc=host --shm-size=1024Mのコマンドで起動する必要があることがわかった

uga-box.hatenablog.com

Cloud Build で実行できるdockerコンテナイメージ(gcr.io/cloud-builders/docker)があるのでそれを利用する

やっていて詰まったのは、Cloud Buildで docker runのvolume指定で、-v /workspace:/e2eではうまくいかなかった

以下の記事にあるように少し面倒らしい

qiita.com

なので手を変えてDockerfileを用意することにする

cloudbuild.yamlでのステップは以下

  1. Dockerfileを作成
  2. docker build でイメージ作成
  3. 作成したイメージをGCRに登録する
  4. 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/

https://qiita.com/tomoyamachi/items/9452aead012e749a36d6