Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Jenkins에서 Docker 빌드를 유발할때 몇가지 방법이 존재한다.

다음 기술된 방법은 그중의 한가지 방법이며,  Jenkins Master & Slave 를 구성하지 않고

외부 Jenkins 에서 Docker Build 를 유발하였다.


시작하기전.

  • Kubernetes 클러스터.
  • Kubernetes 리소스 구성이 배포

    .

    • Docker Jenkins 설치.
    • Docker 설치.
    • Docker Build Plugin 설치.


    플러그인 설치

    Jenkins 에서 Docker 빌드를 위한 플러그인을 다음과 같이 설치 했다.

    https://wiki.jenkins.io/display/JENKINS/Docker+Plugin

    https://wiki.jenkins.io/display/JENKINS/Docker+build+step+plugin

    Image Added



    설정

    Jenkins 관리 → 시스템설정 → Docker Builder 

    호스트에 설치된 Docker server REST API URL 를 통하여 공유한다.

    Test Connection 를 통하여 Connected to unix:///var/run/docker.sock 메세지 노출을 확인할 수 있다.

    Image Added


    호스트의 Docker server REST API URL 설정이 끝나면,

    Jenkins JOB 프로젝트 구성의 Steop 에서 다음과 같이 Execute Docker Command 로 명령어 실행을 할 수 있다.

    Image Added

    차이점은 Docker server REST API 호스트를 공유하지않고 사용하는 경우에는  Execute Shell 로 다음과 같이 스크립트를 통한 Docker images를 생성하였다.

    아래와 같이 스크립트 작성으로 실행해도 무관하나 사설 레지스트리를 이용하는 경우 레지스트리의 ID/PW가 자칫 공개될수 있는 보안적 이슈가 발생한다.

    Code Block
    themeRDark
    echo "REGISTRY_HOST ::::: " $REGISTRY_HOST
    echo "JOB_NAME ::::: " + $JOB_NAME
    echo "BUILD_NUMBER ::::: " + $BUILD_NUMBER
    echo "WORKSPACE ::::: " + $WORKSPACE
    cd $WORKSPACE
    docker login {{docker registry ip}} -u {{user id}} -p {{user pw}}
    docker build -f Dockerfile -t $JOB_NAME:$BUILD_NUMBER .
    docker tag $JOB_NAME:$BUILD_NUMBER {{docker registry ip}}/$JOB_NAME:$BUILD_NUMBER
    docker push {{docker registry ip}}/$JOB_NAME:$BUILD_NUMBER

    Execute Docker Command 로 명령 및 실행을 하는 경우

    레지스트리의 ID/PW가 공개되지 않고 보안적인 이슈까지 해결된다.

    Image Added

    Jenkins 빌드를 진행하게 되면,

    아래와 같이 빌드가 완료되고 Docker images 빌드 후 사설 레지스트리에 Push 된다.

    Image Added