предисловие
Автоматическое развертывание означает, что код автоматически развертывается на сервере после объединения в ветку, что может значительно повысить эффективность разработки🚀, а также соответствует гибкой разработке.
Благодаря этой статье вы можете узнать, как настроить автоматическое развертывание, а запись о наступлении на яму прикреплена в конце статьи. Надеюсь, вы сможете избежать обходных путей. Если вы столкнулись с ошибкой, вы можете сначала проверить, есть ли актуальные решения в записи о наступлении на яму ниже.
концепция
Во-первых, примерно понять следующие два понятия:
gitlab-runner: это носитель gitlab-ci (непрерывная интеграция), используемый для выполнения .gitlab-ci.yml и возврата результата в gitlab, gitlab-runner должен связывать проекты с токенами, которые могут быть связаны с несколькими или один проект
.gitlab-ci.yml: файл, помещенный в корневой каталог проекта, после отправки gitlab проанализирует этот файл и выполнит его с помощью gitlab-runner.
обработать
Процесс создания автоматического развертывания на самом деле очень прост.
- Установите gitlab-runner на сервер и привяжите репозиторий.
- Реализовать вход без пароля на сервер, на котором развернут проект, и обновить файлы после сборки.
На самом деле это очень просто сказать, но при этом вы можете столкнуться со многими ямами, и вы можете эффективно использовать поисковые системы, чтобы устранять их одну за другой! К статье приложу запись о наступлении на яму
выполнить
Сначала инициализируйте проект небрежно, принимая его на 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
- установить пряжу Ссылаться на:Правила LiSlave.com/post/how-to…
Реализовать вход без пароля
При установке 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
На данный момент автоматическое развертывание было успешно построено, измените код, нажмите, чтобы просмотреть результаты.
Побить пит-рекорд
- Загрузка установочного пакета 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/
- Ошибка при установке 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
- Ошибка на этапе установки git fetch-pack: ожидаемый неглубокий список Просто обновите git, см.:системный администратор Чен Инкелу Dev.com/fatal-git-fa…
Ссылаться на
Установить gitlab-бегун Блог об автоматическом развертывании Gitlab установить пряжу обновить git