A. 怎樣使用 MSBuild 自動編譯和發布 NET 網站
很多.NET 程序員開發的時候,每次都需要涉及到各個環境的部署問題,但是手工操作的話又容易出錯,而且非常麻煩,我們今來講解怎樣實現自動編譯和發布 .NET 網站。廢話不多講,先講講我的初步實現方案。
MSBuild 自動編譯和發布 NET 網站步驟:
准備工具:GIT版本控制(gitlab),Jenkins, msbuild
1、安裝git版本控制器,提交代碼。(svn好像也可以), 並生成ssh public key上傳到gitlab的ssh key中(個人配置/SSH KEY)。
2、安裝jenkins開源工具。
3、Jenkins安裝git plugin, Msbuild插件(Manager Jenkins/Manage Plugins)
4、配置Jenkins中的git(Manager Jenkins/Configure System)在git欄中輸入name和Path: git install path\cmd\git.exe
5、添加對應.NET framework version MSBuild
Name: .NET4.0
Path to MSBuild:
%system%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
6、建立.NET項目文件,並添加MSBuild文件
建立一個解決方案nonsuch.sln,裡麵包含一個website: nonesuch.web.
在解決方案根目錄建立一個xml文件,改名為: build.targets
B. git和github是什麼有什麼作用最用通俗的語言
Git(讀音為/gɪt/。)是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。Git 是Linus Torvalds為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。
GitHub是一個面向開源及私有軟體項目的託管平台,因為只支持git 作為唯一的版本庫格式進行託管,故名GitHub。分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。
GitHub於2008年4月10日正式上線,除了Git代碼倉庫託管及基本的 Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。
(2)git自動編譯功能擴展閱讀:
GitHub同時提供付費賬戶和免費賬戶。這兩種賬戶都可以創建公開或私有的代碼倉庫,但付費用戶支持更多功能。根據在2009年的Git用戶調查,GitHub是最流行的Git訪問站點。除了允許個人和組織創建和訪問保管中的代碼以外,它也提供了一些方便社會化共同軟體開發的功能,即一般人口中的社群功能,包括允許用戶追蹤其他用戶、軟體庫的動態,對軟體代碼的改動和bug提出評論等。
GitHub也提供了圖表功能,用於概觀顯示開發者們怎樣在代碼庫上工作以及軟體的開發活躍程度。
GitHub同時允許注冊用戶和非注冊用戶在網頁中瀏覽項目,也可以以ZIP格式打包下載。但是用戶必須注冊一個賬號然後才能進行討論、創建並編輯項目、參與他人的項目和代碼審查。
GitHub支持創建不限數量的公開倉庫,已付費用戶可以創建私有倉庫。2019年1月7日,GitHub宣布免費用戶也可以創建私有倉庫,私有倉庫數量不限但每個倉庫最多指定三個合作者。
C. gitspring代碼自動生成
簡單的代碼生成工具,主要是用來做代碼的自動化生成。根據各自的需求,可以修改裡面的源碼。
代碼是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。
GIT與CVS、SVN相比最大的不同,它是分布式版本控制系統,集中式可以理解為將版本的管理集中到了統一的位置,缺點就是對於中央倉庫依賴強,一旦中央倉庫出現問題,即不可以提交也不可以更新,無法進行版本控制,而GIT本地是有本地倉庫,及時遠程倉庫宕掉了,仍然都可以進行版本控制。但是我認為他們都會有單點問題,一旦遠程倉庫宕掉了,就無法獲取彼此最新的代碼。
D. 如何使用 Git 和 GitHub
github是一個基於git的代碼託管平台,付費用戶可以建私人倉庫,我們一般的免費用戶只能使用公共倉庫,也就是代碼要公開。對於一般人來說公共倉庫就已經足夠了,而且我們也沒多少代碼來管理,O(∩_∩)O~。步驟:
1.注冊賬戶以及創建倉庫
要想使用github第一步當然是注冊github賬號了。之後就可以創建倉庫了(免費用戶只能建公共倉庫),Create a New Repository,填好名稱後Create,之後會出現一些倉庫的配置信息,這也是一個git的簡單教程。
2.安裝客戶端msysgit
github是服務端,要想在自己電腦上使用git我們還需要一個git客戶端,我這里選用msysgit,這個只是提供了git的核心功能,而且是基於命令行的。如果想要圖形界面的話只要在msysgit的基礎上安裝TortoiseGit即可。
裝完msysgit後右鍵滑鼠會多出一些選項來,在本地倉庫里右鍵選擇Git Init Here,會多出來一個.git文件夾,這就表示本地git創建成功。右鍵Git Bash進入git命令行,為了把本地的倉庫傳到github,還需要配置ssh key。
3.配置Git
首先在本地創建ssh key;
$
ssh-keygen
-t rsa -C
"[email protected]"
後面的[email protected]改為你的郵箱,之後會要求確認路徑和輸入密碼,我們這使用默認的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開id_rsa.pub,復制裡面的key。
回到github,進入Account Settings,左邊選擇SSH Keys,Add SSH Key,title隨便填,粘貼key。為了驗證是否成功,在git bash下輸入:
$
ssh
-T [email protected]
如果是第一次的會提示是否continue,輸入yes就會看到:You』ve successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github。
接下來我們要做的就是把本地倉庫傳到github上去,在此之前還需要設置username和email,因為github每次commit都會記錄他們。
$ git config --global user.name
"your name"
$ git config --global user.email
"[email protected]"
進入要上傳的倉庫,右鍵git bash,添加遠程地址:
$ git remote add origin [email protected]:yourName/yourRepo.git
後面的yourName和yourRepo表示你再github的用戶名和剛才新建的倉庫,加完之後進入.git,打開config,這里會多出一個remote 「origin」內容,這就是剛才添加的遠程地址,也可以直接修改config來配置遠程地址。
4.提交、上傳
接下來在本地倉庫里添加一些文件,比如README,
$ git add README
$ git commit -m
"first commit"
上傳到github:
$ git push origin master
git push命令會將本地倉庫推送到遠程伺服器。
git pull命令則相反。
修改完代碼後,使用git status可以查看文件的差別,使用git add 添加要commit的文件,也可以用git add -i來智能添加文件。之後git commit提交本次修改,git push上傳到github。
5.gitignore文件
.gitignore顧名思義就是告訴git需要忽略的文件,這是一個很重要並且很實用的文件。一般我們寫完代碼後會執行編譯、調試等操作,這期間會產生很多中間文件和可執行文件,這些都不是代碼文件,是不需要git來管理的。我們在git status的時候會看到很多這樣的文件,如果用git add -A來添加的話會把他們都加進去,而手動一個個添加的話也太麻煩了。這時我們就需要.gitignore了。比如一般c#的項目我的.gitignore是這樣寫的:
bin
*.suo
obj
bin和obj是編譯目錄,裡面都不是源代碼,忽略;suo文件是vs2010的配置文件,不需要。這樣你在git status的時候就只會看到源代碼文件了,就可以放心的git add -A了。
6.tag
我們可以創建一個tag來指向軟體開發中的一個關鍵時期,比如版本號更新的時候可以建一個「v2.0」、「v3.1」之類的標簽,這樣在以後回顧的時候會比較方便。tag的使用很簡單,主要操作有:查看tag、創建tag、驗證tag以及共享tag。
6.1查看tag
列出所有tag:
git tag
這樣列出的tag是按字母排序的,和創建時間沒關系。如果只是想查看某些tag的話,可以加限定:
git tag -l v1.*
這樣就只會列出1.幾的版本。
6.2創建tag
創建輕量級tag:
git tag v1.0
這樣創建的tag沒有附帶其他信息,與之相應的是帶信息的tag:
git tag -a v1.0 -m
'first version'
-m後面帶的就是注釋信息,這樣在日後查看的時候會很有用,這種是普通tag,還有一種有簽名的tag:
git tag -s v1.0 -m
'first version'
前提是你有GPG私鑰,把上面的a換成s就行了。除了可以為當前的進度添加tag,我們還可以為以前的commit添加tag:
#首先查看以前的commit
git log --oneline
#假如有這樣一個commit:8a5cbc2 updated readme
#這樣為他添加tag
git tag -a v1.1 8a5cbc2
6.3刪除tag
很簡單,知道tag名稱後:
git tag -d v1.0
6.4驗證tag
如果你有GPG私鑰的話就可以驗證tag:
git tag -v
v1.0
6.5共享tag
我們在執行git push的時候,tag是不會上傳到伺服器的,比如現在的github,創建tag後git push,在github網頁上是看不到tag的,為了共享這些tag,你必須這樣:
git push origin --tags
希望能幫到你哦!
E. git master merging怎麼解決
這個需要你對代碼和功能進行分析,自己去確定合並順序每合並一個分支,要對代碼進行重新編譯排查,這些功能都不是GIT自動完成的
F. jenkins git+maven 編譯怎麼知道編譯成功
1.通過Jenkins web頁面添加Git plugin
Manage Jenkins->Manage Plugins->Available中選擇Git Plugin安裝,
注意要填寫user name和 email地址,否則日後會碰到git tag的錯誤
2.在Jenkins使用的機器上創建Git用戶所需要的公鑰
具體步驟參考前面Git server文章
但是注意,要將最後生成的.ssh目錄下的公鑰和私鑰文件復制到/var/lib/jenkins/.ssh目錄下,否則git clone命令會報錯
3.修改jenkins目錄許可權
chmod -R 777 /var/lib/jenkins
4.現在可以通過web頁面創建一個項目Test,然後設置該項目使用Git作為版本管理。
並且設置repository路徑,比如我的:git@S1:cml.git
5.在build選項的pom文件指定你需要執行的pom.xml路徑
比如我的一個測試工程名叫client,是個maven工程,我設置為client/pom.xml
6.現在可以點擊左側的Build now進行測試
一切OK,則沒有錯誤日誌。在Build History中可以看到測試結果,有沒有錯誤。
7.Email發送設置
在Manage Jenkins->Configure System->Email Notification中,設置SMTP發送的基本信息,點擊Advanced,可以填寫用戶名和密碼。還有一個測試按鈕可以用來發送測試設置是否正確。
同時在Test項目中的Building Settings打勾選中E-mail
Notification,點擊右邊的問號,會出現幫助文檔,說明在四種情況下會發送email,填寫接受email的地址,然後故意將client代碼
修改到不能編譯通過。然後點擊Build now按鈕測試一下。果然收到email.
8.檢查代碼更新並編譯
可以通過Poll SCM來設置定時檢查編譯功能
比如*/5 * * * * 就是每隔5分鍾檢查一次,如果git倉庫中有更新,則執行build操作。
9.使用Maven加快下載速度
如我這篇文章所述,用可以避免下載過慢問題,也可以繞過公司內部外網限制問題。
Jenkins的.m2目錄路徑在:/var/lib/jenkins/.m2/
首先清空裡面所有的jar包,然後創建settings.xml文件,並編輯內容如下:
源碼列印?
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url></url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url></url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url></url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
現在點擊build now測試一下,打開console output,看看命令行輸出結果,如果發現從S1下載jar包,就正確。和不用的比較了一下,節省了1分多鍾.
G. Git 2.1有哪些新特性
在Git 2.0發布兩個半月之後,Git又發布了新的版本2.1版。雖然只是小版本號的更新,但是這一版的新特性和改進的內容的列表卻很長。
可以從git倉庫找到完整的發布日誌,該日誌提供了關於Git 2.1版更多的細節。下面我們挑選了一些Git 2.1版的新特性來進行一下簡單的介紹。
更出色的bash補全功能
Bash補全功能得到了進一步的擴展,從而可以「更好地處理那些為復雜的命令序列而定義的別名」。換句話說,如果你為一組命令序列定義了一個別名,該別名對應的命令序列是將一個git命令的結果通過管道輸入到例如像grep、sort或其他任何的命令行程序中,那麼自動補全功能會像處理原生的git命令一樣將為該別名生成相同的選項。
裝飾日誌的「auto」選項
log.decorate 這一配置變數目前支持通過指定值auto,從而可以在輸出被發送到tty的時候,自動啟用--decorate 選項。
支持在合並時採用vimdiff3
git mergetool命令目前支持使用vimdiff3作為背後實現
在git-grep中支持全路徑名輸出
添加了一個--full-name 選項,允許以全路徑名的展現形式獲取結果,替代了根據當前目錄展示相對路徑的方式。需要重點關注的是該行為現在已是默認配置:「git grep 現在對grep.fullname 配置變數強加了‐‐full-name選項,從而使該選項成為了默認配置」。這會對那些不期望該種新行為的腳本化用戶造成損害。
標簽排序
Git-tag現在支持tag.sort配置,「當沒有指定‐‐sort= 選項的時候,將會按照默認的順序進行排序。」 Tim Pettersen在Atlassian Blog中提供了一個關於該新特性如何使用的很好的例子,他考慮到標簽中的版本數字從而建議採用下面的方式作為默認排序:
$ git config --global tag.sort version:refname
通過設置上述的默認選項,使用git tag 將會對版本數字進行正確地排序,而無需同時指定任何特定的排序選項來覆蓋它原有默認的按字母排序的方式。
新版的Git同樣也包含了數個針對性能提升和大量bug修復的變更。更多的詳情可以查看完整的發布日誌。上面提到的Tim Pettersen 的文章也非常值得一讀,因為它囊括了作者關於「新版中讓身在Atlassian的我們興奮的幾個方面」的一些想法,並提供了更加豐富的示例。
H. jenkins git怎麼自動編譯工程
當時也是花費了不少時間來配置Jenkins自動打包的問題,覺得還是需要記錄一下。 1.安裝Jenkins,這個很簡單,不需要多說。 2.下載Git Plugin,Gradle Plugin,Android Emulator Plugin(這個可以配置SDK路徑,覺得這個插件挺好)
I. Git是什麼
Git是什麼?
Git是目前世界上最先進的分布式版本控制系統(沒有之一)。
Git有什麼特點?簡單來說就是:高端大氣上檔次!
那什麼是版本控制系統?
如果你用Microsoft Word寫過長篇大論,那你一定有這樣的經歷:
想刪除一個段落,又怕將來想恢復找不回來怎麼辦?有辦法,先把當前文件「另存為……」一個新的Word文件,再接著改,改到一定程度,再「另存為……」一個新文件,這樣一直改下去,最後你的Word文檔變成了這樣:
過了一周,你想找回被刪除的文字,但是已經記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。
看著一堆亂七八糟的文件,想保留最新的一個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。
更要命的是,有些部分需要你的財務同事幫助填寫,於是你把文件Copy到U盤里給她(也可能通過Email發送一份給她),然後,你繼續修改Word文件。一天後,同事再把Word文件傳給你,此時,你必須想想,發給她之後到你收到她的文件期間,你作了哪些改動,得把你的改動和她的部分合並,真困難。
於是你想,如果有一個軟體,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟體里瞄一眼就可以,豈不是很方便?
這個軟體用起來就應該像這個樣子,能記錄每次文件的改動:
版本
用戶
說明
日期
1 張三 刪除了軟體服務條款5 7/12 10:38
2 張三 增加了License人數限制 7/12 18:09
3 李四 財務部門調整了合同金額 7/13 9:51
4 張三 延長了免費升級周期 7/14 15:17
這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。
J. 如何使用Git 鉤子來自動化開發和部署任務
版本控制,這是現代軟體開發的核心需求之一。有了它,軟體項目可以安全的跟蹤代碼變更並執行回溯、完整性檢查、協同開發等多種操作。在各種版本控制軟體中,Git是近年來最流行的軟體之一,它的去中心化架構以及源碼變更交換的速度被很多開發者青睞。
在git的眾多優點中,最有用的一點莫過於它的靈活性。通過「hooks」(鉤子)系統,開發者和管理員們可以指定git在不同事件、不同動作下執行特定的腳本。
本文將介紹git hooks的基本思路以及用法,示範如何在你的環境中實現自動化的任務。本文所用的操作系統是Ubuntu 14.04伺服器版,理論上任何可以跑git的系統都可以用同樣的方法來做。
前提條件
首先你的伺服器上先要安裝過git。Ubuntu 14.04的用戶可以查看這篇教程了解如何在Ubuntu
14.04上安裝git。
其次你應該能夠進行基本的git操作。如果你覺得對git不太熟,可以先看看這個Git入門教程。
上述條件達成後,請繼續往下閱讀。
Git Hooks的基本思路
Git hooks的概念相當簡單,它是為了一個單一需求而被設計實現的。在一個共享項目(或者說多人協同開發的項目)的開發過程中,團隊成員需要確保其編碼風格的統一,確保部署方式的統一,等等(git的用戶經常會涉及到此類場景),而這些工作會造成大量的重復勞動。
Git hooks是基於事件的(event-based)。當你執行特定的git指令時,該軟體會從git倉庫下的hooks目錄下檢查是否有相對應的腳本,如果有則執行之。
有些腳本是在動作執行之前被執行的,這種「先行腳本」可用於實現代碼規范的統一、完整性檢查、環境搭建等功能。有些腳本則在事件之後被執行,這種「後行腳本」可用於實現代碼的部署、許可權錯誤糾正(git在這方面的功能有點欠缺)等功能。
總體來說,git hooks可以實現策略強制執行、確保一致性、環境控制、部署任務處理等多種功能。
Scott Chacon在他的Pro Git一書中將hooks劃分為如下類型:
客戶端的hook:此類hook在提交者(committer)的計算機上被調用執行。此類hook又分為如下幾類:
代碼提交相關的工作流hook:提交類hook作用在代碼提交的動作前後,通常用於運行完整性檢查、提交信息生成、信息內容驗證等功能,也可以用來發送通知。
Email相關工作流hook:Email類hook主要用於使用Email提交的代碼補丁。像是Linux內核這樣的項目是採用Email進行補丁提交的,就可以使用此類hook。工作方式和提交類hook類似,而且項目維護者可以用此類hook直接完成打補丁的動作。
其他類:包括代碼合並、簽出(check out)、rebase、重寫(rewrite)、以及軟體倉庫的清理等工作。
伺服器端hook:此類hook作用在伺服器端,一般用於接收推送,部署在項目的git倉庫主幹(main)所在的伺服器上。Chacon將伺服器端hook分為兩類:
接受觸發類:在伺服器接收到一個推送之前或之後執行動作,前觸發常用於檢查,後觸發常用於部署。
更新:類似於前觸發,不過更新類hook是以分支(branch)作為作用對象,在每一個分支更新通過之前執行代碼。
上述分類有助於我們對hook建立一個整體的概念,了解它可以用於哪類事件。當然了,要能夠實際的運用它,還需要親自動手操作、調試。