목차
1. 개요
2. 준비
3. 전체 아키텍처 다이어그램
https://about.gitlab .com/install/#centos-7
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
로그인 후 복사
" >
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
로그인 후 복사
[FATAL] com.example:demo:0.0.1-SNAPSHOT에 대한 확인할 수 없는 상위 POM: org.springframework 아티팩트를 전송할 수 없습니다. boot:spring-boot- starter-parent:pom:2.0.1.RELEASE 중앙에서/중앙으로(https://repo.maven.apache.org/maven2): repo.maven.apache.org:443 [repo .maven.apache.org /151.101.40.215] 실패: 연결 시간 초과(Connection timed out) 및 'parent.relativePath'가 잘못된 로컬 POM @ 라인 14, 열 10
2、添加环境变量(登录应用服务器密码)
Java java지도 시간 SpringBoot 프로젝트를 자동으로 배포하는 Gitlab CI-CD 방법

SpringBoot 프로젝트를 자동으로 배포하는 Gitlab CI-CD 방법

May 11, 2023 pm 05:31 PM
gitlab springboot ci-cd

1. 개요

이 글에서는 주로 Gitlab CI/CD를 통해 SpringBoot 프로젝트 jar 패키지를 자동으로 배포하는 방법을 기록합니다.

2. 준비

CentOS7 서버 3개를 준비하고 각각 다음 서비스를 배포합니다.

Serial Number System IP Service
1 CentOS7 192.168.56.10 Gitlab
2 CentOS7 192.168.56.11 Runner(Docker 설치)
3 CentOS7 192.168.56. SpringBoot 프로젝트 jar 패키지(jdk, maven 등 설치) .)

위 서비스는 하나의 CentOS7만 사용하고 모든 프로그램을 동일한 시스템에 배포할 수도 있지만 별도로 배포하는 것이 더 좋습니다.

3. 전체 아키텍처 다이어그램

Gitlab CI-CD自动化部署SpringBoot项目的方法

설명:

  • Gitlab 서버는 다음과 같습니다. 배포에 사용 Gitlab 원격 웨어하우스는 CPU 및 메모리 요구 사항이 높습니다. 4코어 CPU와 4GB 이상의 메모리를 사용하는 것이 좋습니다.

  • Runner 서버는 .gitlab-ci에 정의된 단계를 배포하고 실행하는 데 사용됩니다. .yml 파일, Gitlab에 액세스해야 합니다. 웨어하우스 권한은 등록(gitlab-runner 등록)을 통해 다운로드할 수 있습니다.

  • 노트북 서버 사용자가 애플리케이션을 배포합니다. 여기에는 SpringBoot의 jar 패키지가 필요합니다. JDK 및 Maven을 미리 설치하고 환경 변수를 구성합니다.

    1. 환경 준비(선택 사항)
3개의 서버에서 다음 명령을 실행합니다.

yum -y upgrade
yum -y install wget
yum -y install vim
로그인 후 복사

2. 참조 주소:

https://about.gitlab .com/install/#centos-7

https://www.xieniao.com/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 미러 추가
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:" 프롬프트는 시작이 성공했음을 의미합니다Gitlab CI-CD自动化部署SpringBoot项目的方法

(7) GitLab 페이지를 방문하세요

502가 보고되면 잠시 기다리세요. 다시 새로고침해 보세요. 보통 1~2분 정도 소요됩니다.

이 글에서 설정한 계정: root, 새 비밀번호: 11112222


3. Runner 설치

(1) 바이너리 파일 다운로드 Gitlab CI-CD自动化部署SpringBoot项目的方法

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: 명령을 찾을 수 없습니다. 루트 사용자로 전환하면 sudo를 제거하고 위 명령을 실행할 수 있습니다.

(5) Runner 등록

참조 주소: https://docs.gitlab.com/runner/register/index.html

Execute gitlab-runner 등록 명령:

[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 방법을 선택합니다. 따라서 서버에 추가 도커를 설치해야 합니다


#!/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 <<-&#39;EOF&#39;
{
  "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(관리자 권한, 서버 주소 복사 및 토큰)를 등록하거나 별도의 Runner를 등록할 수도 있습니다. 프로젝트 수준에서(Project Runner 설정 페이지에 들어가서 주소와 토큰을 복사하세요)



등록 성공 후, 등록된 러너는 러너 목록에서 볼 수 있습니다


Gitlab CI-CD自动化部署SpringBoot项目的方法

확인: 태그 없는 작업 실행 이 러너가 태그 없이 작업을 선택할 수 있는지 여부를 나타냅니다


Gitlab CI-CD自动化部署SpringBoot项目的方法

4. 애플리케이션 서버 환경


(1) 사용자가 원격으로 로그인하도록 허용(선택 사항)

vi /etc/ssh/sshd_config
修改:
PasswordAuthentication yes                      
PermitRootLogin yes

重启服务:
service sshd restart
로그인 후 복사

(2) JDK1.8 설치Gitlab CI-CD自动化部署SpringBoot项目的方法

(2) Unzip

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) Maven3 설치 .3.9

(2) Unzip

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 프로젝트를 빠르게 생성합니다. 오류가 보고되면 xml

의 이 줄에서 다음 오류를 보고합니다.

[FATAL] com.example:demo:0.0.1-SNAPSHOT에 대한 확인할 수 없는 상위 POM: org.springframework 아티팩트를 전송할 수 없습니다. boot:spring-boot- starter-parent:pom:2.0.1.RELEASE 중앙에서/중앙으로(https://repo.maven.apache.org/maven2): repo.maven.apache.org:443 [repo .maven.apache.org /151.101.40.215] 실패: 연결 시간 초과(Connection timed out) 및 'parent.relativePath'가 잘못된 로컬 POM @ 라인 14, 열 10

수정된 버전Gitlab CI-CD自动化部署SpringBoot项目的方法1.5.9.RELEASE을 가리킵니다.

2、添加环境变量(登录应用服务器密码)

注: 其中 ssh_password 这个添加到环境变量中,取消勾选 Protect Branch (仅保护分支);修改和添加都是默认勾选,需要取消,否则,其他分支不能读取到该变量;

Gitlab CI-CD自动化部署SpringBoot项目的方法

先在应用服务器上创建一个目录,用于上传存放项目 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!
로그인 후 복사

Gitlab CI-CD自动化部署SpringBoot项目的方法

可能遇到的问题总结:

  1. 权限问题:可以先使用 root 用户看看是不是权限问题导致,如果是的话,提升执行用户的权限;并发问题:这里没有修改 Runner 的并发数,可以修改同时可以进行的任务并发数;其他问题:读取不到配置的环境变量,取消勾选仅保护分支的选项;

  2. 未执行job:没有勾选未配置 tags 也执行选项;

위 내용은 SpringBoot 프로젝트를 자동으로 배포하는 Gitlab CI-CD 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Redis를 사용하여 SpringBoot에서 분산 잠금을 구현하는 방법 Redis를 사용하여 SpringBoot에서 분산 잠금을 구현하는 방법 Jun 03, 2023 am 08:16 AM

1. Redis는 분산 잠금 원칙과 분산 잠금이 필요한 이유를 구현합니다. 분산 잠금에 대해 이야기하기 전에 분산 잠금이 필요한 이유를 설명해야 합니다. 분산 잠금의 반대는 독립형 잠금입니다. 다중 스레드 프로그램을 작성할 때 공유 변수를 동시에 작동하여 발생하는 데이터 문제를 방지하기 위해 일반적으로 잠금을 사용하여 공유 변수를 상호 제외합니다. 공유 변수의 사용 범위는 동일한 프로세스에 있습니다. 동시에 공유 리소스를 운영해야 하는 여러 프로세스가 있는 경우 어떻게 상호 배타적일 수 있습니까? 오늘날의 비즈니스 애플리케이션은 일반적으로 마이크로서비스 아키텍처입니다. 이는 하나의 애플리케이션이 여러 프로세스를 배포한다는 의미이기도 합니다. 여러 프로세스가 MySQL에서 동일한 레코드 행을 수정해야 하는 경우 잘못된 작업으로 인해 발생하는 더티 데이터를 방지하려면 배포가 필요합니다. 현재 소개할 스타일은 잠겨 있습니다. 포인트를 얻고 싶다

springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법 springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법 Jun 03, 2023 pm 04:38 PM

Springboot가 파일을 읽지만 jar 패키지로 패키징한 후 최신 개발에 액세스할 수 없습니다. springboot가 파일을 jar 패키지로 패키징한 후 파일을 읽을 수 없는 상황이 발생합니다. 그 이유는 패키징 후 파일의 가상 경로 때문입니다. 유효하지 않으며 읽기를 통해서만 액세스할 수 있습니다. 파일은 리소스 publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input 아래에 있습니다.

프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 Oct 20, 2023 am 10:40 AM

프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 1. 배경 소개 소프트웨어 개발 프로세스에서 프로젝트 문서는 개발 팀이 프로젝트의 요구 사항과 설계를 이해하는 데 도움이 될 뿐만 아니라 테스트 팀에 참조를 제공할 수도 있습니다. 그리고 고객. 프로젝트 문서의 버전 관리 및 팀 협업을 용이하게 하기 위해 프로젝트 문서 관리에 GitLab을 사용할 수 있습니다. GitLab은 Git 기반의 버전 관리 시스템으로, 코드 관리 지원 외에도 프로젝트 문서 관리도 가능합니다. 2. GitLab 환경설정 먼저, 저는

SpringBoot와 SpringMVC의 비교 및 ​​차이점 분석 SpringBoot와 SpringMVC의 비교 및 ​​차이점 분석 Dec 29, 2023 am 11:02 AM

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

SpringBoot가 Redis를 사용자 정의하여 캐시 직렬화를 구현하는 방법 SpringBoot가 Redis를 사용자 정의하여 캐시 직렬화를 구현하는 방법 Jun 03, 2023 am 11:32 AM

1. RedisAPI 기본 직렬화 메커니즘인 RedisTemplate1.1을 사용자 정의합니다. API 기반 Redis 캐시 구현은 데이터 캐싱 작업에 RedisTemplate 템플릿을 사용합니다. 여기서 RedisTemplate 클래스를 열고 클래스의 소스 코드 정보를 봅니다. 키 선언, 값의 다양한 직렬화 방법, 초기 값은 비어 있음 @NullableprivateRedisSe

GitLab 중국어 버전의 Centos 오프라인 설치 GitLab 중국어 버전의 Centos 오프라인 설치 Feb 19, 2024 am 11:36 AM

1. gitlab 설치 패키지를 다운로드하세요. [Tsinghua University Open Source Software Mirror Station]에서 최신 중국어 버전의 gitlab 설치 패키지를 다운로드하세요. 설치 패키지에는 중국어 간체 현지화 패키지가 함께 제공됩니다. [gitlab 공식 홈페이지]에서 최신 gitlab 설치 패키지를 다운로드하세요. 2. gitlab을 설치하고 gitlab-ce-14.9.4-ce.0.el7.x86_64를 예로 들어 centos 서버에 업로드한 다음 yum을 사용하여 gitlabyum-yinstallgitlab-ce-14.3.2-ce.0을 설치합니다. el7.x86_64.rpm은 yum을 사용하여 gitum-yinstallgit#git 설치 및 gitlab 구성 파일 vi 수정

springboot에서 application.yml의 값을 얻는 방법 springboot에서 application.yml의 값을 얻는 방법 Jun 03, 2023 pm 06:43 PM

프로젝트에서는 일부 구성 정보가 필요한 경우가 많습니다. 이 정보는 테스트 환경과 프로덕션 환경에서 구성이 다를 수 있으며 실제 비즈니스 상황에 따라 나중에 수정해야 할 수도 있습니다. 이러한 구성은 코드에 하드 코딩할 수 없습니다. 예를 들어 이 정보를 application.yml 파일에 작성할 수 있습니다. 그렇다면 코드에서 이 주소를 어떻게 얻거나 사용합니까? 2가지 방법이 있습니다. 방법 1: @Value 주석이 달린 ${key}를 통해 구성 파일(application.yml)의 키에 해당하는 값을 가져올 수 있습니다. 이 방법은 마이크로서비스가 상대적으로 적은 상황에 적합합니다. 프로젝트, 업무가 복잡할 때는 논리

SpringBoot+Dubbo+Nacos 개발 실습 튜토리얼 SpringBoot+Dubbo+Nacos 개발 실습 튜토리얼 Aug 15, 2023 pm 04:49 PM

이 글에서는 dubbo+nacos+Spring Boot의 실제 개발에 대해 이야기하기 위해 자세한 예제를 작성하겠습니다. 이 기사에서는 이론적 지식을 너무 많이 다루지는 않지만 dubbo를 nacos와 통합하여 개발 환경을 신속하게 구축하는 방법을 설명하는 가장 간단한 예를 작성합니다.

See all articles