2017-07-10 109 views
5

Bir Docker kabında bir Jenkins CI üzerinden Nightwatch-Cucumber ile yazılmış otomatik testlerimi yürütmek istiyorum. Bunun için kullanmak istediğim bir Docker resmim var.Selenyum testlerini bir Docker konteynırında Jenkins CI üzerinden çalıştırmanın en kolay yolu

Daha ayrıntılı olarak yapmak istediğim şey budur. Aynı makinede Jenkins CI işi

  • üzerinde

    1. Başlangıç ​​testleri Docker görüntü yüklenir ve ilgili Docker konteyner başlayacaktır. Bu kapsayıcı bir Unix işletim sistemine dayanır. Ayrıca, Docker konteynerde bazı yapılandırmalar yürütülecektir.
    2. Testler (yerel veya uzak) xvfb ile başsız bir modda yürütülür ve rapor Jenkins makinesine kaydedilir.

    GitLab CI fazla bir .gitlab-ci.yml yapılandırma dosyasında üzerine fark ettik ve çok iyi çalıştırır:

    image: "my-docker-image" 
    
    stages: 
        - "chrome-tests" 
    
    before_script: 
        - "apt-get update" 
        - "apt-get install -y wget bzip2" 
        - "npm install" 
    
    cache: 
        paths: 
        - node_modules/ 
    run-tests-on-chrome: 
        stage: "chrome-tests" 
        script: 
        - "whereis xvfb-run" 
        - "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome" 
    

    Ama Jenkins CI ile aynı prosedürü gerçekleştirmek istiyoruz. Bunu yapmanın en kolay yolu nedir? Ro otomatik testlerimi Jenkins tarafından çağrılan Docker görüntüsünde çalıştırır? Dockerfile yazmalı mıyım, yoksa ya da olmasın mı?

  • cevap

    0

    Şu anda PHP'de yazılmış Selenium Test komut dosyalarını çalıştırıyorum ve Docker Compose kullanarak bunları Jenkins üzerinden çalıştırıyorum. Xvfb ile uğraşmanın zorluğu olmadan da aynısını yapabilirsiniz.

    Selenyum testlerinizi bir docker kabının içinde bulunan başsız tarayıcıları kullanarak ve docker-compose ile uygulamanıza bağlayarak çalıştırmak için, önceden tanımlanmış bağımsız sunucuyu kullanabilirsiniz.

    https://github.com/SeleniumHQ/docker-selenium

    Ben şu anda Chrome Bağımsız görüntüyü kullanıyorum.

    İşte liman işçisi-oluşturma gibi görünmelidir ne:

    version: '3' 
    services: 
        your-app: 
        build: 
         context: . 
         dockerfile: Dockerfile 
        your_selenium_application: 
        build: 
         context: . 
         dockerfile: Dockerfile.selenium.test 
        depends_on: 
         - chrome-server 
         - your-app 
        chrome-server: 
        image: selenium/standalone-chrome:3.4.0-einsteinium 
    

    liman işçisi-oluşturma deneyimini yayınlarken, başvurunuzu, uygulamanızla etkileşimde olacak selenyum ortamı ve bağımsız sunucu dönmeye olacağını başsız tarayıcınızı size sağlayacaktır. Bağlantılı oldukları için, selenyum kodunuzun içinde, test isteğinizi uygulamanız aracılığıyla ana bilgisayara gönderebilirsiniz: örneğin 80. Başsız tarayıcınız krom-sunucu olacaktır: Varsayılan adres olan 4444/wd/hub.

    Bu, Jenkins İşinin içindeki Execute Shell'inizde yalnızca bir komut kullanarak Jenkins'in içinde yapılabilir. docker-compose ayrıca yerel makinenizdeki testleri kolayca yürütmenize izin verir ve sonuçlar aynı olmalıdır.

    +0

    Lütfen Jenkins dosyanızın nasıl göründüğüne dair bir örnek verebilir misiniz? – NewWorld

    +0

    @NewWorld Testleri yapmak için Docker Compose ile bir Jenkins serbest stil boru hattı kullandım. Onlar sadece bir dizi kabuk betiği – Serey

    0

    maintained Selenium Docker images, özellikle de node tatları. İster konteynerleri olduğu gibi kullanmaya karar verdiğinizde, ister kendi başınıza yuvarlanmaya karar verirseniz, başlamak için iyi bir yer.