Все еще пользуетесь Дженкинсом? Попробуйте функцию CI/CD Gitlab, это захватывающе!

Java задняя часть Git
Все еще пользуетесь Дженкинсом? Попробуйте функцию CI/CD Gitlab, это захватывающе!

Адрес фактического проекта электронной коммерции 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.Здесь следует отметить, что добавлениеhostnameproperties, чтобы мы могли получить доступ к 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
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 готов! Здесь следует отметить, что если не указывать при запуске GitlabhostnameТогда ваш проект будет адресовать 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, нам нужно сначала установить его на сервер.

  • После завершения загрузки используйте следующую команду, чтобы извлечь ее в указанный каталог;
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 в указанный каталог;
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/

Адрес исходного кода проекта

GitHub.com/macro-positive/…

Эта статьяGitHubGitHub.com/macro-positive/…Записано, приветствую всех на Star!