超簡單讓.NET Core開發者快速擁有CI/CD的能力-Docker版本git
上一篇自動化測試,全面且詳細的介紹了從零開始到發佈版本的步驟,這是傳統的方式,本次爲你們帶來的是如何在5分鐘內使用上docker進行CI/CD,畢竟如今的容器化如火如荼,本示例是基於CentOS-7系統,在示例中, jenkins 和部署 .NET Core 應用程序,都使用 docker 來完成。web
在服務器上執行下面的命令,安裝 dockerdocker
yum install docker
安裝完成後,執行命令 docker --version ,輸出版本號證實安裝成功。shell
Docker version 19.03.4, build 9013bf583a
緊接着,立刻拉取 jenkins 的鏡像json
docker pull jenkins/jenkins
拉取成功後,執行容器部署,輸入下面的命令api
docker run --name myjenkins \ -u root \ -d \ --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/jenkins_home:/var/jenkins_home \ -p 8080:8080 -p 50000:50000 \ jenkins/jenkins:lts
部署完成後,可能你須要手動開啓防火牆端口 8080 後才能夠在外部瀏覽器中訪問jenkins的站點瀏覽器
輸入下面的命令,開啓8080端口服務器
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
好了,如今咱們能夠經過下面的地址訪問jenkins的web管理控制檯了app
http://{你的IP地址}:8080
若是你出現了下面的圖,不要慌張,簡單執行下面兩個步驟就能夠解決問題了。tcp
一、修改/var/jenkins_home/updates/default.json,搜索 google.com ,改成 baidu.com 就能夠了
二、修改/var/jenkins_home/hudson.model.UpdateCenter.xml,這個文件是jenkins下載插件的默認源地址,將:https://updates.jenkins.io/update-center.json 中的 https 修改成 http,而後執行命令 docker restart myjenkins 重啓 jenkins 實例就能夠了。
Visual Studio 已經爲咱們集成了docker的支持,因此基本上咱們是不須要編寫Dockerfile文件的,只要鼠標右鍵點擊項目,添加docker支持便可
這裏我選擇Linux版本
生成的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 ["src/Ron.Blogs/Ron.Blogs.csproj", "src/Ron.Blogs/"] RUN dotnet restore "src/Ron.Blogs/Ron.Blogs.csproj" COPY . . WORKDIR "/src/src/Ron.Blogs" RUN dotnet build "Ron.Blogs.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "Ron.Blogs.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "Ron.Blogs.dll"]
這裏生成的文件實際上是有點小問題的,由於咱們是在項目中生成的Dockerfile文件,而上面的腳本中,COPY 的命令執行的目錄倒是從 /src 開始,若是咱們直接執行 docker build ,會提示找不到該項目文件 src/Ron.Blogs/Ron.Blogs.csproj,正確的解決方法是將Dockerfile文件移動到src同級目錄,即解決方案根目錄下,以下圖
由於咱們將在容器中編譯.NET Core 程序,因此本地服務器不須要安裝 .NET Core SDK。接下來的事情就變得很是簡單了,上jenkins去建立一個任務,而後做一些簡單的配置後就開始構建。
docker build -t blogs . docker run --rm -d --name blogs -p 15002:80 blogs echo "success"
就這樣,一個完整的流程走完了,如今訪問容器實例地址: http://172.16.1.202:15002/api/blog/detail/1
完美運行成功!
上面的腳本在第一次運行的時候沒有問題,可是在第二次構建的時候,將會提示實例名稱 blogs 已存在,咱們須要修改一下構建腳本,加入 docker stop blogs
docker build -t blogs . docker stop blogs docker run --rm -d --name blogs -p 15002:80 blogs echo "success"
上面就是本次的快速擁抱CI/CD的所有內容,看完點贊,保持好習慣!