Адрес фактического проекта электронной коммерции SpringBoot (50k+star):GitHub.com/macro-positive/…
Резюме
Я написал статью раньше«Прощай, Дженкинс! Несколько строк скрипта для автоматизации развертывания, этот артефакт немного мощен! 》, об использовании Gogs+Drone для автоматизации развертывания. Недавно я обнаружил, что функция CI/CD в Gitlab также может реализовать автоматическое развертывание, и она очень проста в использовании! Если вы используете Gitlab в качестве репозитория Git, попробуйте его функцию CI/CD. В этой статье по-прежнему используется автоматическое развертывание SpringBoot в качестве примера для отработки функции CI/DI Gitlab, в надежде помочь всем!
Установить
Чтобы автоматизировать развертывание с помощью функции CI/CD Gitlab, нам необходимо установить такие службы, как Gitlab, Gitlab Runner и Maven.
Установить Гитлаб
Во-первых, давайте установим Gitlab.Друзья, которые не знают, как установить и использовать Gitlab, могут обратиться к следующему«Создайте собственное хранилище Git за 10 минут».
- Используйте следующую команду для запуска службы Gitlab.Здесь следует отметить, что добавление
hostname
properties, чтобы мы могли получить доступ к Gitlab через доменное имя (во избежание ненужных проблем),GITLAB_ROOT_PASSWORD
Эта переменная среды может напрямую устанавливать пароль учетной записи root в Gitlab;
docker run --detach \
--hostname git.macrozheng.com \
--publish 10443:443 --publish 1080:80 --publish 1022:22 \
--name gitlab \
--restart always \
--volume /mydata/gitlab/config:/etc/gitlab \
--volume /mydata/gitlab/logs:/var/log/gitlab \
--volume /mydata/gitlab/data:/var/opt/gitlab \
-e GITLAB_ROOT_PASSWORD=12345678 \
gitlab/gitlab-ce:latest
- нам нужно пройти
git.macrozheng.com
Это доменное имя используется для доступа к Gitlab.Если у вас нет доменного имени, вы можете сделать это, изменив файл хоста на локальном компьютере;
192.168.7.134 git.macrozheng.com
- Поскольку наш Gitlab работает на
1080
По порту хотим получить доступ без добавления порта.Можем использовать Nginx для обратного прокси.Те кто не знаком с Nginx могут прочитать.«Вы, должно быть, даже не представляете, какие чудесные способы использования Nginx! 》, в папку конфигурации Nginx добавитьgit.conf
Конфигурационный файл, содержание следующее:
server {
listen 80; # 同时支持HTTP
server_name git.macrozheng.com; #修改域名
location / {
proxy_pass http://192.168.7.134:1080; # 设置代理服务访问地址
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- Тогда мы можем пройти
git.macrozheng.com
Это доменное имя используется для доступа к Gitlab, введите пароль учетной записиroot:12345678
чтобы залогиниться;
- Загрузите код нашего приложения SpringBoot в Gitlab, и Gitlab готов! Здесь следует отметить, что если не указывать при запуске Gitlab
hostname
Тогда ваш проект будет адресовать HTTP-доступ - это идентификатор контейнера, используя адрес, который не сможет получить доступ к хранилищу GIT!
Установите Gitlab Runner
Gitlab — это просто репозиторий кода, и вам нужно установить его, если вы хотите внедрить CI/CD.
gitlab-runner
,gitlab-runner
Эквивалент исполнителя задач в Gitlab, Gitlab будет вызывать его, когда ему нужно выполнить задачи.
- Скачать первым
gitlab-runner
Образ Docker, выберитеalpine-bleeding
, эта версия очень маленькая!
docker pull gitlab/gitlab-runner:alpine-bleeding
- Используйте следующую команду для запуска
gitlab-runner
;
docker run --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/gitlab-runner:/etc/gitlab-runner \
-d gitlab/gitlab-runner:alpine-bleeding
- В этот момент, если мы посмотрим на
gitlab-runner
Если в журнале контейнера вы найдете следующую ошибку:config.toml
файл не найден, не беспокойтесь об этой проблеме, когда мыgitlab-runner
Этот файл создается автоматически при регистрации в Gitlab;
ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory builds=0
- Далее нам нужно
gitlab-runner
Зарегистрируйтесь в Gitlab, откройтеProject->Settings->CI/CD
функция получения адреса и токена, необходимых для регистрации бегуна;
- Затем используйте следующую команду для ввода
gitlab-runner
внутренняя часть контейнера;
docker exec -it gitlab-runner /bin/bash
- Используйте следующую команду, чтобы зарегистрировать бегун в контейнере;
gitlab-runner register
- Во время регистрации появится интерактивный интерфейс, предлагающий ввести такую информацию, как адрес регистрации, токен, тип исполнителя и т. д. Исполнитель ssh может удаленно выполнять команды Linux, что очень просто в использовании, рекомендуется использовать это!
- После регистрации мы можем найти
config.toml
Файл был сгенерирован, и его содержимое выглядит следующим образом: Если вы захотите изменить конфигурацию бегуна в будущем, вы можете напрямую изменить этот файл.
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-runner"
url = "http://192.168.7.134:1080/"
token = "c2kpV6tX6woL8TMxzBUN"
executor = "ssh"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.ssh]
user = "root"
password = "123456"
host = "192.168.7.134"
port = "22"
- В настройках CI/CD Gitlab видим, что бегун успешно зарегистрирован!
Установить Мавен
Упаковка проекта SpringBoot должна полагаться на Maven, нам нужно сначала установить его на сервер.
- Загрузите установочный пакет Maven Linux, адрес загрузки:maven.apache.org/download.success...
- После завершения загрузки используйте следующую команду, чтобы извлечь ее в указанный каталог;
cd /mydata
tar -zxvf apache-maven-3.8.1-bin.tar.gz
- Исправлять
/etc/profile
файл, добавьте конфигурацию переменной среды:
export MAVEN_HOME=/mydata/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin
- Проверьте, прошла ли установка успешно, проверив версию Maven.
mvn -v
Maven home: /mydata/apache-maven-3.8.1
Java version: 1.8.0_292, vendor: AdoptOpenJDK, runtime: /mydata/java/jdk1.8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
Установить JDK
JRE устанавливается по умолчанию в CentOS, а для использования Maven необходимо установить JDK.
- Загрузите JDK 8, адрес загрузки:Зеркала. Дыхание. Его четырехлетний план. Квота. Талант/принять открытый JD…
- После завершения загрузки извлеките JDK в указанный каталог;
cd /mydata/java
tar -zxvf OpenJDK8U-jdk_x64_linux_xxx.tar.gz
mv OpenJDK8U-jdk_x64_linux_xxx.tar.gz jdk1.8
- существует
/etc/profile
Добавьте переменные окружения в файлJAVA_HOME
.
vi /etc/profile
# 在profile文件中添加
export JAVA_HOME=/mydata/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
# 使修改后的profile文件生效
. /etc/profile
использовать
Все готово, а затем автоматическое развертывание приложений SpringBoot может быть реализовано с помощью функции CI/CD Gitlab!
- Сначала добавьте в корневой каталог проекта
.gitlab-ci.yml
файл, который определяет две задачи, одна задача упакует код приложения в пакет Jar и скопирует его в указанный каталог, а другая задача запустит сценарий,run.sh
Упакуйте Docker-образ приложения и запустите его;
# 打包任务
build-job:
stage: build
# 指定标签,只有具有该标签的runner才会执行
tags:
- docker
script:
# 使用Maven打包
- mvn clean package
# 将jar包、Dockerfile、运行脚本复制到指定目录
- cp target/mall-tiny-gitlab-1.0-SNAPSHOT.jar /mydata/build/mall-tiny-gitlab-1.0-SNAPSHOT.jar
- cp Dockerfile /mydata/build/Dockerfile
- cp run.sh /mydata/build/run.sh
# 部署任务
deploy-job:
stage: deploy
tags:
- docker
script:
# 进入指定目录并执行运行脚本
- cd /mydata/build
- chmod +x run.sh
- ./run.sh
- Здесь стоит упомянуть, что по умолчанию бегун будет выполнять задание только с одной и той же меткой, поскольку мы устанавливаем метку как для задания, так и для бегуна как
docker
, поэтому мы можем выполнить его здесь. Если вы не устанавливаете метку, вам нужно разрешить бегуну выполнять задание без метки в настройках интерфейса редактирования бегуна;
- благодаря нашему
gitlab-runner
используетсяssh
Исполнитель, он войдет на указанный нами сервер, выполнит.gitlab-ci.yml
определено вscript
команда, перед этим код будет получен из Git-репозитория, поэтому нам также нужно модифицировать host-файл на сервере;
vim /etc/hosts
192.168.7.134 git.macrozheng.com
- Следующим шагом является отправка скрипта в репозиторий Git.После отправки он будет в
Project->CI/CD->Pipelines
Найден в выполняемой задаче;
- Откройте страницу сведений о конвейере, вы увидите, что две задачи, которые мы определили, были успешно выполнены;
- Откройте интерфейс сведений о задании, мы можем увидеть вывод информации журнала в процессе выполнения задания;
- Если вы хотите выполнить конвейер вручную, вместо отправки триггера, вы можете щелкнуть на странице конвейеров.
Run Pipeline
кнопка;
- После успешного запуска вы можете получить доступ к проекту по следующему адресу:http://192.168.7.134:8088/swagger-ui/
Суммировать
Если вы используете Gitlab в качестве репозитория Git, очень удобно использовать его возможности CI/CD для автоматизации развертываний! установить легкийgitlab-runner
, пиши просто.gitlab-ci.yml
Файлы сценариев могут быть реализованы. На самом деле, мы уже представили множество решений для автоматического развертывания, таких как Jenkins, Gogs+Drone, Gitlab CI/CD, мы можем найти одну общую черту: эти решения неотделимы от команд Linux. Поэтому, если вы хотите поиграть с автоматическим развертыванием, вам все равно придется сначала поиграть с командами Linux!
использованная литература
Официальная документация:docs.gitlab.com/ee/ci/
Адрес исходного кода проекта
Эта статьяGitHubGitHub.com/macro-positive/…Записано, приветствую всех на Star!