Syncd: инструмент автоматического развертывания с открытым исходным кодом, разработанный на языке Go.

Go

Syncd

Syncd — инструмент автоматического развертывания

syncd – это инструмент развертывания с открытым исходным кодом. Он прост, эффективен и удобен в использовании, что может повысить эффективность работы команды.

адрес проектаGithub.com/dream ans / SO ...

содержание

характеристика

  • Разработка языка Go, простая компиляция и эффективная работа
  • Доступ к веб-интерфейсу, дружелюбное общение
  • Гибкая конфигурация разрешений роли
  • Поддержка репозиториев Git.
  • Ветки и теги онлайн
  • Поддержка хуков развертывания
  • Идеальный онлайн-процесс
  • Механизм уведомления по почте

принцип

Git

Служба Syncd извлекает код указанного тега (ветки) из репозитория через git-ssh (или пароль)

Построить

Запустите настроенный скрипт сборки и скомпилируйте его в пакет, готовый к работе в сети.

На этом этапе вы можете запускать модульные тесты (например,go test php phpunit, загрузить зависимости (например,go: glide install php: composer install), скомпилируйте пакет (например,js: npm build go: go build xx.go java: javac xx.java c: cc xx.c) Ждать.

распределение

пройти черезscpКоманда распространяет пакет программного обеспечения во временный каталог производственного сервера в каждой компьютерной комнате, удаленно выполняет команду конфигурации перед развертыванием, распаковывает пакет программного обеспечения в целевой каталог после выполнения, а затем выполняет командуpost-deployЗаказ

Распространение и онлайн-процесс выполняются последовательно, и если какой-либо шаг не будет выполнен, весь онлайн-заказ будет прекращен, а статус будет установлен на онлайн-сбой, вам нужно нажатьснова онлайнПовторить попытку.

В будущем он будет поддерживать параллельное выполнение одного и того же кластерного сервера и функцию последовательной публикации между кластерами.

SSH доверие

Установите доверительные отношения между производственным сервером и сервером развертывания через ssh-ключ.

Пожалуйста, обратитесь к методу конфигурации秘钥配置глава

Установить

Готов к работе

  • Go

Go1.10 или выше рекомендуется для компиляции исходного кода

  • Nginx

Веб-сервис зависит от Nginx

  • MySQL

Система полагается на Mysql для хранения постоянных данных, рекомендуемая версияMysql 5.7

  • Linux + Bash

система будет использоватьgit, ssh, scpи другие команды, поэтому в настоящее время ее рекомендуется использовать только в Linux, и вам необходимо заранее установить или обновить последнюю версию этих команд.

  • ключевая конфигурация

Поскольку сервер развертывания (сервер, на котором находится служба Syncd) и рабочий сервер (целевая машина для развертывания кода) обмениваются данными по протоколу ssh, открытый ключ машины для развертывания (обычно здесь:~/.ssh/id_rsa.pub) добавляется в список доверия производственной машины (обычно здесь~/.ssh/authorized_keys)

быть пригодным для использованияssh-copy-idДобавьте команду или скопируйте вручную. Не забудьте проверить подключение после копирования.ssh {生产机用户名}@{生产机地址}

Наконец, рекомендуется добавить следующую конфигурацию в конфигурацию ssh сервера развертывания./etc/ssh/ssh_config, закройте приглашение на отображение дайджеста открытого ключа, чтобы предотвратить сбой запуска фонового сценария.

Host *
    StrictHostKeyChecking no

Обратите внимание: права доступа к каталогу ssh должны быть установлены в соответствии с этим, иначе возникнет ситуация, когда вы не сможете войти в систему без пароля.

~/.ssh  0700
~/.ssh/authorized_keys 0600

Установить

  • выполните следующую команду
curl https://raw.githubusercontent.com/dreamans/syncd/master/install.sh |bash

Если генерируется по текущему путиsyncd-deployилиsyncd-deploy-xxxкаталог указывает, что установка прошла успешно

Сгенерированоsyncd-deployКаталог можно скопировать или переместить куда угодно, но не пытайтесь скопировать этот каталог для запуска на другом сервере, это приведет к непредсказуемым результатам.

  • зависимость от базы данных

тебе надоgithub.com/dreamans/syncd/syncd.sqlСтруктура таблицы данных и импорт данных в базу данных MySQL

  • Изменить файл конфигурации

Исправлятьsyncd-deploy/etc/syncd.iniСоответствующая информация о конфигурации в

  • запустить службу
cd syncd-deploy

➜  syncd-deploy ./bin/syncd -c ./etc/syncd.ini
                                          __
   _____   __  __   ____     _____   ____/ /
  / ___/  / / / /  / __ \   / ___/  / __  /
 (__  )  / /_/ /  / / / /  / /__   / /_/ /
/____/   \__, /  /_/ /_/   \___/   \__,_/
        /____/

Service:              syncd
Version:              1.0.0
Config Loaded:        ./etc/syncd.ini
Log:                  stdout
Database:             127.0.0.1
Mail Enable:          0
HTTP Service:         :8868
Start Running...

  • Добавить конфигурацию Nginx
upstream syncdServer {
    server 127.0.0.1:8868 weight=1;
}
server {
    listen       80;
    server_name  deploy.syncd.cc; # 此处替换成你的真实域名
    access_log   logs/deploy.syncd.cc.log;

    location / {
        try_files $uri $uri/ /index.html;
        root /path/syncd-deploy/public; # 此处/path请替换成真实路径
        index index.html index.htm;
    }

    location ^~ /api/ {
        proxy_pass          http://syncdServer;
        proxy_set_header    X-Forwarded-Host $host:$server_port;
        proxy_set_header    X-Real-IP     $remote_addr;
        proxy_set_header    Origin        $host:$server_port;
        proxy_set_header    Referer       $host:$server_port;
    }
}

Перезапустите службу nginx.

Изменить хосты

Если доменное имя не разрешено, вы можете изменить хосты для временного разрешения.

sudo vim /etc/hosts

127.0.0.1  deploy.syncd.cc;

Установка завершена

Откройте браузер и посетитеhttp://deploy.syncd.cc

Начальный счет:

用户名: syncd
邮箱: syncd@syncd.cc
密码: syncd.cc

!!!Пожалуйста, измените свой пароль как можно скорее после входа в систему.

использовать

Блок-схема использования системы

Используйте скриншоты

部署
申请单列表
申请上线
服务器列表
用户编辑
角色权限编辑
项目信息编辑

помощь

Если у вас есть какие-либо проблемы, пожалуйста, спроситеissue

Или добавьте WeChat в группу обсуждения

Разрешить

Этот проект использует лицензию MIT с открытым исходным кодом, и полные инструкции по лицензии помещены в файл LICENSE.