這幾天一直在搞 Jenkins + Docker + Azure Devops 部署,由於這種方式部署真的很是的省心,並且速度快,方便快捷,等等無數優勢,感謝個人單身領導的支持,固然也感謝 曉晨大神,沒有他的博客,真的不知道怎麼搞。html
好滴,進入正題: 第零點:固然要先安裝.Net core 運行時啦!官網上就有下載喔~java
首先 這裏的jenkins並非裝在docker裏面的jenkins,是直接安裝到linux上的jenkins。我參考的是曉晨的博客,曉晨大佬就是厲害 原文連接:http://www.javashuo.com/article/p-vjyyfiqf-z.html ,這裏要強調的是:一、首先咱們linux
先要安裝java環境,這裏又是參考曉晨大神的博客,原文連接:http://www.javashuo.com/article/p-tizppdfi-ee.html 裏面很是詳細的介紹咯 git
可是這裏要注意的就是:web
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在官網下載須要點擊這個選項才能下載,下載框中的那個就能夠了。docker
而後jenkins安裝曉晨大佬裏的博客已經說的很是明白了。服務器
接下來就是 Azure Devops的說明,微軟這個東西很是的牛逼啊,配合vs使用簡直是神器啊,oracle
如圖:能夠創建本身的分支上傳(push)和拉取(pull),從某分支合併(merge),完成團隊協做。基本上使用很是簡單,經過vs就能夠直接新建項目到 Azure Devops,也能夠創建多個分支,達到團隊協做的目的,這裏就不詳細說明啦。網站
接下來就是docker 的安裝了,好吧,我又參考了曉晨Master大神的博客,原文地址:http://www.cnblogs.com/stulzq/p/7743073.html,這裏要說明的就是咱們須要安裝docker-compose ,這樣就能夠運行dockerfile文件腳本,達到自動部署的目的。ui
好吧,基本上安裝完以後,咱們就能夠開始了:
首先咱們須要在jenkins上面新建一個任務,注意是自由風格的軟件項目: (這裏有一部分參考曉晨的博客,原文連接:http://www.cnblogs.com/stulzq/p/8627824.html)
而後點擊ok進入下一個頁面,這裏的是丟棄舊的構建,由於太多就佔磁盤了,第一個是保留幾天的build記錄,第二個是最多保留多少個構建,設小一點就不會佔不少硬盤空間了。
而後就是git的地址了:
上圖的git地址, 就是這裏的git clone地址 (固然git地址都行):
還須要注意的就是憑證(再點擊右上角你的帳戶下的security):
在這裏面填入名稱密碼就能夠了,而後在上面的憑證Credentials填入就好了:
接下來就是jenkins拉取代碼的時間(這裏 H/2 * * * * 是兩分鐘拉取一次):
:
而後是拉取後,構建執行的命令:
jenkins拉取代碼後會判斷代碼與以前的是否不一致,若是不一致,則會執行構建。
接下來是docker的說明:能夠看到上圖的命令,倒數兩行,會執行這個腳本文件,這個腳本文件其實是docker的一些命令,因此咱們須要在項目目錄中添加這個腳本文件,我就是直接添加TXT文件改後綴.sh。(有點low。。。。)
來看看這個腳本里面放什麼:
#!/bin/sh docker container ls -a | grep "tr" if [ $? -eq 0 ];then docker container stop tr docker container rm tr docker rmi tr docker network ls |grep tr docker network rm tr fi docker build -t tr --build-arg env="Development" . docker run -d --restart=always -p 8051:80 --name tr tr docker cp /etc/localtime tr:/etc/
能夠看到就是若是存在tr 先中止 刪除 而後再構建。固然咱們也得有dockerfile這個文件,構建的時候docker會去找到dockerfile 而後執行裏面的命令(dockerfile在新建.net core項目的時候勾選支持docker就能夠咯,還有直接添加txt 去掉後綴也行哈哈哈)
而後看看dockerfile有什麼:
# 基於dotnet基礎環境構建鏡像 FROM docker.io/microsoft/dotnet RUN mkdir /TR #定義參數 ARG env # 把發佈的內容拷貝到docker容器的TR目錄下 COPY /publish /TR # 設置工做目錄 WORKDIR /TR # 暴露80端口 EXPOSE 80 # 設置環境變量 ENV ASPNETCORE_ENVIRONMENT=$env # 啓動web RUN echo "執行環境: $env" CMD ["dotnet","TR.dll"]
dockerfile指令詳解說明:https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/,裏面都有說明就很少說了哈,要注意的就是:這裏 jenkins docker Azure Devops 三者都是獨立的,由於jenkins不是安裝docker裏面,首先咱們上傳代碼到Azure Devops上,而後jenkins根據憑證去Azure Devops拉取代碼到服務器上,執行命令腳本構建,而後就交給腳本執行,找到dockfile執行,重構鏡像再生成容器。網站就部署到docker裏面了。
大體的就是這樣咯,感謝曉晨大佬的博客,給了我很是大的幫助,這就是大佬的博客地址:https://www.cnblogs.com/stulzq/