Gitlab簡單使用CI/CD

開篇語

大概是去年就想做這個事情了,奈何當時卡到一個docker命令找不到的問題上,導致文章難產了,墨跡了這么久,終于又有空來搗鼓它了。

目的

我們要實現的目的是我本地不斷提交代碼(CI),然后服務器不斷進行部署(CD)的一個簡單流程。

準備

在進行簡單的gtlab的ci/cd之前,我們需要安裝gitlab軟件,這個可以看之前的文章。

本文環境:

服務器A:使用docker部署了gitlab

服務器B:已經安裝了docker、注冊了gitlab-runner用來部署服務

在centos一鍵安裝docker以及docker-compose的腳本

#!/bin/bashecho?-e?"\033[33m?install?docker?sh?\033[0m"#?設置yum源
echo?-e?"\033[33m?Set?the?yum?source?\033[0m"
sudo?yum?-y?install?yum-utils
sudo?yum-config-manager?--add-repo?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#yum包更新到最新
echo?-e?"\033[33m?update?version?\033[0m"
sudo?yum?update?-y#安裝Docker最新版
echo?-e?"\033[33m?install?docker-ce?\033[0m"
sudo?yum?install?docker-ce?-y#設置Docker自啟動
echo?-e?"\033[33m?setting?self-turn-on?\033[0m"
sudo?systemctl?enable??docker#啟動Docker
echo?-e?"\033[33m?start?docker?\033[0m"
sudo?systemctl?start?docker#配置國內鏡像?/etc/docker/daemon.json
echo?-e?"\033[33m?Set?up?aliyuncs?mirror?\033[0m"
sudo?tee?/etc/docker/daemon.json?<<-'EOF'
{"registry-mirrors":?["https://docker.mirrors.ustc.edu.cn"]
}
EOF
#加載配置文件,ReStart
sudo?systemctl?daemon-reload
sudo?systemctl?restart?docker#安裝docker-compose,最新版本需要手動查詢一下
echo?-e?"\033[33m?install?docker-compose?\033[0m"
sudo?curl?-L?https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname?-s`-`uname?-m`?-o?/usr/local/bin/docker-compose
sudo?chmod?+x?/usr/local/bin/docker-compose

部署gitlab的yaml腳本

version:?'3'services:gitlab:?#gitlabimage:?gitlab/gitlab-cecontainer_name:?'gitlab'restart:?alwaysenvironment:GITLAB_OMNIBUS_CONFIG:?|external_url?"http://172.18.231.92:9006"?#?web站點訪問地址gitlab_rails['gitlab_shell_ssh_port']?=?9022?#?設置shell?端口gitlab_rails['time_zone']?=?'Asia/Shanghai'?#?設置時區#?gitlab_rails['smtp_enable']?=?true#?gitlab_rails['smtp_address']?=?"smtp.exmail.qq.com"#?gitlab_rails['smtp_port']?=?465#?gitlab_rails['smtp_user_name']?=?"<your?qq?email>"#?gitlab_rails['smtp_password']?=?"xCcqh*L4jkqFCS"#?gitlab_rails['smtp_authentication']?=?"login"#?gitlab_rails['smtp_enable_starttls_auto']?=?true#?gitlab_rails['smtp_tls']?=?true#?gitlab_rails['gitlab_email_from']?=?'<your?qq?email>'#?gitlab_rails['smtp_domain']?=?"exmail.qq.com"ports:-?'9006:9006'-?'443:443'-?'9022:22'volumes:-?'/gitlab/config:/etc/gitlab'

安裝gitlab-runner

在要部署服務的服務器上安裝docker以及gitlab-runner,本次安裝直接安裝在服務器中,不使用docker安裝gitlab-runner,避免產生Dind(docker in docker)問題。

首先導入repository

curl?-L?https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh?|?sudo?bash
b19fca972b11cb6cfdfc1cae38b5d00c.png
img

安裝

yum?install?gitlab-runner?-y
a36f33e85c2791250fc835f89726baa1.png
img

注冊到gitlab

注冊群組Runner

首先我們要獲取注冊時候需要的信息,獲取地址在 http://172.18.231.92:9006/admin/runners

輸入命令進行注冊

gitlab-runner?register
8ef9117f2232b94e84fb9c944c9e2505.png
img

選擇執行者,這里我使用shell

執行者參考:https://docs.gitlab.com/runner/executors/index.html

到這里已經注冊成功了,就可以在gitlab中看到注冊的runner了

3166cbef884bb3d92c4e054177c25276.png
img

為倉庫設置單獨的Runner

使用該方案應該先看下一步去創建項目

在我們要部署的倉庫里面找到Runner配置信息(設置=>CI/CD)

2ceaa88c08ae615f23644aeebbb4079e.png
img

然后重復上面注冊的過程,詳細步驟如圖

65909ee9e56a9c8a4d547f7edc3572cd.png
img

然后就可以在倉庫的配置下可以看到我們注冊的東西

72f51482cac57858403e9ebca407de09.png
img

配置帳號

添加gitlab-runner用戶

sudo?adduser?gitlab-runner

將該用戶添加到docker組中

sudo?gpasswd?-a?gitlab-runner?docker

查看docker組是否已經添加用戶成功

cat?/etc/group?|grep?docker

驗證是否可以通過gitlab-runner訪問docker

sudo?-u?gitlab-runner?-H?docker?info

重啟docker容器服務

sudo?systemctl?restart?docker

給docker.sock設置權限

sudo?chmod?a+rw?/var/run/docker.sock
5c557ed1edb931950471bb3454c1b40a.png
img

創建項目

直接開始創建項目

f93e5c663bb819d37ec06fb43f2f938b.png
img

拉取項目并填充內容

a99632da082980ada95ae7608e4f0f70.png
img

拷貝一個簡單項目(https://gitee.com/AZRNG/my-example)提交到gitlab上

256219af6f2966e83ef325418befa4fe.png
img

配置流水線

在項目的根目錄下創建文件名為.gitlab-ci.yml的文件,用于進行打包部署。

#?.gitlab-ci.ymlstages:-?deploydeploy:stage:?deployscript:-?docker?-v-?cd?NetByDocker-?docker?build?-f?Dockerfile?-t?gitlabnetsample?../?-?docker?rm?-f?gitlabnetsample?&&??docker?run?--name?gitlabnetsample?-d?-p?8060:80?gitlabnetsample?#?remove?old,create?new?-?docker?ps?-atags:?-?net

提交推送代碼,然后在gitlab的CI/CD=>Pipeliners查看

dba6b20757bb5cb062be4386d48d303b.png
img

查看詳細信息

554b635a77b8595931647a32773344b6.png
img

部署成功,進入該服務器查看容器信息

02b39b01e4d6a7a063231ecc909f3c83.png
img

通過外部訪問服務:http://172.18.229.206:8060/swagger/index.html 成功顯示swagger界面,部署成功。

參考文檔

https://blog.csdn.net/qq_42799562/article/details/118179856

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

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

相關文章

AppleScript: Handler

AppleScript絕對是個奇葩的存在&#xff01;不管功能有多強大。 Handler有兩種&#xff0c;一種是和OC類似的使用Label參數&#xff0c;一種是和javascript類似的使用括號把一堆參數都放在里面的。 label參數的Handler的寫法非常奇怪&#xff0c;光看文檔絕對讓人迷糊。這里按照…

powershell 運行策略

Unrestricted 這是一種比較寬容的策略&#xff0c;允許運行未簽名的腳本。對于從網絡上下載的腳本&#xff0c;在運行前會進行安全性提示&#xff1a; Set-ExecutionPolicy UnRestricted

免費的數字圖書館_不僅是書籍:您當地圖書館可能提供的所有免費數字資料

免費的數字圖書館You might think of libraries as old fashioned, or irrelevant in the age of the internet. You’d be wrong. 您可能會認為圖書館是老式的&#xff0c;或者與互聯網時代無關。 你會錯的。 Modern libraries offer books, yes, but they also provide inter…

iNeuOS工業互聯網操作系統,腳本化實現設備運行時長和效率計算與統計

目 錄1. 概述... 22. 實時采集開停狀態... 23. 增加虛擬設備... 24. 腳本統計和計算設備運行時長... 45. 設備運行時長報表... 71. 概述有一個煤礦項目&#xff0c;使用iNeuOS系統時有一個需要是&#xff1a;要統計設備的運行時長&#xff0c…

webpack二(以webpack4.x起步)

一.基本安裝首先我們要創建一個目錄&#xff0c;初始化npm&#xff0c;以及在本地安裝webpack&#xff1a;復制代碼mkdir webpackapp && cd webpackapp復制代碼npm init -y復制代碼npm install --save-dev webapck復制代碼現在我們看一下我們創建的目錄以及目錄下的結構…

阿里云中間件是什么-阿里云中間件介紹

阿里云中間件是什么?這其實是一個比較虛的概念。廣義的中間件范圍很廣。起溝通作用的都可以認為是中間件。甚至ODBC這樣的東西你也可以認為是中間件。 使用了中間件之后&#xff0c;以前直接連接的前臺應用程序和數據庫之前就多了個中間件&#xff0c;現在前臺程序把請求發給…

C# 圖片、文件等加入Project Resources

一、目的 1.編譯后&#xff0c;只想有一個exe文件&#xff0c;不想外部文件引用&#xff0c;直接運行exe文件即可。 2.不會出現文件丟失情況。 二、操作 1.右擊project ->properties->Resource&#xff0c;左上角選擇Image&#xff08;或其他類型&#xff09; 2. 點擊…

jfinal使用shiro注解大體流程

2019獨角獸企業重金招聘Python工程師標準>>> 上一篇答題梳理了jfinal整合shiro的流程&#xff0c;jfinal讀取shiro注解&#xff0c;這一篇將作為補充。 1.JFinalShiroPlugin作者為shiro的RequiresRoles&#xff0c;RequiresPermissions&#xff0c; RequiresAuthent…

chrome 快捷鍵取消_如何使用鍵盤快捷鍵在Chrome和Firefox中固定和取消固定選項卡...

chrome 快捷鍵取消If you tend to open a lot of tabs in your browser, it can become difficult to find the tabs with your most used websites. Pinning tabs in your browser moves those tabs to the left and shrinks the tabs to only show the favicon, and you can …

.NET Conf China 2022參會指南速覽(內含超多福利)趕緊預約!???

12月充滿驚喜各種美好節日紛至沓來似在獎勵一年辛苦勞作的你12月的第一波福利.NET Conf China 承包啦立即掃碼預約加入.NET年度盛宴搶12月第一波驚喜&#xff01;.NET Conf China 2022 .NET Conf China 2022是面向開發人員的社區峰會&#xff0c;延續 .NET Conf 2022 的活動&a…

python導入模塊--案例

1 導入模塊 1.1 問題 本案例要求先編寫一個star模塊&#xff0c;主要要求如下&#xff1a; 建立工作目錄 ~/bin/創建模塊文件 ~/bin/star.py模塊中創建pstar函數&#xff0c;實現打印50個星號的功能然后練習導入模塊&#xff0c;調用模塊中的函數&#xff1a; 在交互解釋器中導…

css常用命名

常用的CSS命名 頭&#xff1a;header 內容&#xff1a;content/container 尾&#xff1a;footer 導航&#xff1a;nav 側欄&#xff1a;sidebar 欄目&#xff1a;column 頁面外圍控制整體佈局寬度&#xff1a;wrapper 左右中&#xff1a;left right center 登錄條&#xff1a;l…

***關于WP的郵件無法發送問題的總結(原創)

1.用FTP打開 /wp-include/class-smtp.php &#xff0c;最好是下載下來&#xff0c;搜索一下&#xff0c;查找到如下的代碼&#xff1a; $this->smtp_conn stream_socket_client($host . ":" . $port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_cont…

C# 簡單方式運行powershell文件/使用cmd命令運行ps1

一、目的、構想 1.C# winfrom編譯的tool 運行一個powershell文件。 2.只需要運行即可&#xff0c;不需要返回值。 3.網上部分資料需要額外添加dll。 3.已經有cmd執行命令的函數&#xff0c;能否直接在cmd運行&#xff1f; 4.在cmd黑色窗口輸入powershell 能進入powershell…

?.Net 7 AOT 徹底解析下(完結篇)

楔子&#xff1a;本篇是承繼前面三篇文章而來&#xff0c;分別為&#xff1a;.Net 7 的 AOT 和 CLR有什么區別&#xff1f;.Net 7 的 R2R,Crossgen2是什么?.Net 7 的AOT原理簡析通過以上三篇的基礎&#xff0c;本篇來徹底解析下AOT這門技術的底層原理。AOT此終&#xff0c;不再…

cmd暫停快捷鍵_是否有鍵盤快捷鍵可以暫停正在運行的CMD窗口的輸出?

cmd暫停快捷鍵When running a batch script, you may need or want to pause the output in the CMD window so that you can look things over. Is there an easy way to pause, then restart the output? Today’s SuperUser Q&A post has the answer to help with a re…

bash快捷鍵

Ctrl h &#xff1a;回退一個字符Ctrl f &#xff1a;光標前進一個字符Ctrl b &#xff1a;光標后退一個字符Ctrl w &#xff1a;刪除光標之前的一個字符串&#xff08;進入剪切板&#xff09;Ctrl u &#xff1a;刪除光標前的所有字符 &#xff08;進入剪切板&#xff09…

J - 青蛙的約會(擴展歐幾里得)

https://vjudge.net/contest/218366#problem/J 第一步追及公式要寫對&#xff1a;ynk-(xmk)pL > (n-m)klpx-y 可以看出擴展歐幾里得原型&#xff0c;這里注意擴展歐幾里得求出的是任意解&#xff0c;非最優&#xff0c;要推出最小解k。 (n-m)xlygcd > (n-m)(x*(x-y)/gcd)…

C# 簡單方式解壓Zip文件/使用VS2019自帶功能

一、目的、構想 1.直接解壓zip文檔。 2.網上資料不少需要外部dll。 3. 找到可以不需要外部dll方法&#xff0c;分享。 二、code實現 using System.IO.Compression;string filePath "c:\Server\fileList"; string zipPath "C:\Server\Download\Auto.zip&quo…

在 Docker 中使用 flannel - 每天5分鐘玩轉 Docker 容器技術(60)

上一節我們安裝和配置了 flannel&#xff0c;本節在 Docker 中使用 flannel。配置 Docker 連接 flannel編輯 host1 的 Docker 配置文件 /etc/systemd/system/docker.service&#xff0c;設置 --bip 和 --mtu。這兩個參數的值必須與 /run/flannel/subnet.env 中 FLANNEL_SUBNET …