netcore + docker + jenkins 持續集成日誌

要實現的目標 : 提交代碼到github的master分支後, 觸發webhook, jenkins從github上從新拉取代碼=>編譯=>打包成docker鏡像=>從新發布html

機器: centos 7.4linux

1. 安裝git,jenkins,docker-cegit

git能夠直接yum 安裝 : github

yum install git -y

也能夠安裝新版本 參考文章:  https://linuxize.com/post/how-to-install-git-on-centos-7/web

jenkins 安裝參考文章  http://www.javashuo.com/article/p-vjyyfiqf-z.htmldocker

docker-ce 安裝參考官網: https://docs.docker.com/install/linux/docker-ce/centos/shell

2. 新建一個net core demo上傳到githubcentos

  新建時候點擊啓用docker支持,會生成一個Dockerfile的docker文件 api

         

 

     

  把這個Dockerfile移動到 解決方案(.sln)同目錄服務器

 

 

 

這個Dockerfile基本就是把當前目錄的文件拷貝到aspnetcore-build鏡像中,再裏面編譯好以後再發布到aspnetcore:3.1鏡像中,
最後指定運行你的dotnet core程序

建立完項目後 用desktop 建立一個倉庫 傳到github

 

 

 

3. 測試下dockerfile是否正常工做

#這個是jenkins默認的存放代碼位置
cd  /var/lib/jenkins/workspace/;
git clone https://github.com/bbenph/WebApplication1.git
cd WebApplication1

image_version=`date +%Y%m%d%H%M`;
echo $image_version;
# 中止以前的docker container
docker stop test || true;
# 刪除這個container
docker rm test || true;
# build鏡像而且打上tag
docker build -t test:$image_version .;
docker images;
# 把剛剛build出來的鏡像跑起來
docker run -p 8810:80 --restart=always --name test -d test:$image_version;
docker logs test;

 能夠看到 image container 都有了 程序也跑起來了

 

 

 

 

 

4. 配置jenkins拉取github代碼

經過上面這個dockfile腳本,咱們已經把dotnet core程序編譯好了,而且打包成了docker images,還直接跑起來了.
可是咱們想要的應該是自動化編譯部署,並且上面咱們都把jenkins跑起來了,因此….
jenkins job配置
新建Job
打開jenkins首頁,左側選擇」新建任務」(newJob) => Freestyle project

添加源碼倉庫
確認以後進入Job配置頁面, 先只配置 源碼管理和構建模塊

 

 

 

 

 

 

 

 

上面的shell腳本說明:

 /var/lib/jenkins/workspace/ 是jenkins的默認工做路徑  後面的/test 是新建jenkins 任務的名稱

 || true  是即便這個container不存在 報錯也不影響下面shell腳本執行 由於有時候container不存在/沒運行  也是可能的

docker run 命令能夠 經過 docker run --help 查看各參數啥意思

點擊應用 => 保存

測試下jenkins配置是否正常

 

 

 

 

 

 

 

 

 

 

 

 

 

 如今修改代碼,提交github 後  再次jenkins中的馬上構建 發現使用新的image從新建立了一個容器

 

 

 

 

 

 

 修改的內容也看到了

 

 

 

 

 

 

5. 配置jenkins  代碼提交github master分支後 自動化編譯部署

參考 https://dzone.com/articles/adding-a-github-webhook-in-your-jenkins-pipeline

https://github.com/muyinchen/woker/tree/master/%E9%9B%86%E6%88%90%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA

什麼是webhook?Webhook的概念很簡單。Webhook是HTTP回調,HTTP POST在經過HTTP POST經過簡單的事件通知發生某些狀況時發生。

每當開發人員向master分支提交某些內容時,便會使用Jenkins中的GitHub webhooks觸發構建。

讓咱們看看如何在GitHub中添加構建Webhook,而後在Jenkins中添加此Webhook。

5.1 github配置

sercret text

注:此處須要一個對項目有寫權限的帳戶

進入github --> setting --> Personal Access Token --> Generate new token

img

img

本身先保存此token,若是丟失,以後再也沒法找到這個token

 

5.2 GitHub webhooks 設置

進入GitHub上指定的項目 --> setting --> WebHooks&Services --> add webhook --> 輸入剛剛部署jenkins的服務器的IP

PayloadURL 是咱們的Jenkins運行的URL,添加github-webhook告訴GitHub這是一個Webhook

github的webhook必定要是一個外網可訪問的url , github的服務器訪問不到你的內網ip地址的

[補充] 填寫jenkins公網ip:8080 並無生效, 用ngrok提供的免費域名 代理到 jenkins服務器 就能夠  緣由不明

若是是你本機沒有外網ip的話 能夠用下 https://www.ngrok.cc/  外網映射到你內網

 

 

 

 

 

5.3 jenkins的github配置

安裝GitHub Plugin

系統管理-->插件管理-->可選插件

直接安裝Github Plugin, jenkins會自動幫你解決其餘插件的依賴,直接安裝該插件Jenkins會自動幫你安裝plain-credentials 、Git 、 credentials 、 github-api

 這個在jenkins第一次進入的時候 選擇install suggested plugins 會默認安裝的

配置GitHub Plugin

系統管理 --> 系統設置 --> GitHub --> Add GitHub Sever

以下圖所示

img

API URL 輸入 https://api.github.com,Credentials點擊Add添加,Kind選擇Secret Text,具體以下圖所示。

img

設置完成後,點擊TestConnection,提示Credentials verified for user UUserName, rate limit: xxx,則代表有效。

修改步驟4中建立的任務

 

 

 

 

 

每次push代碼後能夠看到有觸發webhook去調用接口

相關文章
相關標籤/搜索