不知道為什么,現(xiàn)在什么技術(shù)都想學(xué),因?yàn)槲矣X得我遇到了技術(shù)的壁壘,大的項(xiàng)目接觸不到,做的項(xiàng)目一個(gè)字辣*
。所以,整個(gè)人心浮氣躁,我已經(jīng)得通過每天的騎行和長跑緩解這種浮躁了。一個(gè)周末,我再次宅在了家里,學(xué)習(xí)了一下CICD
。
先分享一下shigen
的學(xué)習(xí)視頻資源:CICD流水線實(shí)戰(zhàn)
git
分布式版本控制器。gitlab
可以創(chuàng)建私人的倉庫,github
私有倉庫需要付費(fèi)。
SVN 不推薦!不是噴它,技術(shù)的革新,新技術(shù)會解決老技術(shù)的各種問題。
由于SVN的集中式架構(gòu)、對離線工作支持較差、分支和合并復(fù)雜以及缺乏現(xiàn)代化功能等原因,它已經(jīng)不再被推薦作為主要的版本控制系統(tǒng)。 目前,Git已成為廣泛使用的分布式版本控制系統(tǒng),并且具有更強(qiáng)大的功能和更好的性能?!獊碜詂hatGPT的總結(jié)
git原理
再多的概念都沒有一張圖來的實(shí)在和清晰:
git配置
~/.gitconfig
會保存git的全局配置,可以在這里修改git用戶的信息,如name
email
。
cat ~/.gitconfig
git在項(xiàng)目中
在項(xiàng)目的根路徑下也會存在.git
文件夾,里邊也有一個(gè)config
文件,存儲的是當(dāng)前的項(xiàng)目配置。
查看配置信息
git config --list
設(shè)置
通常用來配置name
email
。
git config set name=shigen
查看分支和提交
我本地配置了gitlog
, 具體的配置shigen
分享在下邊啦。
gitlog='git log --graph --abbrev-commit --decorate --format=format:'\''%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'\'\'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'\'' --all'
執(zhí)行命令,就是這樣的,是不是很清晰明了:
shigen
更推薦tig
。直接在mac上執(zhí)行brew install tig
即可。
效果非常的炫酷、友好,可以直接在控制臺查看文件的改動。
常用的命令
雖然圖像化的操作工具如我常用的idea
ugit
等都能很好的滿足日常所需,但是:底層的原理還是得了解一下。想想,萬一只有終端操作咋辦。
- 初始化
git init
- 文件添加到暫存
git add xxx
- 提交
git commit -m 'msg'
- 查看日志
git log
- 暫存區(qū)狀態(tài)
git status
- 當(dāng)前文件與上次提交的差別
git diff
- 回到某個(gè)版本
git reset --hard xxxx
- 從本地push到主分支
一般的公司,
master
分支可是不允許直接push
代碼的,這里只是一個(gè)例子哈。
git push -u origin master
gitlab
安裝
發(fā)現(xiàn)直接安裝會有問題,如:找不到鏡像源。嘗試使用docker
安裝,發(fā)現(xiàn)云服務(wù)器的內(nèi)存不夠用,安裝的腳本如下:
mkdir -p etc/gitlab var/log/gitlab /var/opt/gitlab
docker run -d -p 81:80 -p 10011:443 -p 10012:22 \
--restart no \
--name gitlab \
-v $PWD/etc/gitlab:/etc/gitlab \
-v $PWD/var/log/gitlab:/var/log/gitlab \
-v $PWD/var/opt/gitlab:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce
echo '訪問81端口'
參考文章:Gitlab----使用Docker方式安裝部署Gitlab
感興趣的可以看看在M1芯片的電腦上如何的安裝:如何在M1的Mac上搭建gitlab
特色:添加用戶、使用郵箱、代碼合并
Nexus3
maven
的倉庫,私服。直接下載、解壓、啟動。和docker的harbor
類似。
jenkins
- 自動的構(gòu)建
- 易于安裝和配置
- 分布式構(gòu)建,多臺計(jì)算機(jī)一起構(gòu)建
- 支持的插件很多
容器化CI/CD流程
本地代碼---git---jenkins---harbor----docker(k8s)
部署
參考文章:Mac M1 部署 Jenkins
brew install jenkins-lts
brew services restart jenkins-lts
open 127.0.0.1:8080
獲得jenkins
的默認(rèn)密碼:
cat /Users/xxxx/.jenkins/secrets/initialAdminPassword
按照教程下載推薦的插件、創(chuàng)建賬戶、使用默認(rèn)的URL
即可。
配置
- 中文的配置
參考文章:jenkins設(shè)置中文
- 全局工具的配置
Java的路徑:
/opt/homebrew/opt/openjdk@17/bin
- 權(quán)限的劃分,需要使用到插件
- 部署的過程推薦文章:Mac M1部署jenkins
本地新建項(xiàng)目并上傳gitee
git commit -m "first commit"
git remote add origin https://gitee.com/shigen/wx-develop.git
git push -u origin "master"
在jenkins
的項(xiàng)目面板新建項(xiàng)目,具體的過程參見:jenkins+gitee實(shí)現(xiàn)代碼自動化部署
在腳本的實(shí)現(xiàn)部分,我手寫了一個(gè),上傳到我自己的harbor
。這里僅作為一個(gè)測試使用,具體的實(shí)際開發(fā)、應(yīng)用場景都是類似。
首先需要知道的是我拉取的代碼的位置,shigen
電腦上的位置是這樣的:
/Users/xxxx/.jenkins/workspace/wx-develop
shell腳本
shigen
的腳本是這樣的。首先就是通過maven
對代碼進(jìn)行編譯和打包,之后用docker
將java 服務(wù)的jar打包進(jìn)容器,生成的容器推到harbor
,本地運(yùn)行。
#!/bin/bash
# jenkins shell script to deploy the java project
echo '------start deployment--------'
echo "java -version && mvn -version"
mvn clean install -DskipTests
DATE="$(date +%y%m%d-%H%M%S)"
APP_NAME="wx-xxxxx"
APP_PORT="80"
HARBOR_DOMIAN="xxxxxxxx"
TAG="$APP_NAME:$DATE"
docker build -t $TAG -f Dockerfile .
docker login $HARBOR_DOMIAN
NEW_TAG="$HARBOR_DOMIAN/xxxx/$TAG"
docker tag $TAG $NEW_TAG
docker push $NEW_TAG
echo "$TAG uploaded successfully"
docker run -d --name $APP_NAME-$DATE -p $APP_PORT:$APP_PORT $NEW_TAG
echo "Successfully started"
具體的配置如下:
點(diǎn)擊build now
會出現(xiàn)一個(gè)新的任務(wù):
具體的日志是這樣的:
本地和harbor
上也確實(shí)有這個(gè)服務(wù)和鏡像的存在,這里就不再做進(jìn)一步的驗(yàn)證了。
最后,總結(jié)一下jenkins
的自動化流程的步驟:
pipline流水線
參考文章:pipeline流水線文章來源:http://www.zghlxwxcb.cn/news/detail-650394.html
以上就是shigen
最近幾天學(xué)習(xí)的成果,關(guān)于CICD
流水線實(shí)戰(zhàn)的全部內(nèi)容。后期也會攻克k8s
,期待進(jìn)一步和大家分享。文章來源地址http://www.zghlxwxcb.cn/news/detail-650394.html
到了這里,關(guān)于CI/CD流水線實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!