Gitlab CI-CD 자동화 SpringBoot 프로젝트 배치 방법 절차
12970 단어 Gitlab자동화 배치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.전체적인 구조 도
설명:
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
설치 성공 후 그림:(5)gitlab 프로필 을 수정 하여 서버 ip 와 사용자 정의 포트 를 지정 합 니 다.
vim /etc/gitlab/gitlab.rb
(6)GitLab 리 셋 및 시작
gitlab-ctl reconfigure
gitlab-ctl restart
알림"ok:run:"시작 성공 표시(7)GitLab 페이지 방문
502 를 신고 하면 일정 시간 을 기 다 렸 다가 새로 고침 해 보 는 것 이 보통 1~2 분 정도 다.
본 고 에서 설정 한 계 정: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 복사)를 등록 할 수 있 습 니 다.등록 완료 후,Runner 목록 에서 등 록 된 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 프로젝트 를 빠르게 만 듭 니 다.
잘못 보고 하면 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 선택 을 취소 합 니 다(분기 만 보호 합 니 다).수정 과 추 가 는 기본 체크 입 니 다.취소 해 야 합 니 다.그렇지 않 으 면 다른 분기 에서 이 변 수 를 읽 을 수 없습니다.
먼저 응용 서버 에 프로젝트 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 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Gitlab CI-CD 자동화 SpringBoot 프로젝트 배치 방법 절차Runner Server 는 실행.gitlab-ci.yml 파일 에서 정의 하 는 stage(단계)를 배치 하 는 데 사 용 됩 니 다.Gitlab 창 고 를 방문 할 수 있 는 권한 이 필요 합 니 다.코드 를 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.