🔧Пример, чтобы научиться использовать gitlab runner для автоматического развертывания

CI/CD

предисловие

Автоматическое развертывание означает, что код автоматически развертывается на сервере после объединения в ветку, что может значительно повысить эффективность разработки🚀, а также соответствует гибкой разработке.

Благодаря этой статье вы можете узнать, как настроить автоматическое развертывание, а запись о наступлении на яму прикреплена в конце статьи. Надеюсь, вы сможете избежать обходных путей. Если вы столкнулись с ошибкой, вы можете сначала проверить, есть ли актуальные решения в записи о наступлении на яму ниже.

концепция

Во-первых, примерно понять следующие два понятия:

gitlab-runner: это носитель gitlab-ci (непрерывная интеграция), используемый для выполнения .gitlab-ci.yml и возврата результата в gitlab, gitlab-runner должен связывать проекты с токенами, которые могут быть связаны с несколькими или один проект

.gitlab-ci.yml: файл, помещенный в корневой каталог проекта, после отправки gitlab проанализирует этот файл и выполнит его с помощью gitlab-runner.

обработать

Процесс создания автоматического развертывания на самом деле очень прост.

  1. Установите gitlab-runner на сервер и привяжите репозиторий.
  2. Реализовать вход без пароля на сервер, на котором развернут проект, и обновить файлы после сборки.

На самом деле это очень просто сказать, но при этом вы можете столкнуться со многими ямами, и вы можете эффективно использовать поисковые системы, чтобы устранять их одну за другой! К статье приложу запись о наступлении на яму

выполнить

Сначала инициализируйте проект небрежно, принимая его на GitLab (вы также можете разместить его на своем собственном личном GitLab), и вручную разверните его на сервере. Я не буду много говорить о развертывании.

После того, как мы захотим внедрить Push-код в MASTER, мы автоматически развернем новый код на сервер, мы сможем увидеть последние результаты.

Как показано на рисунке ниже, я написал страницу небрежно и развернул ее на своем собственном сервере, так как доменного имени нет, я обращаюсь к ней напрямую через ip

Установить gitlab-бегун

АвторизоватьсяКроме тогоСервер с установленным gitlab-runner

  • Установите и загрузите соответствующий установочный пакет в соответствии с вашей серверной системой, у меня 64-битная система centos7, поэтому установите первый
# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# Linux x86
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

# Linux arm
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
  • Назначьте разрешения для gitlab-runner
sudo chmod +x /usr/local/bin/gitlab-runner
  • Создайте пользователя с именем gitlab-runner, что необходимо выполнить для этого пользователя при настройке входа без пароля позже.
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  • Установить
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
  • Введите URL-адрес gitlab, если ваш код размещен в частной gitlab, затем введите адрес вашей частной gitlab.

  • токен ввода

Есть два типа токенов

Один из них — Shared Runner, который можно использовать во всех проектах.

Другой состоит в том, что определенный бегун может использовать только бегун только для конкретного проекта. Введите проект> Найти настройки> CI / CD> Развернуть просмотр бегунов

  • Введите описание бегуна

  • Введите тег бегуна

  • войти в оболочку исполнителя

Если установка прошла успешно, то вы увидите следующее описание

  • установить git

gitlab-runner должен использовать git, установите его

# 安装 git (-y 是所有问题自动选 yes 的意思)
yum -y install git

# 查看git版本,确认是否安装成功
git --version

Реализовать вход без пароля

При установке gitlab-runner мы создали пользователя gitlab-runner

  • Теперь убедитесь, что мы находимся под пользователем gitlab-runner.
# 查看当前用户
whoami

# 如果不是在 gitlab-runner 下, 切换一下
su gitlab-runner
  • сгенерировать ключ
ssh-keygen
  • Просмотр сгенерированного контента
# ~ 指向用户的 home 目录
cd ~/.ssh
ls -a
  • Установите открытый ключ на сервер, на котором развернут проект.
ssh-copy-id root@xx.xx.xxx.xx # 部署项目的服务器的公网IP
  • Введите пароль сервера

  • После завершения вам будет предложено попробовать войти в систему, войдите, чтобы убедиться, что это успешно

ssh root@xx.xx.xxx.xx

Если вы можете успешно войти в систему, значит, наша часть развертывания сервера прошла успешно.

написать .gitlab-ci.yml

cache:
  paths:
    - node_modules # 缓存 node_modules

stages:
  - install
  - build
  - deploy

install:
  stage: install
  only:
    - master # 只对 master 的改动做处理
  script:
    - echo '安装依赖阶段'
    # - yarn config set registry https://registry.npm.taobao.org
    # - yarn config set sass-binary-site https://npm.taobao.org/mirrors/node-sass
    - yarn
  tags:
    - test # 安装 gitlab-runner 时加的 tag

build:
  stage: build
  script:
    - echo '构建阶段'
    - yarn build
  artifacts:
    paths:
      - dist
  tags:
    - test

deploy:
  stage: deploy
  script:
    - echo '替换文件阶段'
    - cd dist
    - pwd
    - whoami
    - ssh root@xxx.xxx.xx.xxx
    # 列出所有文件
    - ssh root@xxx.xxx.xx.xxx "ls -a"
    # 删项目文件夹下所有内容
    - ssh root@xxx.xxx.xx.xxx "rm -rf ./home/myapp/test/*"
    # 使用 scp 命令远程拷贝文件
    - scp -r -P 22 ./* root@132.232.88.202:/home/myapp/test
  tags:
    - test

На данный момент автоматическое развертывание было успешно построено, измените код, нажмите, чтобы просмотреть результаты.

Побить пит-рекорд

  1. Загрузка установочного пакета gitlab-runner с помощью curl происходит медленно
# 如下载 Linux 64位版
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

Решение: Откройте адрес загрузки в браузере, переименуйте его в gitlab-runner после загрузки, а затем передайте на сервер /usr/local/bin/

  1. Ошибка при установке gitlab-runner sudo: измените файл /etc/sudoers и найдите строку, похожую на следующую: По умолчанию secure_path = /sbin:/bin:/usr/sbin:/usr/bin Добавьте каталог, в котором находится выполняемая команда, в конце, например: По умолчанию secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
修改 /etc/sudoers 文件,找到类似下面的一行:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

将要执行的命令所在的目录添加到后面,即可,如:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
  1. Ошибка на этапе установки git fetch-pack: ожидаемый неглубокий список Просто обновите git, см.:системный администратор Чен Инкелу Dev.com/fatal-git-fa…

Ссылаться на

Установить gitlab-бегун Блог об автоматическом развертывании Gitlab установить пряжу обновить git