Gitlab CI-CD 자동화 SpringBoot 프로젝트 배치 방법 절차

개술
본 고 는 주로 Gitlab CI/CD 를 통 해 SpringBoot 프로젝트 jar 패 키 지 를 자동 으로 배치 하 는 방법 을 기록 하고 있다.
전기 준비
CentOS 7 서버 세 대 를 준비 하여 다음 과 같은 서 비 스 를 각각 배치 합 니 다.
번호
계통
IP
복무
1
CentOS7
192.168.56.10
Gitlab
2
CentOS7
192.168.56.11
러 너(Docker 설치)
3
CentOS7
192.168.56.12
SpringBoot 프로젝트 jar 패키지(jdk,maven 등 설치)
상기 서 비 스 는 CentOS 7 한 대만 사용 하여 모든 프로그램 을 같은 기계 에 배치 할 수 있 으 나 분리 배 치 를 더욱 권장 합 니 다.
3.전체적인 구조 도
Gitlab CICD 架构图
설명:
  • Gitlab 서버 는 Gitlab 원 격 창 고 를 배치 하 는 데 사용 되 며 CPU 와 메모리 에 대한 요구 가 높 습 니 다.4 개의 핵 CPU,4GB 이상 의 메모 리 를 권장 합 니 다
  • Runner Server 는 실행.gitlab-ci.yml 파일 에서 정의 하 는 stage(단계)를 배치 하 는 데 사 용 됩 니 다.Gitlab 창 고 를 방문 할 수 있 는 권한 이 필요 합 니 다.코드 를 다운로드 할 수 있 고 등록 방식(gitlab-runner register)을 통 해 이 루어 집 니 다
  • Your Laptop Server 사용자 가 프로그램 을 배치 합 니 다.여기 가 바로 SpringBoot 의 jar 패키지 입 니 다.JDK 와 Maven 을 미리 설치 하고 환경 변 수 를 설정 해 야 합 니 다.
  • 환경 구축
    1.환경 준비(선택 가능)
    세 대의 서버 가 다음 명령 을 수행 합 니 다:
    
    yum -y upgrade
    yum -y install wget
    yum -y install vim
    2.Gitlab 설치
    참고 주소:
    https://about.gitlab.com/install/#centos-7
    https://www.jb51.net/article/188877.htm
    (1)필요 한 의존 도 를 설치 하고 설정 합 니 다.
    
    sudo yum install -y curl policycoreutils-python openssh-server
    sudo systemctl enable sshd
    sudo systemctl start sshd
    
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo systemctl reload firewalld
    
    (2)메 일 서비스 설치
    
    sudo yum install postfix
    sudo systemctl enable postfix
    sudo systemctl start postfix
    
    (3)gitlab 미 러 추가
    참고 주소:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.4.0-ce.0.el7.x86_64.rpm
    
    (4)gitlab 설치 명령 설치
    
    rpm -i gitlab-ce-13.4.0-ce.0.el7.x86_64.rpm --nodeps --force
    
    설치 성공 후 그림:
    gitlab安装成功
    (5)gitlab 프로필 을 수정 하여 서버 ip 와 사용자 정의 포트 를 지정 합 니 다.
    
    vim  /etc/gitlab/gitlab.rb
    (6)GitLab 리 셋 및 시작
    
    gitlab-ctl reconfigure
    gitlab-ctl restart
    알림"ok:run:"시작 성공 표시
    (7)GitLab 페이지 방문
    502 를 신고 하면 일정 시간 을 기 다 렸 다가 새로 고침 해 보 는 것 이 보통 1~2 분 정도 다.
    GitLab登录页面
    본 고 에서 설정 한 계 정:root,새 비밀번호:11112222
    3.Runner 설치
    공식 문서 참조:https://docs.gitlab.com/runner/install/linux-manually.html#install-gitlab-runner-manually-on-gnulinux중의 Using binary file Install
    (1)바 이 너 리 파일 다운로드
    
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
    (2)실행 권한 수정
    
    sudo chmod a+x /usr/local/bin/gitlab-runner
    
    (3)GitLab CI 사용자 만 들 기
    
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
    (4)설치 및 서비스 로 실행
    
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo gitlab-runner start
    
    알림 sudo:gitlab-runner:command not found 를 만 났 을 때 루트 사용자 로 전환 하면 sudo 를 제거 하고 위의 명령 을 수행 할 수 있 습 니 다.
    (5)등록 러 너
    참고 주소:https://docs.gitlab.com/runner/register/index.html
    gitlab-runner register 명령 실행:
    
    [root@localhost bin]# gitlab-runner register
    Runtime platform                                    arch=amd64 os=linux pid=21527 revision=4e1f20da version=13.4.0
    Running in system-mode.
    
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://192.168.56.10/
    
    Please enter the gitlab-ci token for this runner:
    PwF1sZPX_zsB-xChSKjH
    
    Please enter the gitlab-ci description for this runner:
    [localhost.localdomain]: test ci cd desc
    
    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag,other-tag
    
    Registering runner... succeeded                     runner=PwF1sZPX
    Please enter the executor: ssh, virtualbox, parallels, shell, docker-ssh, docker+machine, docker-ssh+machine, kubernetes, custom, docker:
    docker
    
    Please enter the default Docker image (e.g. ruby:2.6):
    maven:3.3.9-jdk-8
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    
    주:여기 서 선택 한 docker 방식 이기 때문에 서버 에 docker 를 추가 로 설치 해 야 합 니 다.
    참고:https://zhuanlan.zhihu.com/p/54147784
    
    #!/bin/bash
    #        
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    
    #         
    sudo rm -rf /var/lib/docker
    
    #       
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    
    #    ,        
    sudo yum-config-manager \
        --add-repo \
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    #     
    sudo yum makecache fast
    
    #          docker
    sudo yum install -y docker-ce
    
    #        
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    EOF
    
    #   docker         
    sudo systemctl start docker
    sudo systemctl enable docker
    
    #        docker     
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo systemctl restart docker
    
    전역 적 으로 공 유 된 Runner(관리자 권한,서버 주소 와 Token 복사)를 등록 합 니 다.모든 항목 을 사용 하거나 프로젝트 등급 의 단독 Runner(프로젝트 Runner 설정 페이지 에 들 어가 주소 와 Token 복사)를 등록 할 수 있 습 니 다.
    添加GitLab-Runner
    등록 완료 후,Runner 목록 에서 등 록 된 Runner 를 볼 수 있 습 니 다.
    GitLab-Runner添加成功
    선택:태그 없 이 작업 을 선택 할 수 있 는 지 여 부 를 나 타 냅 니 다.
    GitLab-Runner配置
    4.응용 서버 환경 설치
    (1)원 격 로그 인 허용(선택 가능)
    
    vi /etc/ssh/sshd_config
      :
    PasswordAuthentication yes                      
    PermitRootLogin yes
    
        :
    service sshd restart
    
    (2)JDK 1.8 설치
    (1)다운로드 주소:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    (2)스트레스 해소
    
    tar -zxvf jdk-8u161-linux-x64.tar.gz
       :
    mv jdk1.8.0_161 java1.8 
    
    (3)환경 변수 설정
    
    vi /etc/profile
    
          :
    export JAVA_HOME=/usr/local/java1.8
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        
    
    source /etc/profile
    java -version
    
    (3)Maven 3.3.9 설치
    (1)다운로드 주소:http://maven.apache.org/download.cgi
    (2)스트레스 해소
    
    tar -zxvf apache-maven-3.3.9-bin.tar.gz 
    
       :
    mv apache-maven-3.3.9 maven-3.3.9 
    
    (3)환경 변수 설정
    
    vi /etc/profile
    
          :
    export MAVEN_HOME=/usr/local/maven-3.3.9
    export PATH=$MAVEN_HOME/bin:$PATH
        
    
    source /etc/profile
    mvn -v
    
    5.SpringBoot 프로젝트 만 들 기
    1.Gitlab Spring 템 플 릿 을 사용 하여 SpringBoot 프로젝트 를 빠르게 만 듭 니 다.
    GitLab创建SpringBoot项目
    SpringBoot项目配置gitlab-ci.yml.jpg
    잘못 보고 하면 pom.xml 의 이 줄 을 삭제 합 니 다.
    이것 이 틀 리 면:
    [FATAL] Non-resolvable parent POM for com.example:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.0.1.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.40.215] failed: Connection timed out (Connection timed out) and ‘parent.relativePath' points at wrong local POM @ line 14, column 10
    버 전 수정
    1.5.9.RELEASE
    2.환경 변수 추가(로그 인 응용 서버 비밀번호)
    주:그 중 sshpassword 이것 은 환경 변수 에 추가 되 었 습 니 다.Protect Branch 선택 을 취소 합 니 다(분기 만 보호 합 니 다).수정 과 추 가 는 기본 체크 입 니 다.취소 해 야 합 니 다.그렇지 않 으 면 다른 분기 에서 이 변 수 를 읽 을 수 없습니다.
    配置gitlab-cicd环境变量.jpg
    먼저 응용 서버 에 프로젝트 jar 패 키 지 를 업로드 할 디 렉 터 리 를 만 듭 니 다.
    
    mkdir gitlab-project
    
    .gitlab-ci.yml 파일 을 추가 할 때,먼저 CI/CD Pipeline 의 CI Lint 에서.gitlab-ci.yml 파일 형식 을 검사 할 수 있 습 니 다.
    
    #       ,         
    variables:
      server_ip: 192.168.56.12
      jar_name: demo-0.0.1-SNAPSHOT.jar
      java_path: /usr/local/java1.8/bin
      upload_path: /usr/local/gitlab-project
    
    #             
    stages:
      - build
      - upload
      - deploy
    
    #    maven       
    maven-build:
      stage: build
      image: maven:3.5.0-jdk-8
      script:
        - mvn package -B -Dmaven.test.skip=true
      cache:
        key: m2-repo
        paths:
          - .m2/repository
      artifacts:
        paths: 
          - target/$jar_name
    
    #       jar          ,     ictu/sshpass     ,      sshpass   
    upload-jar:
      stage: upload
      image: ictu/sshpass
      script: 
        - ls -l target/
        - sshpass -p $ssh_password scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no target/$jar_name root@$server_ip:$upload_path/$jar_name
    
    #    SpringBoot jar 
    deploy-test:
      stage: deploy
      image: ictu/sshpass
      script:
        - sshpass -p $ssh_password ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@$server_ip "nohup $java_path/java -jar $upload_path/$jar_name >/dev/null 2>&1 &"
    
    
    DockerHub 위 에 있 는 공공 미 러(ictu/sshpass)를 사 용 했 습 니 다.주로 자체 가 져 온 sshpass 명령 을 사용 하여 scp 와 ssh 명령 을 실행 하려 고 합 니 다.
    모든 것 이 잘 되면 CI/CD 가 자동 으로 작 동 합 니 다.실패 하면 오류 메 시 지 를 보고 Debug 모드 로 디 버 깅 명령 을 실행 할 수 있 습 니 다.
    
    [root@localhost gitlab-project]# jps
    22119 Jps
    22073 demo-0.0.1-SNAPSHOT.jar
    [root@localhost gitlab-project]# curl localhost:8080
    Spring is here!
    
    部署成功访问
    발생 할 수 있 는 문제 요약:
    4.567917 권한 문제:먼저 루트 사용 자 를 사용 하여 권한 문제 로 인 한 것 인지 확인 할 수 있 습 니 다.만약 그렇다면 실행 사용자 의 권한 을 향상 시 킬 수 있 습 니 다.병발 문제:Runner 의 병발 수 를 수정 하지 않 았 습 니 다.동시에 진행 할 수 있 는 작업 의 병발 수 를 수정 할 수 있 습 니 다.다른 문제:설정 한 환경 변 수 를 읽 을 수 없습니다.분기 만 보호 하 는 옵션 을 선택 하지 않 습 니 다
  • 작업 을 수행 하지 않 음:설정 되 지 않 은 태그 도 옵션 을 선택 하지 않 았 습 니 다
  • 총화
    GitLab 이 자체 적 으로 가지 고 있 는 CICD 기능 을 사용 하여 SpringBoot 프로젝트 를 배치 하 는 것 이 매우 편리 합 니 다.초기 환경 구축 은 시간 이 좀 걸 릴 수 있 지만 후기 배치 프로젝트 는 많은 사람들 이 조작 실 수 를 줄 일 수 있 습 니 다.소형 팀 에 있어 Gitlab 이 자체 적 으로 가지 고 있 는 CICD 기능 은 Jenkins 보다 더욱 간단 합 니 다.전체적인 사상 절 차 는 다음 과 같 습 니 다.
    GitLab 서비스 구축;GitLab Runner 서비스 구축;응용 서비스 구축;gitlab-ci.yml 작성 하기;
    SpringBoot 프로젝트 의 경우 일반적으로 다음 과 같이 나 뉜 다.
    (1)maven 포장;
    (2)jar 가방 업로드 하기;
    (3)jar 패키지 시작 하기;
    Gitlab CI-CD 자동화 배치 SpringBoot 프로젝트 의 방법 과 절차 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Gitlab CI-CD 자동화 배치 SpringBoot 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기