持續集成(Continuous Integration),簡稱CI,是指開發者在代碼的開發過程當中,能夠頻繁的將代碼部署集成到主幹,並進程自動化測試。java
持續交付(Continuous Delivery),指的是在持續集成的環境基礎之上,將代碼部署到預生產環境node
持續部署(Continuous Deployment),是指在持續交付的基礎上,把部署到生產環境的過程自動化,持續部署和持續交付的區別就是最終部署到生產環境是自動化的。nginx
PS:目前大部分公司都是作到持續交付,作到持續部署的還不多,由於上生產環境,還要有不少步驟須要作。git
1.代碼獲取(直接了拉取最新代碼,使用tag標籤獲取某個版本代碼)
2.編譯 (可選)
3.配置文件放進去
4.打包
5.scp到目標服務器
6.將目標服務器移除集羣
7.解壓並放置到Webroot
8.Scp 差別文件
9.重啓 (可選)
10.測試
11.加入集羣web
GitLab是一個利用
Ruby on Rails
開發的開源應用程序,實現一個自託管的Git項目倉庫,可經過Web界面進行訪問公開的或者私人項目。
GitLab擁有與Github相似的功能,可以瀏覽源代碼,管理缺陷和註釋。能夠管理團隊對倉庫的訪問,它很是易於瀏覽提交過的版本並提供一個文件歷史庫。它還提供一個代碼片斷收集功能能夠輕鬆實現代碼複用,便於往後有須要的時候進行查找redis
#環境準備 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@node1 ~]# uname -r 3.10.0-693.el7.x86_64 #更換阿里yum源 [root@node1 yum.repos.d]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@node1 ~]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@node1 ~]# yum update -y #更換gitlabyum源爲清華大學 [root@node1 ~]# vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 repo_gpgcheck=0 gpgcheck=0 enabled=1 gpgkey=https://packages.gitlab.com/gpg.key [root@node1 ~]# yum makecache [root@node1 ~ ]# yum install -y gitlab-ce #安裝依賴 [root@node1 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix -y #啓動postfix [root@node1 ~]# systemctl start postfix #安裝gitlab-ce 版本爲gitlab-ce.x86_64 0:10.6.4-ce.0.el7 [root@node1 ~]# yum install -y gitlab-ce #配置並啓動gitlab 比較久,須要耐心等待一下,在此以前須要保證80端口不被佔用 [root@node1 ~]# gitlab-ctl reconfigure #等待完成,看到以下結果,說明配置成功 Running handlers: Running handlers complete Chef Client finished, 387/552 resources updated in 01 minutes 55 seconds gitlab Reconfigured! #查看啓動狀態 所有爲run說明正常啓動 [root@node1 ~]# gitlab-ctl status run: gitaly: (pid 15333) 182s; run: log: (pid 14995) 225s run: gitlab-monitor: (pid 15350) 181s; run: log: (pid 15153) 213s run: gitlab-workhorse: (pid 15318) 182s; run: log: (pid 14876) 239s run: logrotate: (pid 14928) 231s; run: log: (pid 14927) 231s run: nginx: (pid 14895) 237s; run: log: (pid 14894) 237s run: node-exporter: (pid 15132) 219s; run: log: (pid 15131) 219s run: postgres-exporter: (pid 15387) 180s; run: log: (pid 15240) 199s run: postgresql: (pid 14634) 273s; run: log: (pid 14633) 273s run: prometheus: (pid 15370) 181s; run: log: (pid 15191) 205s run: redis: (pid 14574) 279s; run: log: (pid 14573) 279s run: redis-exporter: (pid 15175) 207s; run: log: (pid 15174) 207s run: sidekiq: (pid 14858) 245s; run: log: (pid 14857) 245s run: unicorn: (pid 14820) 247s; run: log: (pid 14819) 247s
至此最基本的gitlab已經正常運行起來了!sql
2.3.1 此時咱們在瀏覽器中訪問http://192.168.66.129vim
Web頁面提示須要設置一個密碼(最少8位數)我這裏設置密碼爲:12345678瀏覽器
登陸系統,默認用戶名爲root服務器
點擊settings 把Sign-up enabled的鉤去掉便可
2.3.2 建立組,建立項目
進去管理區域,點擊New group
輸入相關信息,並選擇Private
相似上面的方法,建立一個項目,並選擇web組
2.3.3 在客戶端測試,並配置ssh免祕
[root@node1 ~]# useradd www [root@node1 ~]# passwd www 更改用戶 www 的密碼 。 新的 密碼: 無效的密碼: 密碼少於 8 個字符 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。 [root@node1 ~]# su www [www@node1 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/www/.ssh/id_rsa): Created directory '/home/www/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/www/.ssh/id_rsa. Your public key has been saved in /home/www/.ssh/id_rsa.pub. The key fingerprint is: SHA256:J5Ja/RLAE4KPv70zz1YMmrz7r5ojLPfchGThH9hBdI8 yuanjy@juweitu.com The key's randomart image is: +---[RSA 2048]----+ | .. ..o . | | . o o . o | | o = . E . | | . .. O.. | | . .OoSo. | | .=++ *o | | ..o..+.. | | . =.*=.. | | o oB@*o. | +----[SHA256]-----+ [www@node1 root]$ cd [www@node1 ~]$ cd .ssh/ [www@node1 .ssh]$ ll 總用量 8 -rw------- 1 www www 1679 4月 21 16:40 id_rsa -rw-r--r-- 1 www www 400 4月 21 16:40 id_rsa.pub [www@node1 .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGS5bnpPvBPLkh/j3OJ8j3Z0dkxgUgLMT2ebeL0U/c7cQ6xGRgKajfLLb2xp+U4XCgU6kKBncXvFWh4PY7/eBPpVbpstJmtf/13gAYB/skHen+jl58k1JP4m/9W/aB6KW3PBRuWF9BA3ki0fHt624R2qSHoaveHiP2YK/9hsYhAizzdN3Y6JMCfSxZ7/FluLb+tXuASLuVQqyilxxZGkAjY0/15zntXyNTovAfseeRrmyAktvMgjK9ZfdGZp/nzS3LXclw2/QhAyT4mLL9FzLLWE2adYuBxj/42UrVZrc7bfkTMUllYvSq4Qkg0VS/8n5FLxEjAIKwPDTkbeTFVKan yuanjy@juweitu.com [www@node1 .ssh]$
上面建立了一個www用戶,並生產了祕鑰文件,在瀏覽器中點擊我的頭像,點擊settings進入設置,點擊SSH keys
輸入剛剛生成的公鑰,點擊Add key既可
在客戶端測試
[www@node1 ~]$ git clone git@gitlab.example.com:web/web-demo.git 正克隆到 'web-demo'... ssh: Could not resolve hostname gitlab.example.com: Name or service not known fatal: Could not read from remote repository. #PS 由於我這裏是虛擬機沒有配置相關域名,也沒有修改hosts,這裏就臨時把gitlab.example.com改爲IP既可,後面能夠修改配置文件 Please make sure you have the correct access rights and the repository exists. [www@node1 ~]$ git clone git@192.168.66.129:web/web-demo.git 正克隆到 'web-demo'... The authenticity of host '192.168.66.129 (192.168.66.129)' can't be established. ECDSA key fingerprint is SHA256:wJyF35WdLaQJxzWYaVgjv61ujKzHcTw1DpR789UPUQ8. ECDSA key fingerprint is MD5:3c:96:f6:ad:15:ba:73:fd:67:ac:54:52:84:4d:0a:b3. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.66.129' (ECDSA) to the list of known hosts. remote: Counting objects: 6, done. remote: Compressing objects: 100% (2/2), done. remote: Total 6 (delta 0), reused 0 (delta 0) 接收對象中: 100% (6/6), done. [www@node1 ~]$ ll 總用量 0 drwxrwxr-x 3 www www 35 4月 21 16:49 web-demo [www@node1 ~]$ cd web-demo/ [www@node1 web-demo]$ ll 總用量 4 -rw-rw-r-- 1 www www 44 4月 21 16:49 README.md [www@node1 web-demo]$ cat README.md 測試專用 測試 。。。。。。。。[www@node1 web-demo]$
至此Gitlab基本使用已經完成
Jenkins
只是一個平臺,真正運做的都是插件。這就是jenkins流行的緣由,由於jenkins什麼插件都有
Hudson
是Jenkins的前身,是基於Java開發的一種持續集成工具,用於監控程序重複的工做,Hudson後來被收購,成爲商業版。後來創始人又寫了一個jenkins
,jenkins在功能上遠遠超過hudson
Jenkins官網:https://jenkins.io/
Jenkins 是由java語言編寫,因此咱們這裏須要java環境,我事先已經安裝好了1.8.0_161
PS:由於gitlab中的unicorn組件會監聽8080端口,而Jenkins默認也是監聽8080,這裏咱們採用node2來部署jenkins
#jenkins本身提供了yum源,這裏採用yum方式,也能夠採用源碼編譯的方式 [root@node2 ~]# cd /etc/yum.repos.d/ [root@node2 yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo [root@node2 ~]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key [root@node2 ~]# yum install -y jenkins [root@node2 ~]# systemctl start jenkins
在瀏覽器端訪問http://192.168.66.130:8080,看到以下界面就說明啓動成功
查看輸入密碼,登陸進入,會看到以下頁面
填寫要建立的管理用戶這裏使用Admin 密碼爲12345678,點擊保存並完成便可。
至此基本的Jenkins已經正常的運行了
由於咱們要和gitlab結合,因此這裏須要安裝gitlab的插件
在系統管理中,進入插件管理,搜索gitlab
按實際狀況,選擇須要的插件,點擊下載待重啓後安裝既可
點擊建立一個新任務,輸入任務名字,選擇自由風格,點擊肯定既可
在源碼管理添加源碼路徑,點擊Add,添加認證,這裏是git,若是是svn,須要安裝svn相關插件
在Gitlab上建立deploy keys
[root@node2 yum.repos.d]# useradd www [root@node2 yum.repos.d]# cd [root@node2 ~]# passwd www 更改用戶 www 的密碼 。 新的 密碼: 無效的密碼: 密碼未經過字典檢查 - 過於簡單化/系統化 從新輸入新的 密碼: 抱歉,密碼不匹配。 新的 密碼: 無效的密碼: 密碼未經過字典檢查 - 過於簡單化/系統化 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。 [root@node2 ~]# su www [www@node2 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/www/.ssh/id_rsa): Created directory '/home/www/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/www/.ssh/id_rsa. Your public key has been saved in /home/www/.ssh/id_rsa.pub. The key fingerprint is: SHA256:CSt+dEEFmyv40qJ5d1e/NbCHbn9fgEYLaf2FhKHuptk yuanjy@juweitu.com The key's randomart image is: +---[RSA 2048]----+ | oo. .o. | | . o +.. . | | . + = o . .| | . o * o + . | | o + S . +.o | | . = o . .. +. | | + + o. + oo| | o.+. .=. ..o.+| | o. . .o.E ..oo+| +----[SHA256]-----+ [www@node2 root]$ cd [www@node2 ~]$ ll 總用量 0 [www@node2 ~]$ cd .ssh/ [www@node2 .ssh]$ ll 總用量 8 -rw------- 1 www www 1675 4月 21 23:42 id_rsa -rw-r--r-- 1 www www 400 4月 21 23:42 id_rsa.pub [www@node2 .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZZE5beieQdGcCQLkHjeh/4TJXwGnybLc7A0xVfTSQszjq7jx/m6jjE4pOHMQX/yUqb9Pg+NdvsJynpV1ZSNr/ojm18vR4S7sj+6nEV0kIP0IWOLeqSlHKvr9BFggkvcAjSTzsSc31P1Wn8rs6z9xag8WWK759vSz1BdG85fW5xgDdlu8ynwGulF6roOa2pAKhCCk2ibRvwYbpElVGcFA6taf7LOnR63842JsYbeC+a8XTcZmWFWVq8JYfeDcoHZ/61gC9lmiIlsVlEGifAJaM6KHQxkViQtEpWzgfRvKEnBmXigiCUvbJPBNSPCbzSPVYK+Yv1llBsGJQfp/74glD yuanjy@juweitu.com [www@node2 .ssh]$
點擊Create既可,填寫私鑰文件,點擊Add既可
點擊保存既可,點擊當即構建