欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何利用Jenkins + TFS為.Net Core實(shí)現(xiàn)持續(xù)集成/部署詳解

 更新時(shí)間:2018年05月06日 15:47:30   作者:myzony  
這篇文章主要給大家介紹了關(guān)于如何利用Jenkins + TFS為.Net Core實(shí)現(xiàn)持續(xù)集成/部署的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在前后端分離開發(fā)的項(xiàng)目當(dāng)中為了避免重復(fù)構(gòu)建發(fā)布,我們需要部署一個(gè)持續(xù)發(fā)布環(huán)境,而目前的開發(fā)環(huán)境服務(wù)器都是基于 CentOS 的,因此每次在本地發(fā)布之后還需要打包,上傳,部署,十分繁瑣。故這里采用了比較成熟的Jenkins 作為持續(xù)部署環(huán)境。

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

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

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

docker pull jenkins/jenkins

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

構(gòu)建 Dockerfile 內(nèi)容如下:

FROM jenkins/jenkins:latest
USER root
#清除了基礎(chǔ)鏡像設(shè)置的源,切換成阿里云的源
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 libltdl7
ARG dockerGid=999

RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group \
USER jenkins

完成之后執(zhí)行如下命令構(gòu)建新的 Docker 鏡像:

docker build -t docker/jenkins .

下面我們就開始運(yùn)行我們的 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 映射到了宿主機(jī)的 /root/docker/jenkins 文件夾,在這個(gè)文件夾里面都存放的是 Jenkins 的一些配置項(xiàng)等。

注意,這里可能會(huì)出現(xiàn)如下錯(cuò)誤:

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

這是因?yàn)樵?docker 內(nèi)部的 jenkins user 用戶沒有權(quán)限,因?yàn)橛成涞?/root/docker/jenkins/ 文件夾屬于root 用戶的,而 jenkins user 的 uid 為 1000,執(zhí)行如下命令:

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

之后再次運(yùn)行 Jenkins 的容器,訪問 http://服務(wù)器IP:8080/ 站點(diǎn),會(huì)提示你輸入密鑰:


我們來到宿主機(jī)執(zhí)行以下 shell 命令:

docker container logs jenkins

就可以看到密鑰其實(shí)已經(jīng)輸出在終端了,復(fù)制過來,粘貼進(jìn)去就可以了。之后就是選擇你需要安裝的插件,選擇第一個(gè)默認(rèn)即可,可能這里因?yàn)榫W(wǎng)絡(luò)原因會(huì)安裝失敗,可以多重試幾次,或者直接忽略掉,后面我們會(huì)將如何解決。

安裝完成之后輸入用戶名密碼,就可以開始使用了,可能你剛才會(huì)因?yàn)榫W(wǎng)絡(luò)等原因造成插件安裝失敗,這里我們來到

Jenkins>>系統(tǒng)管理>>管理插件>>高級(jí)

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

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

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


保存之后我們就可以新建項(xiàng)目了。

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


然后選擇自由風(fēng)格項(xiàng)目,填上名稱.


在 Source Code Management 上選擇 TFS,并且填入你的 TFS 服務(wù)器地址,項(xiàng)目路徑,與你的賬號(hào)密碼:


然后你就可以嘗試構(gòu)建一下,構(gòu)建成功之后就會(huì)在 Workspace 看到你的項(xiàng)目文件被拉下來了。


那么我們的代碼如何構(gòu)建并且部署呢?因?yàn)槲覀冎霸?Jenkins 的 Docker 鏡像啟動(dòng)的時(shí)候掛載了宿主機(jī)的 Docker 程序,我們現(xiàn)在就可以直接基于微軟的 dotnetcore 鏡像來構(gòu)建我們的項(xiàng)目。所以,我們先拉取微軟的 dotnetcore 鏡像,運(yùn)行如下命令:

docker pull microsoft/dotnet:latest

拉取鏡像之后,我們來編寫一個(gè) Dockerfile 文件來讓 Jenkins 來執(zhí)行 Shell 構(gòu)建。

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

FROM microsoft/dotnet:latest
WORKDIR /app
COPY ./ .
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000

RUN cd ./HKERP.IdentityServer.Host \
 && dotnet restore \
 && dotnet build

WORKDIR /app/HKERP.IdentityServer.Host
ENTRYPOINT ["dotnet","run"]

然后將這個(gè) Dockerfile 放在你的項(xiàng)目里面,類似于這樣:


然后我們?cè)倩氐絼偛?Jenkins 里面,配置剛才項(xiàng)目,新建一個(gè) Shell Step,就像這樣:


代碼如下:

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

步驟就是首先清理掉 docker 處于終止?fàn)顟B(tài)的容器,然后判斷有沒有叫 api_identityserver 的容器在運(yùn)行,如果有就直接停掉,然后清除所有的虛懸鏡像,使用當(dāng)前目錄的 dockerfile 構(gòu)建一個(gè)新的 api_identityserver 鏡像,使用 api_identityserver 鏡像運(yùn)行一個(gè)新的容器。

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


運(yùn)行一下:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • System.Data.OleDb.OleDbException: 未指定的錯(cuò)誤的完美解決方法

    System.Data.OleDb.OleDbException: 未指定的錯(cuò)誤的完美解決方法

    本文給大家?guī)砣N有關(guān)System.Data.OleDb.OleDbException: 未指定的錯(cuò)誤的完美解決方法,每種方法都很不錯(cuò),需要的朋友可以參考下
    2016-09-09
  • 淺析.NET中AsyncLocal的實(shí)現(xiàn)原理

    淺析.NET中AsyncLocal的實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)介紹了.NET中AsyncLocal的具體實(shí)現(xiàn)原理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,如果有講得不清晰或不準(zhǔn)確的地方,還望指出
    2023-08-08
  • C#使用Aforge調(diào)用攝像頭拍照的方法

    C#使用Aforge調(diào)用攝像頭拍照的方法

    這篇文章主要為大家詳細(xì)介紹了C#使用Aforge調(diào)用攝像頭拍照的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C#的四個(gè)基本技巧

    C#的四個(gè)基本技巧

    C#的四個(gè)基本技巧...
    2007-03-03
  • C#實(shí)現(xiàn)自定義單選和復(fù)選按鈕樣式

    C#實(shí)現(xiàn)自定義單選和復(fù)選按鈕樣式

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)定義單選和復(fù)選按鈕樣式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • Unity色子的投擲和點(diǎn)數(shù)的獲得詳析

    Unity色子的投擲和點(diǎn)數(shù)的獲得詳析

    這篇文章主要給大家介紹了關(guān)于Unity色子的投擲和點(diǎn)數(shù)的獲得的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • C#?獲取本機(jī)IP地址(IPv4和IPv6)

    C#?獲取本機(jī)IP地址(IPv4和IPv6)

    本文主要介紹了C#?獲取本機(jī)IP地址(IPv4和IPv6),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 在C#中發(fā)送自定義HTML格式郵件的示例詳解

    在C#中發(fā)送自定義HTML格式郵件的示例詳解

    在C#中發(fā)送自定義HTML格式郵件是一項(xiàng)常見的任務(wù),這在開發(fā)電子郵件營銷系統(tǒng)或任何需要通過電子郵件與用戶溝通的應(yīng)用程序中都非常重要,以下是如何在C#中發(fā)送自定義HTML格式郵件的詳解與示例,需要的朋友可以參考下
    2024-07-07
  • C#正則過濾HTML標(biāo)簽并保留指定標(biāo)簽的方法

    C#正則過濾HTML標(biāo)簽并保留指定標(biāo)簽的方法

    這篇文章主要介紹了C#正則過濾HTML標(biāo)簽并保留指定標(biāo)簽的方法,涉及C#針對(duì)頁面HTML元素正則匹配與替換相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#自定義控件指示燈效果

    C#自定義控件指示燈效果

    在C#中實(shí)現(xiàn)一個(gè)指示燈控件,可以通過GDI+技術(shù)繪制,首先使用Pen對(duì)象繪制外環(huán),然后用SolidBrush對(duì)象填充內(nèi)圓,通過RectangleF定義繪制和填充的邊界,控件的屬性包括顏色、間隙、外環(huán)寬度等,本文給大家介紹C#自定義控件指示燈效果,感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評(píng)論