互聯網_團隊協做

VCS

Git概覽

VCS:java

集中式VCS: 有集中的版本管理服務器,具有文件版本管理和分支管理能力,集成效率有明顯地提升,客戶端必須和服務器相連。
分佈式VCS:服務端和客戶端都有完整的版本庫,脫離服務端,客戶端照樣能夠管理版本。查看歷史和版本比較等操做,都不須要訪問服務器,比集中式更能提升版本管理效率。

Git :linux

一個免費開源的分佈式版本控制系統,linux系統發明者Linus Torvalds 爲幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。開源,容易備份,支持離線操做。

Git的工做流程:git

先克隆遠程資源到本地目錄,本地倉庫添加或修改文件,使用git add 添加修改的文件暫存到緩衝區
在添加以後,可使用git commit添加到當前的工做區,git push將本地的修改推送到遠程的git服務器。

Git的環境搭建:程序員

https://git-scm.com/ 官網下載安裝

Git基本操做:github

創建倉庫:git init   添加文件到倉庫: git add 123.txt    把文件提交到倉庫 git commit -m "add a file"
倉庫狀態:git status  查看修改的差別:git diff  查看提交日誌:git log  回退到上一版本:git reset --hard HEAD^    刪除文件:git rm test.txt  克隆到本地:git clone git@github.com:xxxx/test.git
本地的代碼提交到服務器:git push origin master

新建項目web

master :  默認開發分支; origin :  默認遠程版本庫
#初始化操做
    $ git config -global user.name <name>  #設置提交者名字
    $ git config -global user.email <email>  #設置提交者郵箱
    $ git config -global core.editor <editor>  #設置默認文本編輯器
    $ git config -global merge.tool <tool>  #設置解決合併衝突時差別分析工具
    $ git config -list  #檢查已有的配置信息
#建立新版本庫
    $ git clone <url>  #克隆遠程版本庫
    $ git init  #初始化本地版本庫
#修改和提交
    $ git add .  #添加全部改動過的文件
    $ git add <file>  #添加指定的文件
    $ git mv <old> <new> #文件重命名
    $ git rm <file>  #刪除文件
    $ git rm -cached <file>  #中止跟蹤文件但不刪除
    $ git commit -m <file> #提交指定文件
    $ git commit -m 「commit message」  #提交全部更新過的文件
    $ git commit -amend  #修改最後一次提交
    $ git commit -C HEAD -a -amend  #增補提交(不會產生新的提交歷史紀錄)
#查看提交歷史
    $ git log  #查看提交歷史   
    $ git log -p <file>  #查看指定文件的提交歷史
    $ git blame <file>  #以列表方式查看指定文件的提交歷史
    $ gitk  #查看當前分支歷史紀錄
    $ gitk <branch> #查看某分支歷史紀錄
    $ gitk --all  #查看全部分支歷史紀錄
    $ git branch -v  #每一個分支最後的提交
    $ git status  #查看當前狀態
    $ git diff  #查看變動內容
#撤消操做
    $ git reset -hard HEAD  #撤消工做目錄中全部未提交文件的修改內容
    $ git checkout HEAD <file1> <file2>  #撤消指定的未提交文件的修改內容
    $ git checkout HEAD. #撤消全部文件
    $ git revert <commit>  #撤消指定的提交
#分支與標籤
    $ git branch  #顯示全部本地分支
    $ git checkout <branch/tagname>  #切換到指定分支或標籤
    $ git branch <new-branch>  #建立新分支
    $ git branch -d <branch>  #刪除本地分支
    $ git tag  #列出全部本地標籤
    $ git tag <tagname>  #基於最新提交建立標籤
    $ git tag -d <tagname>  #刪除標籤
#合併與衍合
    $ git merge <branch>  #合併指定分支到當前分支
    $ git rebase <branch>  #衍合指定分支到當前分支
#遠程操做
    $ git remote -v  #查看遠程版本庫信息
    $ git remote show <remote>  #查看指定遠程版本庫信息
    $ git remote add <remote> <url>  #添加遠程版本庫
    $ git fetch <remote>  #從遠程庫獲取代碼
    $ git pull <remote> <branch>  #下載代碼及快速合併
    $ git push <remote> <branch>  #上傳代碼及快速合併
    $ git push <remote> : <branch>/<tagname>  #刪除遠程分支或標籤
    $ git push -tags  #上傳全部標籤

Gitlab

什麼是Gitlab?
GitLab由烏克蘭程序員DmitriyZaporozhets和ValerySizov開發,使用Ruby語言寫成。使用 MIT 許可證的基於網絡的 Git 倉庫管理工具開源項目,且具備 wiki 和 issue 跟蹤功能,使用 Git 做爲代碼管理工具,並在此基礎上搭建起來的 web 服務。
GitLab與GitHub的區別:
(1)GitLab分佈式在線代碼倉庫託管軟件,分爲社區版和企業收費版,都須要企業服務器安裝;
(2)GitHub分佈式在線代碼託管倉庫,我的版可直接在線免費試用,企業版本收費且須要服務器安裝。
GitLab主要服務構成:
(1)Nginx 靜態web服務器
(2)GitLab-workhorse 輕量級的反響代理服務器
(3)GitLab-shell 用於處理 Git 命令和修改 authorized keys 列表
(4)Logrorate 日誌文件管理工具
(5)Postgresql 數據庫
(6)Redis 緩存服務器
GitLab的優點及應用場景:
(1)開源免費,適合中小型公司將代碼放置在公司內網服務器上
(2)差別化的版本管理,離線同步以及強大的分支管理
(3)便捷的GUI操做界面以及強大的帳戶管理功能
(4)集成度很高,可以集成絕大多數的開發工具(如,jira等)
(5)支持內置HA,保證在高併發下仍舊實現高可用性

部署

GitLab工做流程

1.  建立並克隆項目
2.  建立項目某 Feature 分支(對應的就是些小需求)
3.  編寫代碼並提交至該分支
4.  推送該項目分支至遠程 GitLab 服務器
5.  進行代碼檢查並提交 Master 主分支合併申請
6.  項目領導審查代碼並確認合併申請
GitLab安裝配置

 通常的企業級的 GitLab 是部署在內網環境的,爲了不在訪問時報錯的尷尬,得作一些前期的準備工做。
(1):關閉 firewalld 防火牆sql

# 臨時關閉防火牆,也就是說下次進入系統後防火牆仍是會本身開啓的
sudo systemctl stop firewalld
# 永久關閉防火牆,開機不會自啓
sudo systemctl disable firewalld
# 防火牆開機自啓動
sudo systemctl enable firewalld
# 查看防火牆狀態
sudo systemctl status firewalld

(2):關閉 SELINUXshell

# 我用的騰訊雲ubuntu是沒有安裝這個子系統的,若是須要這個子系統的安裝一下便可
sudo apt-get install selinux-utils
# 臨時關閉SELINUX
setenforce 0
# 臨時打開SELINUX
setenforce 1
# 查看SELINUX的狀態
getenforce
# 開機關閉SELINUX,編輯/etc/selinux/config文件,將SELINUX的值設置爲disabled。下次開機SELinux就不會啓動了。
# setenforce 1也沒法打開必修修改配置文件
# 重啓系統
reboot

(3):安裝ssh數據庫

#若是使用雲服務器的話,通常都會有ssh。若是沒有的話,就須要咱們本身手動安裝。
# 更新系統軟件
sudo apt-get update
# 安裝ssh服務
sudo apt-get install openssh-server
# 啓動ssh服務
sudo /etc/init.d/ssh start
# 重啓ssh服務
sudo /etc/init.d/ssh restart
# 關閉ssh服務
sudo /etc/init.d/ssh stop
# 查看進程,看ssh服務是否啓動
ps -e | grep sshd

# 配置使得root用戶能夠遠程登陸
sudo vi /etc/ssh/sshd_config
# 在文件中添加 PermitRootLogin yes 保存

(4):安裝Postfix郵件服務ubuntu

# 安裝postfix服務
sudo apt-get install postfix
# 啓動postfix服務
sudo systemctl start postfix
# 重啓postfix服務
sudo systemctl restart postfix
# 關閉postfix服務
sudo systemctl stop postfix
# 開機自啓動postfix服務
sudo systemctl enable postfix

(5):安裝 ca-certificates

#生成證書使用的
sudo apt-get install ca-certificates

(6)安裝GitLab

# 添加GitLab包服務並安裝包
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

# 安裝社區版gitlab-ce
sudo apt-get install gitlab-ce

# 配置GitLab,將將external_url地址改成服務器的地址
sudo vim /etc/gitlab/gitlab.rb

# 更新配置
# 更新配置報錯(因爲服務器的配置帶不動o(╥﹏╥)o)https://idce.com/document/VnmQ
sudo gitlab-ctl reconfigure

# 啓動、中止、查看狀態、重啓gitlab服務
sudo gitlab-ctl start/stop/status/restart

(7)GitLab配置證書

# 證書建立於配置加載

# Nginx SSL代理服務器配置

# 初始化GitLab相關服務並完成安裝

Ansible部署工具

# 爲Ubuntu獲取Ansible的最佳方法是將項目的PPA(我的包存檔)添加到系統中
sudo apt-add-repository ppa:ansible/ansible

# 刷新系統的包索引,以便它知道PPA中可用的包
sudo apt-get update
sudo apt-get install ansible

# 查看Ansible是否安裝成功
ansible --version

Jenkins

概覽

持續集成/CI:
是一種軟件開發實踐,主要做用是實現一個完整的自動構建過程,包括自動編譯、分發、部署和測試。
強調開發人員提交新代碼後,當即進行構建和單元測試,根據測試結果來判斷新代碼和原代碼是否能正確的集成在一塊兒,根據判斷結果進行代碼優化。
持續集成的意義:
做爲開發或者測試想要更好的構建本身的自動化環境,完成自動打包、自動部署、自動化測試,最大的優勢就是減小了重複的工做,減小了人力成本和可能出現的錯誤.
在目前的互聯網公司應用極爲普遍。對於高頻的代碼集成,每次集成都經過版本的每日構建(包括編譯,發佈,部署,自動化測試)來驗證,從而儘快地暴露軟件缺陷。
CI三大組件=持續交付:
版本控制系統:GitHub、GitLab
持續集成工具:Jenkins
自動化部署工具(替代咱們在那費勁的寫腳本):Ansible、Saltstack、Chef
什麼是持續交付/CD
在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境(類生產環境)中。完成單元測試後,能夠把代碼部署到鏈接數據庫的 Staging環境,在環境中進行更多的測試,待代碼沒問題了能夠手動部署到生產環境。
注:軟件應用開發的經典模型對應的環境:Development開發環境、Integration集成環境、testing環境、QA驗證、Staging預演環境、production環境.
什麼是Jenkins
一個軟件開源項目,是基於Java的開發的一款持續集成工具,起源Hudson(Hudson是商用的),主要用於持續、自動的構建/測試軟件項目、監控外部任務的運行。
Jenkins特色
1.  主流的運維開發平臺,兼容全部主流的開發環境
2.  插件可與海量業內主流開發工具實現集成
3.  配置單位與日誌管理,使運維與開發人員能協同工做
4.  權限管理劃分不一樣角色
5.  強大的負載均衡功能,保證項目的可靠性
Jenkins的配置

官方:文檔

在Win10配置
方式:一
前提:配置Java環境.
在官網點擊下載[Generic Java package (.war)文件.
啓動Jenkins命令,打開cmd至Jenkins安裝目錄下,運行命令 java -jar jenkins.war 
若是改變默認端口,則指定端口例如端口號1080:java -jar jenkins.war --httpPort=1080。
方式二:
將下載的war包文件部署到 server 容器如Tomact,而後啓動容器.
war包複製到Tomcat的webapps目錄下,配置JENKINS_HOME環境變量,變量值輸入Jenkins的安裝目錄
在瀏覽器輸入http://localhost:8080/jenkins
第一次須要解鎖,輸入密碼.
配置時,安裝插件:選擇推薦的插件進行安裝,下一步到建立用戶,而後保存,在配置實例時,選暫時不要(之後配置).肯定以後開始使用.
國內可能沒法順利安裝,需修改配置.
在服務器配置:
#Jenkins的依賴操做系統仍是以Ubuntu爲例
# Jenkins是基於Java開發
# 安裝配置Jenkins的依賴環境-Java環境,這裏的話建議用Java8
# 過高的版本會出現不兼容的狀況
sudo apt-get install openjdk-8-jdk
# 查看Java是否安裝成功
java

# 安裝配置Jenkins
# 將 jenkins 存儲庫密鑰添加到系統
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
# 將Debian包存儲庫地址附加到服務器的sources.list
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
# 更新本地軟件源
sudo apt-get update
# 安裝Jenkins
sudo apt-get install jenkins

# Jenkins的相關操做
# 啓動
sudo service jenkins start
# 中止運行
sudo service jenkins stop
# 重啓服務
sudo service jenkins restart
# 查看運行狀態
sudo service jenkins status

# 使用Jenkins
# jenkins啓動後的訪問地址:http://ip_address_or_domain_name:8080
# 訪問上面的地址會發現須要輸入初始密碼,查看獲取初始密碼
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkins Job模塊


Jenkins插件

2.png

相關文章
相關標籤/搜索