지속적인 통합 - 엔트리에서 xxx까지

간단한 소개


centos7+docker+jenkins+svn 기반 지속적 통합 플랫폼 구축

svn


자원 버전 제어 서버
매번 조작마다 데이터를 찾을 수 있어서 코드가 어쨌든 사용 가능한 상태로 돌아갈 수 있다
git에 비해 제출 코드는 심사할 필요가 없지만 매번 제출하기 전에 다른 사람과 충돌하지 않도록 코드를 업데이트해야 합니다. 충돌 후 로컬에서 합병 충돌을 해야 합니다. 그렇지 않으면 제출할 수 없습니다.
코드는 모두 서버에 저장되며, 제출할 때마다 집중식 서버 창고에 저장해야 합니다

centos7


기원된 linux 시스템은 기업이 가장 자주 사용하는 시스템이다
독특한yum명령으로 사용하기 편해
ubuntu에 비해centos는 더욱 안정적이다

maven


프로젝트 의존과 공공 모듈을 개인 라이브러리 (nexus) 에 넣어야 하기 때문에

nexus


마벤트의 개인 창고, 마벤트의 다운로드 속도와 내부 프로젝트 저장 의존도를 높이는 데 사용됩니다.
구축:참조 문서:https://hub.docker.com/r/sonatype/nexus3
#     
docker pull sonatype/nexus3

#        
mkdir -p /tristan/nexus

#     
docker run -d -p 8081:8081 --name mynexus -v /tristan/nexus:/nexus-data sonatype/nexus3

docker


비상경량급 용기화 기술
dockerfile을 통해 이미지를 만들고 aufs를 통해 용기의 파일층을 저장하며 공유된 호스트 호스트를 통해 제로 손실을 실현한다

jenkins


젠킨스가 뭐야?


확장 가능한 지속적인 통합 엔진(CI)
지정한 규칙에 따라 지정된 위치에서 코드를 추출하여 실행할 수 있는 서비스("자동화"컴파일, 포장, 분배 배치)를 구축할 수 있습니다. 구축 가능:ant,maven,gradle, 코드 추출은 사용 가능:svn,git
그룹 구조 방식: 서버 + slave
공식:https://jenkins.io/zh/

왜 Jenkins가 필요해요?


전통적인 운영상의 문제


인공 조작의 실패율과 효율은 자동화에 훨씬 못 미친다
분명히 자동화할 수 있는데 어째서 1대 운영 원가를 절약하지 않느냐

devOps


이렇게 하면 반드시 자동화 도구에 의존해야만 실현할 수 있으며 하드웨어의 조작을 소프트웨어화할 수 있다

분포식, 마이크로 서비스, 용기화로 인한 문제


배포 노드 급증

제인킨스 어떻게 세워요?


docker 방식 구축


docker를 설치하려면 다음과 같이 하십시오.
참조 문서:https://docs.docker.com/install/linux/docker-ce/centos/
#         docker
yum -y remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#       
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

#   docker yum  
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
#        
yum-config-manager --enable docker-ce-nightly

#   docker-ce
yum install -y docker-ce docker-ce-cli containerd.io

#   docker
systemctl start docker

#       
systemctl enable docker

#     demo  
docker run hello-world

미러 가속을 설정하려면:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <

참조 문서:https://jenkins.io/zh/doc/book/installing/
제인킨스 렌즈를 가져오고 폴더를 만들고 렌즈를 실행합니다
docker run \
  -u root \
  --rm \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /tristan/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name myjenkins \
  jenkinsci/blueocean

컨테이너에 들어가서 Administrator password 복사:
docker logs -f my-jenkins

#   :
# 510f3522a35d42b5b5a61dee5bd3bdd3

Jenkins 사용


간단한 공식 사례


참조 문서:
https://jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/#당신의 유수선에 deliver 단계 증가
새 작업 new task
이 라인을 설정하는 pipleline 파일은 자원 제어 관리 서버에서 나온다
github fork의 간단한 프로젝트:
github에서 fork jenkins-docs/simple-java-maven-app
제인킨스가 이 창고를 가리키도록 설정합니다. 주소를 가져가야 합니다.git 접미사
​ Pipeline
​ Definition: ->Pipeline script from SCM
​ SCM: ->Git
​ Repository:
​ Repository URL: https://github.com/tristan-tsl/simple-java-maven-app.git
​ Credentials:
Add 를 클릭하여 인증 추가
인증 드롭다운 선택
​ Branches to build:
​ Branch Specifier(blank for ‘any’): */master
Add 클릭
스크립트 파일 경로: Jenkins/Jenkinsfile
dashboard에서 이 작업을 시작하고 블루오션 열기를 누르십시오

springboot 프로젝트 배치


공식 데모의 기초 위에서
pom 수정.xml:
jar

Jenkinsfile 파일을 수정하려면 다음과 같이 하십시오.
pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2 -p 8081:8081'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package'
            }
        }

        stage('Deliver') {
            steps {
                sh './jenkins/scripts/deliver.sh'
            }
        }
    }
}

서버 관리


서버 시스템 유형 및 버전을 보려면 다음과 같이 하십시오.
cat /etc/redhat-release

메모리 정리:
echo 2 > /proc/sys/vm/drop_caches

참고 자료


링크
묘사
https://jenkins.io/zh/doc/pipeline/tour/getting-started/
Jenkins 공식 문서
https://docs.docker.com/install/linux/docker-ce/centos/
docker 공식 문서
https://blog.51cto.com/lizhenliang/2159817
Jenkins와 Docker의 자동화 CI/CD 실전

좋은 웹페이지 즐겨찾기