CI/CD流水線實戰

不知道為什么,現在什么技術都想學,因為我覺得我遇到了技術的壁壘,大的項目接觸不到,做的項目一個字辣*。所以,整個人心浮氣躁,我已經得通過每天的騎行和長跑緩解這種浮躁了。一個周末,我再次宅在了家里,學習了一下CICD

先分享一下shigen的學習視頻資源:CICD流水線實戰

git

分布式版本控制器。gitlab可以創建私人的倉庫,github私有倉庫需要付費。

SVN 不推薦!不是噴它,技術的革新,新技術會解決老技術的各種問題。

由于SVN的集中式架構、對離線工作支持較差、分支和合并復雜以及缺乏現代化功能等原因,它已經不再被推薦作為主要的版本控制系統。 目前,Git已成為廣泛使用的分布式版本控制系統,并且具有更強大的功能和更好的性能。——來自chatGPT的總結

git原理

再多的概念都沒有一張圖來的實在和清晰:

git配置

~/.gitconfig會保存git的全局配置,可以在這里修改git用戶的信息,如name email

cat ~/.gitconfig

git在項目中

在項目的根路徑下也會存在.git文件夾,里邊也有一個config文件,存儲的是當前的項目配置。

查看配置信息

git config --list

設置

通常用來配置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'

執行命令,就是這樣的,是不是很清晰明了:

shigen更推薦tig。直接在mac上執行brew install tig即可。

效果非常的炫酷、友好,可以直接在控制臺查看文件的改動。

常用的命令

雖然圖像化的操作工具如我常用的idea ugit等都能很好的滿足日常所需,但是:底層的原理還是得了解一下。想想,萬一只有終端操作咋辦。

  • 初始化
git init
  • 文件添加到暫存
git add xxx
  • 提交
git commit -m 'msg'
  • 查看日志
git log
  • 暫存區狀態
git status
  • 當前文件與上次提交的差別
git diff
  • 回到某個版本
git reset --hard xxxx
  • 從本地push到主分支

一般的公司,master分支可是不允許直接push代碼的,這里只是一個例子哈。

git push -u origin master

gitlab

安裝

發現直接安裝會有問題,如:找不到鏡像源。嘗試使用docker安裝,發現云服務器的內存不夠用,安裝的腳本如下:

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-ceecho '訪問81端口'

參考文章:Gitlab----使用Docker方式安裝部署Gitlab

感興趣的可以看看在M1芯片的電腦上如何的安裝:如何在M1的Mac上搭建gitlab

特色:添加用戶、使用郵箱、代碼合并

Nexus3

maven的倉庫,私服。直接下載、解壓、啟動。和docker的harbor類似。

jenkins

  • 自動的構建
  • 易于安裝和配置
  • 分布式構建,多臺計算機一起構建
  • 支持的插件很多

容器化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的默認密碼:

cat /Users/xxxx/.jenkins/secrets/initialAdminPassword

按照教程下載推薦的插件、創建賬戶、使用默認的URL即可。

配置

  • 中文的配置

參考文章:jenkins設置中文

  • 全局工具的配置

Java的路徑:

/opt/homebrew/opt/openjdk@17/bin
  • 權限的劃分,需要使用到插件
  • 部署的過程推薦文章:Mac M1部署jenkins

本地新建項目并上傳gitee

git commit -m "first commit"
git remote add origin https://gitee.com/shigen/wx-develop.git
git push -u origin "master"

jenkins的項目面板新建項目,具體的過程參見:jenkins+gitee實現代碼自動化部署

在腳本的實現部分,我手寫了一個,上傳到我自己的harbor。這里僅作為一個測試使用,具體的實際開發、應用場景都是類似。

首先需要知道的是我拉取的代碼的位置,shigen電腦上的位置是這樣的:

/Users/xxxx/.jenkins/workspace/wx-develop

shell腳本

shigen的腳本是這樣的。首先就是通過maven對代碼進行編譯和打包,之后用docker將java 服務的jar打包進容器,生成的容器推到harbor,本地運行。

#!/bin/bash
# jenkins shell script to deploy the java projectecho '------start deployment--------'
echo "java -version && mvn -version"mvn clean install -DskipTestsDATE="$(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_DOMIANNEW_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_TAGecho "Successfully started"

具體的配置如下:

點擊build now會出現一個新的任務:

具體的日志是這樣的:

本地和harbor上也確實有這個服務和鏡像的存在,這里就不再做進一步的驗證了。

最后,總結一下jenkins的自動化流程的步驟:

pipline流水線

參考文章:pipeline流水線

以上就是shigen最近幾天學習的成果,關于CICD流水線實戰的全部內容。后期也會攻克k8s,期待進一步和大家分享。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39355.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39355.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s問題匯總

作者前言 本文章為記錄使用k8s遇到的問題和解決方法,文章持續更新中… 目錄 作者前言正常配置ingress,但是訪問錯誤添加工作節點報錯安裝k8s報錯使用kubectl命令報錯container沒有運行安裝會出現kubelet異常,無法識別刪除k8s集群訪問dashboa…

Docker安裝RabbitMQ單機版

Docker安裝RabbitMQ單機版 先安裝Docker服務&#xff0c;可參考安裝Docker及學習 編寫rabbitmq-composefile.yml文件 這里以rabbitmq 3.11.16 版本為例 cat << \EOF > /opt/rabbitmq-composefile.yml version: 3 services:rabbitmq:image: rabbitmq:3.10.0-managem…

【Apollo】推動創新:探索阿波羅自動駕駛的進步(含安裝 Apollo的詳細教程)

前言 Apollo (阿波羅)是一個開放的、完整的、安全的平臺&#xff0c;將幫助汽車行業及自動駕駛領域的合作伙伴結合車輛和硬件系統&#xff0c;快速搭建一套屬于自己的自動駕駛系統。 開放能力、共享資源、加速創新、持續共贏是 Apollo 開放平臺的口號。百度把自己所擁有的強大、…

【密碼學】維京密碼

維京密碼 瑞典羅特布魯納巨石上的圖案看起來毫無意義&#xff0c;但是它確實是一種維京密碼。如果我們注意到每組圖案中長筆畫和短筆畫的數量&#xff0c;將得到一組數字2、4、2、3、3、5、2、3、3、6、3、5。組合配對得到24、23、35、23、36、35。現在考慮如圖1.4所示的內容&a…

【變形金剛03】使用 Pytorch 開始構建transformer

一、說明 在本教程中&#xff0c;我們將使用 PyTorch 從頭開始構建一個基本的轉換器模型。Vaswani等人在論文“注意力是你所需要的一切”中引入的Transformer模型是一種深度學習架構&#xff0c;專為序列到序列任務而設計&#xff0c;例如機器翻譯和文本摘要。它基于自我注意機…

iOS Epub閱讀器改造記錄

六個月前在這個YHEpubDemo閱讀器的基礎上做了一些優化&#xff0c;這里做一下記錄。 1.首行縮進修復 由于分頁的存在&#xff0c;新的一頁的首行可能是新的一行&#xff0c;則應該縮進&#xff1b;也可能是前面一頁段落的延續&#xff0c;這時候不應該縮進。YHEpubDemo基于XDS…

pycharm,VSCode 幾個好用的插件

pycharm Tabnine AI Code 可以在編寫程序的時候為你提供一些快捷方式&#xff0c;增加編程速度 Chinese 對英文不好的程序員來說是個不錯的選擇&#xff0c;可以將英文狀態下的pycharm變為中文版的 ChatGPT 可以跟ai聊天&#xff0c;ai可以解決你80%的問題 &#xff0c;也可以幫…

變形金剛:從零開始【01/2】

一、說明 在我們的日常生活中&#xff0c;無論你是否是數據科學家&#xff0c;你都在單向地使用變壓器模型。例如。如果您使用的是 ChatGPT 或 GPT-4 或任何 GPT&#xff0c;那么在為您回答問題的框中是變壓器的一部分。如果您是數據科學家或數據分析師&#xff0c;則可能正在使…

【BASH】回顧與知識點梳理(二十九)

【BASH】回顧與知識點梳理 二十九 二十九. 進程和工作管理29.1 什么是進程 (process)進程與程序 (process & program)子進程與父進程&#xff1a;fork and exec&#xff1a;進程呼叫的流程系統或網絡服務&#xff1a;常駐在內存的進程 29.2 Linux 的多人多任務環境多人環境…

SAP MM學習筆記23-購買發注的賬戶分配類型(勘定Category)

SAP中控制財務憑證過賬科目的是 賬號分配類型&#xff08;勘定Category&#xff09;欄目。 ?賬號分配類型&#xff08;勘定Category&#xff09;有&#xff1a; 1&#xff0c;K 原價Center&#xff08;成本中心。用于消耗物料采購 的過賬&#xff09; 2&#xff0c;E 得意先…

【云原生之Docker實戰】使用Docker部署Syncthing同步程序及基本使用

【云原生之Docker實戰】使用Docker部署Syncthing同步程序及基本使用 一、Syncthing介紹1.1 Syncthing簡介1.2 Syncthing特點1.3 備份和同步區別二、本地環境介紹2.1 本地環境規劃2.2 本次實踐介紹三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker comp…

LabVIEW對并行機器人結構進行建模仿真

LabVIEW對并行機器人結構進行建模仿真 為了對復雜機器人結構的數學模型進行建模、搜索、動畫和驗證&#xff0c;在工業機器人動態行為實驗室中&#xff0c;設計并實現了具有五個自由度的單臂型機器人。在研究臺上可以區分以下元素&#xff1a;帶有直流電機和編碼器的機器人;穩…

nvm管理node版本

nvm是什么&#xff1f; NVM全名叫做 nodejs version manage,即Node的版本管理工具。 使用NVM&#xff0c;可以通過命令很方便地在多個NodeJS版本之間進行切換。 nvm的下載與安裝 下載地址&#xff1a;Releases coreybutler/nvm-windows (github.com) windows系統下載nvm-setup…

Arcgis中直接通過sde更新sqlserver空間數據庫失敗

問題 背景 不知道有沒有人經歷過這樣一個情況,我們直接在Arcgis中通過sde更新serserver數據庫會失敗,就是雖然在sde更新sqlserver數據庫,但是在Navicat中通過sql語句來查詢,發現數據并沒有更新,如:上圖中,更新數據庫后,第一張圖是sde打開的sqlserver數據庫,它的數據庫…

項目管理工具和方法有哪些:了解項目管理的必備工具和有效方法

先談談什么是項目管理&#xff0c;簡單直白&#xff0c;就是對項目進行管理。項目管理涉及有效的計劃和對工作的系統管理&#xff0c;但很多工具可以使項目管理更有效、更高效。比如&#xff0c;Zoho Projects項目管理工具。 1.項目合理拆解 當確定了項目目標后&#xff0c;無疑…

我國農機自動駕駛系統需求日益增長,北斗系統賦能精準農業

中國現代農業的發展&#xff0c;離不開智能化、自動化設備&#xff0c;迫切需要自動駕駛系統與農用機械的密切結合。自動駕駛農機不僅能夠緩解勞動力短缺問題&#xff0c;提升勞作生產效率&#xff0c;同時還能對農業進行智慧化升級&#xff0c;成為解決當下農業痛點的有效手段…

Pycharm社區版連接WSL2中的Mysql8.*

當前時間2023.08.13&#xff0c;Windows11中默認的WSL版本已經是2了&#xff0c;在WSL2中默認的Ubuntu版本已經是22.04&#xff0c;而Ubuntu22.04中默認的Mysql版本已經是8.*。 Wsl 2 中安裝mysql WSL2中安裝Mysql的方法參考自微軟官方文檔【開始使用適用于 Linux 的 Windows …

vector【2】模擬實現(超詳解哦)

vector 引言&#xff08;實現概述&#xff09;接口實現詳解默認成員函數構造函數析構函數賦值重載 迭代器容量size與capacityreserveresizeempty 元素訪問數據修改inserterasepush_back與pop_backswap 模擬實現源碼概覽總結 引言&#xff08;實現概述&#xff09; 在前面&…

分布式定時任務系列5:XXL-job中blockingQueue的應用

傳送門 分布式定時任務系列1&#xff1a;XXL-job安裝 分布式定時任務系列2&#xff1a;XXL-job使用 分布式定時任務系列3&#xff1a;任務執行引擎設計 分布式定時任務系列4&#xff1a;任務執行引擎設計續 Java并發編程實戰1&#xff1a;java中的阻塞隊列 引子 這篇文章的…

MATLAB計算一組坐標點的相互距離(pdist、squareform、pdist2函數)

如果有一組坐標P(X,Y)&#xff0c;包含多個點的X和Y坐標&#xff0c;計算其坐標點之間的相互距離 一、坐標點 P[1 1;5 2;3 6;8 8;4 5;5 1; 6 9];二、pdist函數 輸出的結果是一維數組&#xff0c;獲得任意兩個坐標之間的距離&#xff0c;但沒有對應關系 Dpdist(P)三、square…