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由烏克蘭程序員DmitriyZaporozhets和ValerySizov開發,使用Ruby語言寫成。使用 MIT 許可證的基於網絡的 Git 倉庫管理工具開源項目,且具備 wiki 和 issue 跟蹤功能,使用 Git 做爲代碼管理工具,並在此基礎上搭建起來的 web 服務。
(1)GitLab分佈式在線代碼倉庫託管軟件,分爲社區版和企業收費版,都須要企業服務器安裝; (2)GitHub分佈式在線代碼託管倉庫,我的版可直接在線免費試用,企業版本收費且須要服務器安裝。
(1)Nginx 靜態web服務器 (2)GitLab-workhorse 輕量級的反響代理服務器 (3)GitLab-shell 用於處理 Git 命令和修改 authorized keys 列表 (4)Logrorate 日誌文件管理工具 (5)Postgresql 數據庫 (6)Redis 緩存服務器
(1)開源免費,適合中小型公司將代碼放置在公司內網服務器上 (2)差別化的版本管理,離線同步以及強大的分支管理 (3)便捷的GUI操做界面以及強大的帳戶管理功能 (4)集成度很高,可以集成絕大多數的開發工具(如,jira等) (5)支持內置HA,保證在高併發下仍舊實現高可用性
1. 建立並克隆項目 2. 建立項目某 Feature 分支(對應的就是些小需求) 3. 編寫代碼並提交至該分支 4. 推送該項目分支至遠程 GitLab 服務器 5. 進行代碼檢查並提交 Master 主分支合併申請 6. 項目領導審查代碼並確認合併申請
通常的企業級的 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相關服務並完成安裝
# 爲Ubuntu獲取Ansible的最佳方法是將項目的PPA(我的包存檔)添加到系統中 sudo apt-add-repository ppa:ansible/ansible # 刷新系統的包索引,以便它知道PPA中可用的包 sudo apt-get update sudo apt-get install ansible # 查看Ansible是否安裝成功 ansible --version
是一種軟件開發實踐,主要做用是實現一個完整的自動構建過程,包括自動編譯、分發、部署和測試。 強調開發人員提交新代碼後,當即進行構建和單元測試,根據測試結果來判斷新代碼和原代碼是否能正確的集成在一塊兒,根據判斷結果進行代碼優化。
做爲開發或者測試想要更好的構建本身的自動化環境,完成自動打包、自動部署、自動化測試,最大的優勢就是減小了重複的工做,減小了人力成本和可能出現的錯誤. 在目前的互聯網公司應用極爲普遍。對於高頻的代碼集成,每次集成都經過版本的每日構建(包括編譯,發佈,部署,自動化測試)來驗證,從而儘快地暴露軟件缺陷。
版本控制系統:GitHub、GitLab 持續集成工具:Jenkins 自動化部署工具(替代咱們在那費勁的寫腳本):Ansible、Saltstack、Chef
在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境(類生產環境)中。完成單元測試後,能夠把代碼部署到鏈接數據庫的 Staging環境,在環境中進行更多的測試,待代碼沒問題了能夠手動部署到生產環境。 注:軟件應用開發的經典模型對應的環境:Development開發環境、Integration集成環境、testing環境、QA驗證、Staging預演環境、production環境.
一個軟件開源項目,是基於Java的開發的一款持續集成工具,起源Hudson(Hudson是商用的),主要用於持續、自動的構建/測試軟件項目、監控外部任務的運行。
1. 主流的運維開發平臺,兼容全部主流的開發環境 2. 插件可與海量業內主流開發工具實現集成 3. 配置單位與日誌管理,使運維與開發人員能協同工做 4. 權限管理劃分不一樣角色 5. 強大的負載均衡功能,保證項目的可靠性
官方:文檔
方式:一 前提:配置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