web-dev-qa-db-ja.com

操り人形師をgitlab-ci.ymlと統合する

私は現在、Chrome Puppeteerでe2eテストに取り組んでいます。開発プロセスにテストを統合することが理想的な段階にあります。

私が達成したいのは次のとおりです。本番環境にデプロイする前に、テストが自動化されて実行されます。成功した場合は展開が完了し、失敗した場合は展開がキャンセルされます。

Gitlabでパイプラインを使用して、デプロイプロセスを自動化します。だから私の主な質問は、人形のテストをgitlab-ci.ymlファイルに統合するにはどうすればよいですか?

12

これはちょっとしたハックかもしれませんが、私のものは次のように実行されています:

test:
image: node:latest
stage: run
script:
- apt-get update
- apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
- yarn
- yarn test

その非常に長いライブラリのリストは、操り人形師がChromeを起動するために必要なものです。理想的には、準備ができたDockerイメージがありますが、私が見つけたすべての既成のものは私には機能しませんでした。

製品の準備をするときは、ノードから取得して依存関係自体をインストールする独自のイメージを作成する必要があります。

7
Rince

同じ問題が発生しました。操り人形師を提供するDockerイメージでステージを実行する必要があります。

# run performance monitor
performanceMonitoring:
  stage: performanceMonitoring
  image: alekzonder/puppeteer
  script:
    - yarn run performanceMonitoring
6

これを試して

variables:
  IMG_BUILD: node:latest
  IMG_TEST: trion/ng-cli-karma
  IMG_TESTING: alekzonder/puppeteer:latest
  IMG_TESTING_FINAL: node:8.9.1
  IMG_GITLAB_CI: juristr/angular-ci-build:1.0.0
  IMG_TESTING_GITLAB: alekzonder/puppeteer:latest
  IMG_TESTING_GITLAB2: buildkite/puppeteer

deploy_test:
  stage: test
  image: ${IMG_TESTING_GITLAB2}
  environment: Production
  cache:
    policy: pull
  artifacts:
    paths:
      - node_modules/
  only:
    - master
  script:
    - npm install
    - npm run test-ci

パッケージ設定付き

"test-ci": "ng test --no-watch --no-progress --browsers=ChromeHeadlessNoSandbox",

これを実現する最も簡単な方法は、PuppeteerがプリインストールされたDockerイメージを使用することです。

.gitlab-ci.yml`は次のようになります。

stages:
  - test

cache:
  paths:
    - node_modules/

.node_template:
  image: buildkite/puppeteer

tests:
  extends: .node_template
  stage: test
  variables:
    CI: "true"
  before_script:
    - echo "checking node version"
    - node -v
    - echo "installing dependencies..."
    - npm install
  script:
    - npm run test

buildkite/puppeteerではなくalekzonder/puppeteerを使用することをお勧めします。これは、ノードの最新のLTSバージョンが付属しており、alekzonder/puppeteerには付属していないためです。

0
base34