Devops step by step



接着上次分享的devops歷程[Followme Devops實踐之路], 大家希望能夠出一個step by step手冊, 那今天我就來和手把手來一起搭建這么一套環境, 演示整個過程!

實驗環境需要准備docker /docker compose

建議大家使用國外的vps學習, 不需要考慮網絡/gwf的問題/方便

(本demo搭建在linode上面, 注冊可以免費使用2個月)https://www.linode.com/?r=548a820eda1d06ec584ea4b0c72ce02db6f5910c

先clone下代碼

Git clone https://github.com/FollowmeTech/jenkins-cicd.git

相關的文件和解釋如下:

clip_image002

架構圖如下

我們需要依賴 docker register 和 portainer

clip_image004

為此,我們寫了一個簡單的

register-portainer-docker-compose.yaml文件, 方便快熟演示一件啟動

(生產環境中請使用harbor替代docker-register)

docker-compose -f register-portainer-docker-compose.yaml -d 啟動

clip_image006

成功啟動之后, 我們需要設置portainer的用戶名密碼

需要登陸下http://ip:9000設置portainer的用戶名密碼(12345678)

clip_image008

到此, docker register 和portainer就以及搭建完成了!!!

clip_image010

接下來准備啟動Jenkins docker鏡像

我們需要先修改配置文件docker-compose.ci.env,把相關的信息注入到jenkins-ci中

編輯dev環境下的portainer, docker register相關信息

clip_image012

(Ps: 由於是演示demo, 所以,我們就只配置了dev的相關配置

在真實場景中, 配置好, beta /prod 就可以支持發布到beta和prod相關的環境了)

Docker-compose up -d 啟動Jenkins

clip_image014

待Jenkins安裝完成之后

登陸http://ip:8080設置Jenkins用戶名密碼

這個時候不要選擇安裝任何plugins

我們通過工具來導入plugins, tools文件下面有一個butler用來導入plugins

先設置tools下面的運行權限, 然后執行命令

clip_image016

clip_image018

等待導入完成相關的Jenkins需要使用的插件

Jenkins相關的配置就全部完成了之后

登陸到Jenkins.

---------配置git auth--------

(由於我這里用的是github上的一個demo,所以可以不用配置, 具體大家搜索下配置私有倉庫的方式)

---------創建項目------------

clip_image020

選擇[]this project is parameterized !

我們需要配合使用git-flow ,和之前配置的docker-compose-ci.env

發布系統可以簡化為

”完成了一個功能, 發布到指定的環境”

那么這里就有2個變量

1. 完成的功能, 我們使用分支來解決, 某個分支來承載某個功能

2. 發布到指定的環境, 我們采用環境變量來解決

所以這里要使用兩個Jenkins插件, 分別來解決上面的問題

clip_image022

clip_image024

編寫execute-shell;

clip_image026

Execute-shell 分成四個部分

1. Build source code

a. 例如donet publish ,npm buid:env… 得到二進制包

2. Build docker image

a. 依賴CHANGELOG ,來生成docker image的版本號

docker build -t $local_docker_image_name .

3. Push docker image to register

a. docker tag $local_docker_image_name $full_docker_image_name

b. docker push $full_docker_image_name

4. Deploy docker by portainer-api

a. python /root/pubtool/main.py

--deploy_env=$env //把相關的部署環境傳遞進去

--docker_env="ASPNETCORE_ENVIRONMENT=Development" //docker env傳遞

--node=1 //要部署在portainer的那個節點上!

--container_name="$dockerImgName" //container_name

--docker_image="$local_docker_image_name" //要部署的dockerimage

--net="bridge" //網絡模式

--port="6666:80" //網絡映射

一切配置完成, 就可以進行build-deploy了

clip_image028

clip_image030

項目發布完成!!!

clip_image032

:

本環境demo:

為了方便大家快熟感受, 我搭建了一個play環境

大家可以向 https://github.com/FollowmeTech/jenkins-cicd-practise 提交代碼

再登陸 https://ci.rileme.club ,選擇相應的分支進行build發布 (play/123456)

項目發布完成, 快熟預覽效果 http://demo.rileme.club

如有感興趣的同志

也可以加入微信群進行討論

clip_image034

Ps:招聘中

有興趣的小伙伴read more(https://github.com/FollowmeTech/hire/blob/master/dotnet.md)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM