Jenkins-Part 2의 도커 컨테이너 내에서 Selenium 테스트 실행

이전 글에서 Windows 머신의 도커 컨테이너 내에서 셀레늄 테스트를 실행하는 방법에 대한 세부 정보를 공유했습니다. 이제 docker에서 Jenkins를 실행한 다음 Jenkins(docker 컨테이너 내부)에서 셀레늄 테스트를 실행하는 방법을 살펴보겠습니다.



Jenkins는 애플리케이션 구축, 테스트 및 배포에 가장 널리 사용되는 CI/CD 도구입니다.

https://www.jenkins.io/doc/

What is Jenkins?

Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software.

Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.



Jenkins 설치(도커에서)



전제 조건

Jenkins의 이해, Docker , Docker networking , Docker volumes
여기의 지침을 따르십시오 — https://www.jenkins.io/doc/book/installing/docker/

Windows용 — https://www.jenkins.io/doc/book/installing/docker/#on-windows

도커에서 브리지 네트워크 만들기
docker network create jenkins
docker:dind Docker 이미지 실행

docker run 
--name jenkins-docker 
--rm 
--detach 
--privileged 
--network jenkins 
--network-alias docker 
--env DOCKER_TLS_CERTDIR=/certs 
--volume C:\Users\msuni\Docker\Jenkins-Volume\jenkins-docker-certs:/certs/client 
--volume C:\Users\msuni\Docker\Jenkins-Volume\jenkins-data:/var/jenkins_home 
--publish 2376:2376 docker:dind 
--storage-driver overlay2


공식 Jenkins 도커 이미지 맞춤설정

1단계: 다음 콘텐츠를 사용하여 Dockerfile 만들기

FROM jenkins/jenkins:lts-jdk11
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo “deb [arch=$(dpkg — print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable” > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli — plugins “blueocean:1.25.6 docker-workflow:1.29”


2단계: 도커 이미지 빌드
docker build -t jenkins-with-docker:0.1 .
3단계: Docker에서 사용자 지정 이미지를 컨테이너로 실행

docker run --name jenkins-blueocean 
--restart=on-failure 
--detach 
--network jenkins 
--env DOCKER_HOST=tcp://docker:2376 
--env DOCKER_CERT_PATH=/certs/client 
--env DOCKER_TLS_VERIFY=1 
--publish 8080:8080 
--publish 50000:50000 
--volume C:\Users\msuni\Docker\Jenkins-Volume\jenkins-data:/var/jenkins_home 
--volume C:\Users\msuni\Docker\Jenkins-Volume\jenkins-docker-certs:/certs/client:ro jenkins-with-docker:0.1


4단계: post-installation wizard을 따라 나머지 단계를 완료합니다.

5단계: 관리 사용자 만들기 - these instructions을 따르십시오.

설치 단계를 완료한 후 이제 http://localhost:8080/login을 찾아보고 새 관리 사용자 자격 증명을 사용하여 로그인할 수 있습니다.




이전 게시물에서 사용자 지정 이미지 "seleniumtests-in-docker"를 만들었습니다. Jenkins의 이미지를 사용하기 위해 해당 이미지를 도커 허브 공개 저장소에 푸시했습니다.

전제 조건:
  • 여기에서 가입하세요: https://hub.docker.com/signup
  • 이메일/ID를 사용하여 로그인하라는 메시지가 표시됩니다. 이메일 주소도 확인하라는 메시지가 표시됩니다.
  • 로그인 후 $0에 대한 개인 계획을 선택했습니다(무제한 공용 리포지토리를 만들 수 있는 액세스 권한이 있는 기본 계획임).

  • 도커 허브에 커스텀 이미지 푸시

    1단계: 리포지토리 생성



    2단계: 도커 허브로 푸시되기 전에 로컬 이미지에 대한 새 태그 생성
    docker tag seleniumtests-in-docker:1.0 <username>/selenium-in-docker-demos:1.0
    3단계: docker cli를 사용하여 Docker Hub에 로그인
    docker login -u <username> -p <password>
    4단계: 로컬 이미지를 도커 허브로 푸시합니다. 컴퓨터에서 이 명령을 실행합니다(사용자 이름을 사용자 이름으로 바꿉니다).
    docker push <username>/selenium-in-docker-demos:1.0
    내 이미지는 여기에서 사용할 수 있습니다: https://hub.docker.com/r/sunipro2022/selenium-in-docker-demos


    이제 이미지를 사용할 준비가 되었으므로 Jenkins에서 셀레늄 테스트를 실행하기 위한 새 파이프라인을 생성해 보겠습니다.

    Jenkins 파이프라인 생성

    1단계: Jenkins에 로그인(http://localhost:8080/)

    2단계: 새 항목 만들기



    항목 이름을 입력하고 파이프라인을 선택한 다음 확인을 클릭합니다.



    파이프라인 구성 페이지가 표시되어야 합니다. 파이프라인 섹션으로 이동합니다.



    파이프라인 스크립트 옵션을 사용하거나(에디터에 직접 _groovy 스크립트를 입력하세요. 배울 수 있는 다른 언어인 것 같습니다 :) _) SCM에서 Jenkins 파일을 가져올 수 있습니다(예: Git).

    다음 파이프라인 스크립트를 사용하여 이전에 Docker 허브에 업로드한 이미지를 실행했습니다.

    pipeline {
     agent any
    stages {
      stage('Run demo tests') {
       steps {
         sh('docker run sunipro2022/selenium-in-docker-demos:1.0 ')
       }
      }
     }
    }
    


    파이프라인 로그





    지금까지 파이프라인은 기본 브라우저(chrome)로 테스트를 실행했습니다.

    동일한 이미지를 사용하여 크로스 브라우저 테스트를 실행하는 방법을 살펴보겠습니다.

    매개변수를 사용하도록 Jenkins 파이프라인 업데이트

    Jenkins 매개변수에 대한 자세한 내용은 다음 설명서를 참조하십시오. https://www.jenkins.io/doc/book/pipeline/syntax/#parameters

    1단계: 매개변수 섹션에 매개변수를 추가하도록 파이프라인 스크립트를 업데이트하고 BROWSER 매개변수 값을 환경 변수로 전달하도록 docker run 명령을 업데이트합니다.

    pipeline {
        agent any
        parameters {
          string defaultValue: 'Chrome', name: 'BROWSER', description: 'Select between Chrome and Firefox browsers.'
        }
        stages {
          stage('Run demo tests') {
           steps {
             sh("docker run --rm --env 'env_browser_param=${params.BROWSER}' sunipro2022/selenium-in-docker-demos:1.0  ")
           }
          }
         }
    }
    


    파이프라인 변경 사항을 적용합니다.

    아래와 같이 "Build with parameters"를 제출합니다.




    결론:
    이 게시물은 로컬 환경에서 Jenkins 및 docker로 작업하는 방법을 설명합니다. Jenkins, Docker를 배우고 Jenkins에서 Selenium 테스트를 실행하려는 여정에 있는 나와 같은 초보자에게 유용하기를 바랍니다.

    시간을 내어 제 게시물을 읽어주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기