想堅持更新本身的博客這個想法已經好久了,一直都沒有邁開第一步。在2018年的最後日子裏邁開了這一步。java
Jenkins和docker作持續集成主要是原因是由於公司在.net的路上轉頭向.net core 發展,因爲.net core的版本更新比較頻繁在linux上安裝和卸載.net core不太方便,因而有了Jenkins+docker的組合。linux
Jenkins主要是負責持續集成,docker實際負責集成.net core環境部署程序。git
Jenkins和docke的集成環境:centos7docker
1、安裝java環境json
官網下載 jdk:jdk-8u171-linux-x64.rpmvim
安裝 jdkcentos
配置環境app
vim /etc/profile 在最後加上下面的配置ssh
JAVA_HOME=/usr/java/jdk1.8.0_171 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
執行 source /etc/profile 配置生效svn
2、安裝docker
安裝基礎環境 :yum install -y yum-utils device-mapper-persistent-data lvm2
獲取docker源 :
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
獲取docker版本列表:
yum list docker-ce --showduplicates|sort -r
安裝docker:
yum install docker-ce版本號
docker安裝後使用 docker infn 查詢是否安裝成功
啓動daocker :
systemctl start docker
編輯daemon
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"],//docker鏡像獲取地址,通常都配成阿里的鏡像這樣速度回很快 "insecure-registries": [""],//配置你要有本身的私有鏡像庫經過配置這個能夠訪問 "max-concurrent-downloads": 10, "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "10m", "max-file": "3" } }
從新加載daemon :
systemctl daemon-reload
重啓docker:
systemctl restart docker
這樣docker安裝完畢
3、安裝Jenkins
官網下載 rpm包:https://pkg.jenkins.io/redhat-stable/ 我使用的是jenkins-2.121.1-1.1.noarch.rpm
下載
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.121.1-1.1.noarch.rpm
安裝:
yum install -y jenkins-2.121.1-1.1.noarch.rpm
啓動:
systemctl start jenkins
到這安裝已經完成準備開始配置Jenkins
訪問:http://ip:8080
提示須要/var/lib/jenkins/secrets/initialAdminPassword這裏的密碼
須要選擇須要插件,這裏能夠選擇推薦插件安裝,後面還能夠本身再選擇安裝其餘插件,這裏我選擇默認安裝
安裝中
安裝完成後的樣子,這時候就能夠安裝本身想要插件了
咱們項目使用使用的team foundation server存儲項目,因此要安裝tfs的插件
系統管理 -> 插件管理
插件安裝完成就能夠去構建項目了
新建構建任務
填寫任務名稱而後選擇構建一個自由風格的軟件項目
建立任務後進去會看到這些選擇,有一個須要配置的在高級中
這裏工做空間須要配置,爲了後面的構建使用
配置項目源碼獲取,這裏能夠根據本身源碼的存儲方式選擇獲取方式,支持git,svn ,tfs是前面安裝的插件才能支持的
配置好項目源後Jenkins就能獲取到咱們的項目了
這是構建觸發器
這個是構建環境配置
Abort the build if it's stuck 這裏配置構建項目的超時 ps:這裏要預估下本身項目的構建時間,若是構建的時間超過了超時時間就構建失敗
下面是構建的步驟,這個根據本身的環境來配置
個人構建步驟:
這樣項目就已經構建完成,並同推送到鏡像庫中
還有構建後的操做
這個能夠配置ssh一些遠程鏈接方式進行後續的部署。
這裏我再分享下個人Dockerfile文件
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY ["TxERP.NetCore.OrderingPolicy.Web/TxERP.NetCore.OrderingPolicy.Web.csproj", "TxERP.NetCore.OrderingPolicy.Web/"] COPY ["TxERP.NetCore.OrderingPolicy.Web/NuGet.config", "TxERP.NetCore.OrderingPolicy.Web/"] //若是你有本身的nuget私有庫的話須要把nuget的配置文件拷貝進來,保證項目能獲取到類庫 RUN dotnet restore "TxERP.NetCore.OrderingPolicy.Web/TxERP.NetCore.OrderingPolicy.Web.csproj" --disable-parallel COPY . . WORKDIR "/src/TxERP.NetCore.OrderingPolicy.Web" RUN dotnet build "TxERP.NetCore.OrderingPolicy.Web.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "TxERP.NetCore.OrderingPolicy.Web.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone //鏡像內部默認的是格林尼治時間,這樣時間會快8小時,因此要把時區文件拷貝進來 ENTRYPOINT ["dotnet", "TxERP.NetCore.OrderingPolicy.Web.dll"]
這個Dockerfile時間項目創建docker文件的基礎上作的改動可能有的朋友會用到
到此Jenkins和docke持續集成已經完成,謝謝各位能看完此文,有錯誤的地方還請你們給指出。