亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

如何利用Jenkins + TFS為.Net Core實現持續集成/部署詳解

2019-10-29 21:02:28
字體:
來源:轉載
供稿:網友

前言

在前后端分離開發的項目當中為了避免重復構建發布,我們需要部署一個持續發布環境,而目前的開發環境服務器都是基于 CentOS 的,因此每次在本地發布之后還需要打包,上傳,部署,十分繁瑣。故這里采用了比較成熟的Jenkins 作為持續部署環境。

為了方便安裝,我們這里使用了 Docker 來進行安裝,至于 Docker 安裝的步驟這里不在贅述,詳情可以參考這一篇博文。

上面安裝的是一個較老的版本,這里推薦參考Docker 官方文檔來進行安裝。

安裝好 Docker 之后,拉取 Jenkins 的官方鏡像。執行如下命令:

docker pull jenkins/jenkins

拉取完畢之后我們基于這個鏡像封裝一個新的鏡像出來,可能會問為什么不能直接使用呢?因為這兒的 jenkins鏡像并不包含 docker 環境,所以我們需要封裝一個新的鏡像讓其能夠訪問宿主機的 Docker 程序。

構建 Dockerfile 內容如下:

FROM jenkins/jenkins:latestUSER root#清除了基礎鏡像設置的源,切換成阿里云的源RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list / && echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list / && echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list / && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list#更新源并安裝缺少的包RUN apt-get update && apt-get install -y libltdl7ARG dockerGid=999RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group /USER jenkins

完成之后執行如下命令構建新的 Docker 鏡像:

docker build -t docker/jenkins .

下面我們就開始運行我們的 Jenkins 容器了:

docker run -d -p 8080:8080 -p 50000:50000 / --name=jenkins -v /root/docker/jenkins:/var/jenkins_home / -v /var/run/docker.sock:/var/run/docker.sock / -v $(which docker):/usr/bin/docker / docker/jenkins

這里我們將 Jenkins 鏡像里面的 /var/jenkins_home 映射到了宿主機的 /root/docker/jenkins 文件夾,在這個文件夾里面都存放的是 Jenkins 的一些配置項等。

注意,這里可能會出現如下錯誤:

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log': Permission deniedCan not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

這是因為在 docker 內部的 jenkins user 用戶沒有權限,因為映射的 /root/docker/jenkins/ 文件夾屬于root 用戶的,而 jenkins user 的 uid 為 1000,執行如下命令:

sudo chown -R 1000:1000 /home/docker/jenkins

之后再次運行 Jenkins 的容器,訪問 http://服務器IP:8080/ 站點,會提示你輸入密鑰:

jenkins,.net,core,asp.net,tfs

我們來到宿主機執行以下 shell 命令:

docker container logs jenkins

就可以看到密鑰其實已經輸出在終端了,復制過來,粘貼進去就可以了。之后就是選擇你需要安裝的插件,選擇第一個默認即可,可能這里因為網絡原因會安裝失敗,可以多重試幾次,或者直接忽略掉,后面我們會將如何解決。

安裝完成之后輸入用戶名密碼,就可以開始使用了,可能你剛才會因為網絡等原因造成插件安裝失敗,這里我們來到

Jenkins>>系統管理>>管理插件>>高級

然后將 升級站點 地址改為 http://mirror.xmission.com/jenkins/updates/current/update-center.json。之后安裝之前缺失的插件。

這里我們項目使用的是 TFS 進行源代碼管理,所以我們需要安裝 TFS 插件,在 Manage Jenkins 的 Manage Plugin 里面我們找到 Team Foundation Server Plug-in 插件,勾選,點擊 Download now and install after restart 按鈕,勾選 Restart Jenkins when installation is complete and no jobs are running 。

安裝完成之后 Jenkins 會重啟,等待重啟完畢之后,來到 Jenkins>>Manage Jenkins>>Configure System 查看 TFS/Team Services 然后添加你的 TFS Collection。

jenkins,.net,core,asp.net,tfs

保存之后我們就可以新建項目了。

首先,我們來到首頁,選擇 New Item:

jenkins,.net,core,asp.net,tfs

然后選擇自由風格項目,填上名稱.

jenkins,.net,core,asp.net,tfs

在 Source Code Management 上選擇 TFS,并且填入你的 TFS 服務器地址,項目路徑,與你的賬號密碼:

jenkins,.net,core,asp.net,tfs

然后你就可以嘗試構建一下,構建成功之后就會在 Workspace 看到你的項目文件被拉下來了。

jenkins,.net,core,asp.net,tfs

那么我們的代碼如何構建并且部署呢?因為我們之前在 Jenkins 的 Docker 鏡像啟動的時候掛載了宿主機的 Docker 程序,我們現在就可以直接基于微軟的 dotnetcore 鏡像來構建我們的項目。所以,我們先拉取微軟的 dotnetcore 鏡像,運行如下命令:

docker pull microsoft/dotnet:latest

拉取鏡像之后,我們來編寫一個 Dockerfile 文件來讓 Jenkins 來執行 Shell 構建。

如果你還不知道如何編寫 Dockerfile 文件,可以參考 這篇文章。

FROM microsoft/dotnet:latestWORKDIR /appCOPY ./ .ENV ASPNETCORE_URLS http://+:5000EXPOSE 5000RUN cd ./HKERP.IdentityServer.Host / && dotnet restore / && dotnet buildWORKDIR /app/HKERP.IdentityServer.HostENTRYPOINT ["dotnet","run"]

然后將這個 Dockerfile 放在你的項目里面,類似于這樣:

jenkins,.net,core,asp.net,tfs

然后我們再回到剛才 Jenkins 里面,配置剛才項目,新建一個 Shell Step,就像這樣:

jenkins,.net,core,asp.net,tfs

代碼如下:

#!/bin/shcd /var/jenkins_home/workspace/API_IdentityServerdocker container prune << EOFyEOFdocker container ls -a | grep "api_identityserver"if [ $? -eq 0 ];then docker container stop api_identityserver docker container rm api_identityserverfidocker image prune << EOFyEOFdocker build -t api_identityserver .docker run -d -p 8083:5000 --name=api_identityserver api_identityserver

步驟就是首先清理掉 docker 處于終止狀態的容器,然后判斷有沒有叫 api_identityserver 的容器在運行,如果有就直接停掉,然后清除所有的虛懸鏡像,使用當前目錄的 dockerfile 構建一個新的 api_identityserver 鏡像,使用 api_identityserver 鏡像運行一個新的容器。

這兒我安裝了 Jenkins 的一個 Blue Ocean 插件,來看一下:

jenkins,.net,core,asp.net,tfs

運行一下:

jenkins,.net,core,asp.net,tfs

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久久蜜臀| 亚洲男女性事视频| 4p变态网欧美系列| 国内揄拍国内精品| 国产精品对白刺激| 九九精品视频在线| 国产精品永久免费| 久久精品国产久精国产思思| 国产精品久久久一区| 日韩精品在线观| 欧洲亚洲女同hd| 91久久国产精品91久久性色| 日韩精品免费在线| 国产亚洲a∨片在线观看| 久久全国免费视频| 成人国产精品一区二区| 精品中文字幕在线观看| 欧美日韩国产综合视频在线观看中文| 中日韩美女免费视频网站在线观看| 国产成人黄色av| 中文字幕在线精品| 亚洲人线精品午夜| 久久久久久高潮国产精品视| 91精品国产综合久久男男| 亚洲成人精品久久久| 7777免费精品视频| 午夜精品久久久久久久99热| 亚洲国产天堂久久国产91| 亚洲女人被黑人巨大进入| 亚洲精品久久视频| 久久大大胆人体| 欧美午夜精品久久久久久浪潮| 日韩的一区二区| 亚洲a在线播放| 88国产精品欧美一区二区三区| 丝袜亚洲欧美日韩综合| 成人精品一区二区三区电影黑人| 亚洲欧美精品伊人久久| 8x海外华人永久免费日韩内陆视频| 日日狠狠久久偷偷四色综合免费| 亚洲国产成人精品久久久国产成人一区| 亚洲国产欧美一区| 日韩av影视在线| 欧美成人精品不卡视频在线观看| 高清一区二区三区四区五区| 91国产精品视频在线| 亚洲午夜av电影| 91美女高潮出水| 91精品久久久久久久久久入口| 91色在线观看| 韩国三级电影久久久久久| 九九久久久久久久久激情| 欧美视频免费在线| 在线视频亚洲欧美| 97免费视频在线播放| 最近更新的2019中文字幕| 亚洲成色777777女色窝| 日本中文字幕久久看| 欧美壮男野外gaytube| 红桃视频成人在线观看| 久久亚洲精品一区二区| 精品国产一区二区三区在线观看| 亚洲欧美中文另类| 国产免费一区二区三区在线观看| 奇米一区二区三区四区久久| 性色av香蕉一区二区| 538国产精品一区二区在线| 国产午夜精品麻豆| 日韩av网站电影| 欧美日韩性生活视频| 国产在线98福利播放视频| 亚洲aaa激情| 亚洲一区第一页| 国产视频在线观看一区二区| 成人a在线观看| 亚洲精品美女在线观看播放| 欧美第一淫aaasss性| 欧美日韩国产中字| 亚洲一区久久久| 亚洲国产天堂久久国产91| 国产精品久久久久久久久久久久| 亚洲成人黄色网| 欧美极品在线播放| 亚洲欧美自拍一区| 中文字幕在线观看亚洲| 久久久精品国产一区二区| 亚洲一区二区精品| 欧美性猛交99久久久久99按摩| 久久天天躁狠狠躁夜夜av| 韩国精品美女www爽爽爽视频| 日韩欧美综合在线视频| 欧美亚洲在线视频| 日本成人黄色片| 自拍偷拍亚洲精品| 日韩av免费看| 国产精品高潮粉嫩av| 欧美日韩一区二区三区在线免费观看| 国产欧美亚洲精品| 亚洲黄色av女优在线观看| 亚洲成人教育av| 日韩av在线网| 精品福利免费观看| 91免费高清视频| 日本韩国在线不卡| 亚洲综合最新在线| 久久99精品视频一区97| 日韩中文在线中文网三级| 日韩精品日韩在线观看| 欧美午夜丰满在线18影院| 国产精品一区二区久久精品| 国产精品自产拍在线观看中文| 日韩一区二区久久久| 亚洲国产精品嫩草影院久久| 青青a在线精品免费观看| 97在线免费观看| 国内精品免费午夜毛片| 久久国产精彩视频| 久久韩剧网电视剧| 亚洲精品自产拍| 色偷偷9999www| 91精品国产91久久久久福利| 国产亚洲人成a一在线v站| 91av在线看| 成人av色在线观看| 欧美黑人xxxⅹ高潮交| 欧美电影在线观看高清| 午夜精品理论片| 精品一区二区三区电影| 久久久999精品视频| 亚洲国产成人精品久久久国产成人一区| 欧美日韩免费看| 成人免费观看网址| 国产亚洲精品久久久| 成人精品久久一区二区三区| 久久久欧美一区二区| 国产精品女人网站| 久久久久久免费精品| 欧美性猛交xxxx久久久| 日韩在线视频线视频免费网站| 亚洲精品国精品久久99热一| 91精品久久久久久综合乱菊| 久久精品国产电影| 国产剧情日韩欧美| 国产欧美日韩免费| 亚洲图片在线综合| 91在线无精精品一区二区| 亚洲综合中文字幕68页| 欧美中文在线观看国产| 日韩在线www| 最新国产精品拍自在线播放| 欧美午夜片在线免费观看| 中文字幕欧美精品日韩中文字幕| 欧美疯狂性受xxxxx另类| 欧美在线视频观看免费网站| 亚洲欧美日韩精品久久亚洲区| 日韩精品免费综合视频在线播放| 久久精品一偷一偷国产| 国外成人性视频| 黑丝美女久久久| 欧洲中文字幕国产精品| 成人精品久久一区二区三区| 亚洲91精品在线观看| 亚洲黄页网在线观看| 亚洲国产精品悠悠久久琪琪|