.Net core 使用Jenkins + Docker + Azure Devops 持續部署(CI/CD)

    這幾天一直在搞 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/

相關文章
相關標籤/搜索