지금도 Docker로 Jenkins를 구축하는 데 데이터 지속성이 필수적이라고 말했으면 좋겠다.

3538 단어 Jenkins도커
Docker 기억한 때, Jenkins와 Docker는 궁합 나쁘다고 생각했다.
Docker에서 Jenkins를 움직이면 컨테이너 내에 빌드 한 모듈을 가져 가는 것이 어렵지 않습니까?
그런 번거로울 정도라면 처음부터 Jenkins를 로컬에 설치하는 것이 빠르지 않다? 라고
그런 건 없었다. 성대한 착각했다.

조금 감동했기 때문에, 그 때의 메모 쓰기.

Docker로 Jenkins 빌드하려면 빌드 결과 데이터를 영속화


  • Docker의 지속성으로, 요컨대 컨테이너와 로컬의 폴더를 공유시키는 것.
  • 컨테이너의 Jenkins의 "/var/jenkins_home"에 아티팩트 (빌드 결과)가 들어갑니다.
    그것을 로컬 「/home/java-user/jenkins-docker」에 출력하면 된다.

  • Docker에서 jenkins를 시작하는 명령
    docker run -p 8080:8080 -p 50000:50000 -v /home/java-user/jenkins-docker:/var/jenkins_home jenkins
    
  • Docker Compose로 쓰면 다음과 같은 형태가 된다. docker-compose up으로 부팅 가능.

  • docker-compose.yml
    version: '3.3'
    
    services:
      jenkins:
        image: jenkins:2.60.3
        ports:
          - '8080:8080'
          - '5000:5000'
        volumes:
          - /home/java-user/jenkins-docker:/var/jenkins_home
    

    처음 시작 시 주의사항


  • 최초 설치시에는 설치 키를 입력해야하므로 옵션 d는 붙지 않는다.

  • 좋아 빌드 해 보자! 그렇다면 에라


  • Java의 브로그램으로 gradle로 빌드했을 때, Git에서 Clone한 파일의 액세스권이 없기 때문에 에러가 출력되었다.
  • FATAL: command execution failed
    java.io.IOException: Cannot run program "/var/jenkins_home/workspace/doma-sample/gradlew" (in directory "/var/jenkins_home/workspace/doma-sample"): error=13, Permission denied
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at hudson.Proc$LocalProc.<init>(Proc.java:245)
        at hudson.Proc$LocalProc.<init>(Proc.java:214)
        at hudson.Launcher$LocalLauncher.launch(Launcher.java:850)
        at hudson.Launcher$ProcStarter.start(Launcher.java:384)
        at hudson.Launcher$ProcStarter.join(Launcher.java:395)
        at hudson.plugins.gradle.Gradle.performTask(Gradle.java:333)
        at hudson.plugins.gradle.Gradle.perform(Gradle.java:225)
        at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735)
        at hudson.model.Build$BuildExecution.build(Build.java:206)
        at hudson.model.Build$BuildExecution.doRun(Build.java:163)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:490)
        at hudson.model.Run.execute(Run.java:1735)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:405)
    

    그럼 액세스권 부여하면 된다.

    쉘 스크립트에 다음과 같이 설명
    cd /var/jenkins_home/workspace/doma-sample/
    chmod +x gradlew
    

    ※ Jenkins의 설정 이미지



    안전하게 빌드할 수 있었습니다. 그리고는 빌드한 파일을 로컬의 환경에서 움직일 뿐.

    좋은 웹페이지 즐겨찾기