1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dev-ops-gopub

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Этот проект больше не развивается, новые функции не добавляются. Мы будем рады видеть вклад PR от участников. Проект предназначен для опытных разработчиков с опытом работы с Vue и Go, не рекомендован новичкам, пожалуйста, выбирайте осторожно!

gopub (основан на фреймворках vue.js Element и golang Beego) — это корпоративная система публикации для операционной среды, основанная на сценариях управления. Конфигурация простая, функционал полный, интерфейс удобный, готов к использованию сразу после установки! Поддерживает управление версиями через Git и Jenkins, различные публикации веб-кода, а также однокнопочное выполнение операций публикации и откатывания кода для Golang, NodeJS, PHP, Python и Java.

Наша команда DevOps ранее использовала систему Walle Web для публикаций, за что хотели бы поблагодарить команду Walle за предоставленный отличный открытый проект. Внешний вид Walle хорош, поэтому внешний вид нашего открытого проекта gopub полностью скопирован с Walle, используя фреймворк vue.js Element.

Проект gopub работает уже более двух лет, выполнив более 37 000 стабильных развертываний в тестовых и рабочих окружениях. Он способен развернуть один проект на 100+ серверах за 110 секунд, а также передать 2 ГБ+ статических ресурсов CDN за 30 секунд. Статистика

Адрес кода

Демо адрес (Docker развертывание, логин admin, пароль 123456)
Публичное тестовое окружение: http://140.143.85.18:8192/## Используемые фреймворки

Функциональные особенности

  • Поддержка Docker & k8s: Docker образ размером всего 60МБ, файлы управления Kubernetes для одноклик развертывания.
  • Простое развертывание: двоичное развертывание Go, без необходимости установки среды выполнения.
  • Поддержка выпусков GitLab: конфигурация адреса Git каждого проекта, автоматическое получение ветвей/тэгов, выбор коммита и автоматическая загрузка кода.
  • Поддержка выпусков Jenkins: поддержка выбора истории сборки Jenkins для одноклик выпуска.
  • Выполнение команд SSH / передача файлов: использование встроенной библиотеки SSH Go для эффективного выполнения команд и передачи файлов.
  • Поддержка BitTorrent: передача больших файлов и множества файлов на множество машин с использованием протокола BitTorrent.
  • Поддержка многопроектного развертывания: поддержка параллельного развертывания нескольких проектов и задач, встроенная поддержка пула корутин grpool для параллельной работы с командами и передачей файлов.
  • Разделённый выпуск: конфигурация проекта поддерживает разделённый выпуск IP, автоматическое создание нескольких списков выпуска.
  • Полностью веб-интерфейс: веб-конфигурирование проекта, одноклик выпуск, быстрый одноклик откат.* Поддержка API: предоставление всех конфигураций и операций выпуска через API, что позволяет легко интегрироваться с другими системами Пример использования API.
  • Поддержка хуков деплоя: поддержка четырёх типов скриптов хуков — подготовительных задач до деплоя, задач после выгрузки кода, задач до обновления символьных ссылок и завершающих задач после окончательного деплоя. ## Быстрый запуск Docker
# Запуск контейнера с использованием образа из Docker Hub, подключение к внешней базе данных
sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192 --restart always -d lc13579443/gopub:latest
```# Запуск контейнера с использованием образа из Docker Hub, подключение к базе данных внутри Docker
sudo docker run --name gopub-mysql -h gopub-mysql -p 3306:3306 -v /data/gopub-mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 --restart always -d mysql:5.7.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

sudo docker run --name gopub --link gopub-mysql:gopub-mysql -e MYSQL_HOST=gopub-mysql -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192 --restart always -d lc13579443/gopub:latest 

Создание Docker-образа

# Для использования multi-stage (многопроцессной сборки) требуется версия Docker 17.05+
sudo docker build --network=host -t gopub .

sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192 --restart always -d gopub:latest 

Быстрая установка Kubernetes

# apiVersion: apps/v1 требует версию Kubernetes 1.9.0+
kubectl apply -f gopub-kubernetes.yml

Установка исходного кода

Окружение компиляции

  • golang >= 1.8+
  • nodejs >= 4.0.0 (требуется для доступа в интернет при установке зависимостей)

Клонирование проекта

# Клонирование проекта
git clone https://gitee.com/dev-ops/gopub.git

# Компиляция фронтенда, npm может работать медленнее, можно использовать cnpm

cd vue-gopub
npm install
npm run build

# Измените конфигурацию, файл конфигурации базы данных находится в src/conf/app.conf

# Компиляция, control должна иметь права выполнения, и измените путь установки go export GOROOT=/usr/local/go
./control build

# Выполнение инициализации базы данных
./control init

# Запуск сервиса, после успешного запуска можно получить доступ по адресу 127.0.0.1:8192, имя пользователя: admin, пароль: 123456
./control start
```# Остановка сервиса
./control stop

# Перезапуск сервиса
./control restart

Быстрое использование

Скачивание проекта пакета двоичного файла, не требуется установка окружения Go и Node.js

# Присвоение прав выполнения для control и src/gopub

# Выполнение инициализации базы данных
./control init

# Запуск сервиса, после успешного запуска можно получить доступ по адресу 127.0.0.1:8192, имя пользователя: admin, пароль: 123456
./control start
```# Остановка сервиса
./control stop

# Перезапуск сервиса
./control restart
# Установка системного сервиса
cp ./gopub.service /usr/lib/systemd/system/gopub.service
systemctl enable gopub.service
systemctl restart gopub.service

Настройка доверия SSH-ключей

Предварительные условия: SSH-ключи пользователя gopub (например root) должны быть добавлены в список доверенных ключей пользователя {remote_user} на целевой машине


# Добавление доверия к машине
su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server

# Необходим пароль от remote_user
# Для аутентификации без пароля требуется выполнение следующих условий на удалённой машине:
/home/{remote_user} 755
~/.ssh 700
~/.ssh/authorized_keys 644 или 600

Начало работы

1. Конфигурация проекта

Конфигурация проекта

  • Имя проекта: xxx.example.com (Имя проекта должно быть уникальным и соответствовать стандартам названий).

  • Окружение проекта: В настоящее время используются окружения pre-production и production.* Адрес: Поддерживает три способа публикации — gitlab, jenkins и file.

При использовании Git введите адрес репозитория в поле адреса. Для HTTPS используйте учетные данные в URL, для SSH убедитесь, что сервер с gopub имеет права доступа к репозиторию. Обычно создается публичный пользователь в gitlab, которому добавляются ключи gopub в раздел deploy-keys, чтобы обеспечить доступ ко всем проектам gitlab.

При использовании Jenkins введите адрес задачи Jenkins и учетные данные.

Хост-машина

  • Каталог для выгрузки кода: /data/www/xxx (Название должно быть уникальным)
  • Исключения при сборке: По умолчанию не заполнено, можно указать .git (tar-пакет игнорирует каталог .git) и другие файлы, которые следует исключить из пакета.

Целевая машина

  • Пользователь: www (Пользователь, который выполняет операции на целевой машине)
  • Web-root: /data/htdocs/shell_php7 (Каталог для публикации кода на целевой машине, является мягким символическим ссылкой)
  • Бэкап-каталог: /data/htdocs/backup/shell_php7 (Каталог для бэкапа кода, реальный каталог, *webroot является мягкой символьной ссылкой на этот каталог)
  • Число версий для хранения: 20 (Число исторических версий, которое будет храниться в бэкап-каталоге)
  • Список машин: один IP на строку (при копировании IP обратите внимание на специальные символы)

Расширенные задачи

Первые две задачи выполняются на управляемой машине, последующие задачи выполняются на целевых машинах.* Задача перед выгрузкой кода: зависит от ситуации (по умолчанию пустая)

  • Задача после выгрузки кода: если проект требует Composer, добавьте команду cd {WORKSPACE} && rm -rf composer.lock vendor && composer install --optimize-autoloader --no-dev -vvv --ignore-platform-reqs, иначе оставьте пустым
  • Задача после завершения синхронизации целевой машины: зависит от ситуации (по умолчанию пустая)
  • Задача после изменения мягкой символьной ссылки версии: зависит от ситуации (по умолчанию пустая)

2. Создание запроса на развертывание

Создание запроса на развертывание

  • GitLab запрос на развертывание Git конфигурация
  • Jenkins запрос на развертывание Jenkins конфигурация

3. Операция развертывания

Выбор запроса на развертывание Развертывание

Разработчики

  • Лин Чжоу
  • Гао Чжуанцзе
  • Цзинь Ян
  • Чжао Лянци
  • Чжан Цзюньфэн

План следующей версии

  • В разработке

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления (6)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dev-ops-gopub.git
git@api.gitlife.ru:oschina-mirror/dev-ops-gopub.git
oschina-mirror
dev-ops-gopub
dev-ops-gopub
master