도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성

  • 환경
    젠킨스 설치, 바이 보면, 조금 설치, 서버를 준비합니다.
    고정 표시기 설치, 바이 보면, 서버를 준비 조금을 설치합니다.

  • 젠킨스 구성
    1. 작업의 메이븐 프로젝트를 만듭니다.
      도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성
  1. 젠킨스 구성 - 소스
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성

  2. 젠킨스 구성 - 플립 플롭의 건설
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성

  3. 젠킨스 구성 - 환경을 구축
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성
    중앙 GitLab에서 구성 파일을 저장, 제작하기 전에이 Dockerfile이 최신 파일 참조 뒤에 구축을 시작 포함하는 최신 구성 파일을 가져옵니다.

    cd /data/httpd/release/b2b-configuration;git pull
    sleep 3;
    yes | cp -rfp  /data/httpd/release/b2b-configuration/Spring-partner/QA/application.yml  /home/jenkins/.jenkins/workspace/b2b-partner-test/src/main/resources/
    yes | cp -rfp  /data/httpd/release/b2b-configuration/Spring-partner/QA/Dockerfile  /home/jenkins/.jenkins/workspace/b2b-partner-test/
  4. 젠킨스 구성 - 작업 후 건설 및 건축
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성
    서버를 설정 도커에 첫 번째 동기화 항아리 패키지와 Dockerfile 후, 대화 형 명령은 고정 표시기 컨테이너 건설, 서버를 설정하는 부두 노동자로 쉘 스크립트를 전송 기대 시작, 알리 구름 이미지에 밀어 창고 및 기타 작업.
    젠킨스이 서버가 rsync를 스크립트입니다 bash는 /home/jenkins/docker-test/script/b2b-rsync.sh의 B2B 파트너 테스트 매개 변수 후.
    rsync를 동기화 스크립트 :
    #!/bin/bash
    IP=10.10.10.10
    PASSWD=p@ssword1
    echo -e "开始同步jar包..."
    rsync -vzrtopg --numeric-ids --progress --password-file=/etc/rsyncd.password6 /home/jenkins/.jenkins/workspace/$1/target/b2b-partner.jar root@$IP::$1
    echo -e "开始同步Dockerfile..."
    rsync -vzrtopg --numeric-ids --progress --password-file=/etc/rsyncd.password6 /home/jenkins/.jenkins/workspace/$1/Dockerfile root@$IP::$1
    expect /home/jenkins/docker-test/script/image_b2b.exp $IP $PASSWD $1

    대화식 명령 스크립트를 기대 : /home/jenkins/docker-test/script/image_b2b.exp

    #!/usr/bin/expect -f
    set ipaddress [lindex $argv 0]
    set passwd [lindex $argv 1]
    set jobname [lindex $argv 2]
    spawn ssh xiaoyu@$ipaddress;
    expect "password:";
    send "$passwd\r";
    expect "#"
    send "sudo nohup /data/docker/layout-script/docker-qa.sh $jobname  >> /data/docker/logs/$jobname.log &\r"

    참고 : 샤오유 ALL = (ALL) NOPASSWD을 : : 위의 스크립트를 실행하기 전에 미리 사용자는 추가 visudo를 다른 서버의 구성에 ssh를하는 데 필요한 모든, 또는 다른 사용자가 과거에 ssh를 할 수 없다.

  • 도커 구성
    부두 노동자의 Dockerfile에 동기화 뷰 받는다는 또한이 디렉토리를 동기화 좋은 항아리 패키지를 구축 할 수 있습니다.
    루트 @ 고정 표시기 - 품질 보증 B2B 파트너는 -test] # 게요
    61,476의 총 부피
    -rw-R --- RW를. 1 19:46 1010 1010 62944090 B2B - 7 월 26 partner.jar입니다
    -rw-r-- 사용. (1) 1010 (1010) RW-237 10시 Dockerfile 7월 26일
    CAT Dockerfile

    FROM registry.cn-hangzhou.aliyuncs.com/xmbaby-pre/ms-jdk8
    EXPOSE 8081
    MAINTAINER b2b-partner-test [email protected]
    ADD b2b-partner.jar /data/httpd/
    WORKDIR /data/httpd/
    ENTRYPOINT java -Xmx256m -Xss512k -jar b2b-partner.jar

    키 도커 서버에서 실행 docker-qa.sh 스크립트

    #!/bin/bash
    JOBMS=$1
    VERSION=latest
    JOBREPO=/data/docker/$1
    IMGREPO=xmbaby-test
    IMGNAME=$1
    DTIME=`date +%Y-%m-%d" "%H":"%M":"%S`
    CONTAINER_NAME=b2b-partner-test
    if [ ! -d $JOBREPO ];then
    mkdir -p $JOBREPO
    scp [email protected]:~/.jenkins/workspace/$1/target/b2b-partner.jar $JOBREPO
    scp [email protected]:~/.jenkins/workspace/$1/Dockerfile $JOBREPO
    echo -e "\n[$JOBMS]" >> /etc/rsyncd.conf
    echo "path=/data/docker/$JOBMS/" >> /etc/rsyncd.conf
    echo "comment = update
    ignore errors
    read only = no
    list = no
    hosts allow = 10.10.10.10/255.255.255.0
    auth users = root
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets" >> /etc/rsyncd.conf
    else
    echo -e "\n时间$DTIME,开始构建job-docker镜像"
    fi
    cd $JOBREPO
    docker build -t ms-b2b/$JOBMS .
    if [ $? -ne 0 ];then
    echo -e "时间$DTIME,$JOBMS 镜像构建失败,请检查dockerfile !"
    exit
    else
    echo -e "时间$DTIME,开始删除之前job-Docker容器."
    docker rm $CONTAINER_NAME -f
    echo -e "时间$DTIME,开始运行job-Docker容器."
    docker run --name $CONTAINER_NAME -v $JOBREPO:$JOBREPO -d -p 8081:8081 ms-b2b/$JOBMS
    sleep 5
    echo -e "时间$DTIME,$CONTAINER_NAME容器创建完成.开始推送到阿里镜像仓库中..."
    IMAGEID=`docker images |grep "ms-b2b/$JOBMS" |awk '{print $3}'`
    echo "Image镜像ID:$IMAGEID"
    CONTAINERID=`docker images |grep "ms-b2b/$JOBMS" |awk '{print $1}'`
    echo "Container容器:$CONTAINERID"
    docker login --username=username --password=PASSWD registry.cn-hangzhou.aliyuncs.com
    docker tag $IMAGEID registry.cn-hangzhou.aliyuncs.com/$IMGREPO/$IMGNAME:$VERSION
    docker push registry.cn-hangzhou.aliyuncs.com/$IMGREPO/$IMGNAME:$VERSION
    fi
  • 젠킨스의 건설
    건설
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성
    빌드 로그를 볼 수 젠킨스 콘솔을
    도커 + 젠킨스 봄 부팅 지속적인 통합 프로젝트를 달성

추천

출처blog.51cto.com/10874766/2425252