Syncd - 開源自動化部署工具

640?wx_fmt=png

官網地址:https://gitee.com/dreamans/syncd/issues

syncd是一款開源的代碼部署工具,它具有簡單、高效、易用等特點,可以提高團隊的工作效率.

目前只支持類Linux系統.

特性

  • Go語言開發,編譯簡單、運行高效

  • Web界面訪問,交互友好

  • 靈活的角色權限配置

  • 支持Git倉庫

  • 分支、tag上線

  • 部署hook支持

  • 完善的上線工作流

  • 郵件通知機制

原理

640?wx_fmt=png

Git

Syncd服務通過git-ssh(或password)方式從倉庫中拉取指定tag(分支)代碼.

構建

運行配置好的構建腳本, 編譯成可上線的軟件包

在這一環節中,可運行單元測試 (例如?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?命令分發軟件包到各機房生產服務器的臨時目錄, 遠程執行 pre-deploy 配置的命令, 執行完畢后解壓縮軟件包到目標目錄,然后執行?post-deploy?命令

分發上線過程是串行執行,并且任意步驟執行失敗整個上線單會終止上線并將狀態置為上線失敗,需要點擊?再次上線?重試.

將來會支持同一集群服務器并行執行, 集群之間串行發布的特性

SSH信任

生產服務器與部署服務器之間通過ssh-key建立信任

配置方法請參考?秘鑰配置?章節

安裝

準備工作

  • Go

推薦Go1.10以上版本, 用來編譯源代碼

  • Git

請保持部署Syncd服務器的git版本為最新(>=2.20)

  • Nginx

Web服務依賴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

安裝

  • 二進制包安裝

二進制包下載地址:https://github.com/dreamans/syncd/releases

  • 源碼編譯安裝

    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:??????????????syncdVersion:??????????????1.0.0Config?Loaded:????????./etc/syncd.iniLog:??????????????????stdoutDatabase:?????????????127.0.0.1Mail?Enable:??????????0HTTP?Service:?????????:8868Start?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服務

修改hosts

若域名未解析,可修改hosts進行臨時解析

sudo?vim?/etc/hosts127.0.0.1??deploy.syncd.cc;

安裝完成

打開瀏覽器,訪問?http://deploy.syncd.cc

初始賬號:

用戶名:?syncd郵箱:?syncd@syncd.cc密碼:?syncd.cc

!!!登錄后請盡快修改密碼

使用

系統使用流程圖

640?wx_fmt=png

使用截圖

640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png
640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png
640?wx_fmt=png

幫助

遇到問題請提?issue:https://gitee.com/dreamans/syncd/issues

LICENSE

本項目采用 MIT 開源授權許可證,完整的授權說明已放置在 LICENSE 文件中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式C語言基礎(二)

指針是分類型的: 指針根據類型不同,偏移值也不同。指針和數組,如何讓指針指向數組? ①用數組名 :int array[10],int* p,parray ②用第一個元素的地址:int array[10],int* p,p&array[0] 注意&#xff1a…

Linus中幫助命令man

使用方法:man 可以查看想要使用命令的詳細使用方法 man 命令

大牛是怎么思考設計SQL優化方案的?

作者:慘綠少年https://www.cnblogs.com/clsn/p/8214048.html在進行MySQL的優化之前,必須要了解的就是MySQL的查詢過程,很多查詢優化工作實際上就是遵循一些原則,讓MySQL的優化器能夠按照預想的合理方式運行而已。圖-MySQL查詢過程…

嵌入式C語言基礎(三)

字符串的定義方式及輸出&#xff1a; #include <stdio.h> #include <stdlib.h> void strPrint(char* data,int size) {int i;for(i0;i<size;i){printf("函數打印數組&#xff1a;%c\n",*data);}putchar(\n); } int main() {int i0;int a[3]{1,2,3};c…

web.config配置數據庫連接

第一種&#xff1a;獲取連接字符串 首先要定義命名空間 system.configuration 1. string connstr string constr ConfigurationManager.AppSettings["connstring"]; web.config文件:加在<appsettings>和</appsettings> 之間 <appsettings> <a…

用 Git 和 Github 提高效率的 10 個技巧!

Git 和 GitHub 都是非常強大的工具。即使你已經使用他們很長時間&#xff0c;你也很有可能不知道每個細節。我整理了 Git 和 GitHub 可能提高日常效率的10個常用技巧。GitHub1、快捷鍵: t 和 w在你的源碼瀏覽頁面&#xff0c;按 t 可以快速進入模糊文件名搜索模式&#xff1a;在…

docker顯示鏡像的摘要信息

顯示鏡像的摘要信息 docker images --digests

嵌入式C語言基礎(四)

為什么要用結構體&#xff1f; 在實際問題中&#xff0c;一組數據往往具有不同的數據類型。例如&#xff0c;在學生登記表中&#xff0c;姓名應為字符型;學號可為整型或字符型&#xff1b;年齡應為整型&#xff1b;性別應為字符型&#xff1b;成績可為整型或實型。顯然不能用一…

命令行分析java線程CPU占用

1.使用top命令找出占用cpu最高的JAVA進程pid號 2. 找出占用cpu最高的線程&#xff1a; top -Hp pid -d 1 -n 1 3. 打印占CPU最高JAVA進程pid的堆棧信息 jstack pid > /tmp/stacktrace.log 4. 把占CPU最高線程號碼換算成16進制到stacktrace.log中尋找相應線程16進制值找到…

docker搜索鏡像

docker search 要下載的 OFFICIAL 為ok的表示是官方鏡像

C#操作HttpClient工具類庫

using System; using System.Collections.Generic; using System.Net.Http; using System.Windows.Forms; using System.Configuration; using System.IO; using Newtonsoft.Json; namespace Dcflow { public class HttpHelper { //獲取Configuration對象 public static string…

docker從倉庫找鏡像

docker search -s 數量 要下載的 數量表示倉庫start數

bzoj 1911: [Apio2010]特別行動隊 2011-12-26

1911: [Apio2010]特別行動隊 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 892 Solved: 359[Submit][Status][Discuss] DescriptionInputOutputSample Input4 -1 10 -20 2 2 3 4 Sample Output9HINT Source _________________________________________ 很簡單的動規方程&a…

嵌入式C語言基礎鏈表

什么是鏈表&#xff1f; 鏈表其實就是一種數據結構&#xff0c;所謂的數據結構就是數據存放的思想。 數組、鏈表優缺點&#xff1a; 增加一個元素或者刪除一個元素都很難&#xff0c;因為地址是連續的&#xff0c;刪除一個元素可能會挪動多個元素&#xff0c;不靈活。但是對于鏈…

docker pull 從倉庫拉取鏡像

docker pull 要拉取的鏡像名 等價于 docker pull 要拉取的鏡像名:lastest 拉取固定的鏡像&#xff1a;docker pull 要拉取的鏡像名:版本號 省略lastest表設計就是拉取的最新的

理解js中的原型鏈,prototype與__proto__的關系

說到prototype&#xff0c;就不得不先說下new的過程。 我們先看看這樣一段代碼&#xff1a; 1<script type"text/javascript">2 var Person function () { };3 var p new Person();4</script>很簡單的一段代碼&#xff0c;我們來看看這個new究竟做了什…

C#抓取網頁HTML內容

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace Web { /// <summary> /// 公共方法類 /// </summary> p…

項目一感應垃圾桶(Wemos)

硬件材料&#xff1a; Wemos D1、SG90舵機、HC-SR04、杜邦線若干、蜂鳴器3.3V&#xff08;可有可無&#xff09; 軟件材料&#xff1a; arduino IDE編譯器、USB轉串口驅動 Wemos D1&#xff1a; 特性&#xff1a; 基于ESP-8266EX及arduino做的一個融合arduino兼容&#xff0…

docker刪除本地所有鏡像

docker rmi -f ${docker images -qa}