日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

network setup service启动后自动停止_一个简单的测试环境下的自动化部署方案

發(fā)布時(shí)間:2025/4/16 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 network setup service启动后自动停止_一个简单的测试环境下的自动化部署方案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

筆者是公司是一個(gè)分前后端開發(fā)的公司。而筆者是一個(gè)普通的后端開發(fā)工程師。在和前端工程師協(xié)同開發(fā)時(shí),為了給前端工程師提供接口,往往要將寫好的代碼交付并部署到測(cè)試環(huán)境。因而這導(dǎo)致筆者經(jīng)常需要打包項(xiàng)目更新到測(cè)試環(huán)境。這種情況十分煩人,因而筆者想了這套簡(jiǎn)單的方案來解決這個(gè)問題。

方案思路

1、采用分支管理更完善的Git進(jìn)行代碼管理,以不同分支版本作為不同環(huán)境的構(gòu)建版本

舉例:
master 分支作為生產(chǎn)環(huán)境的構(gòu)建版本
test 分支作為測(cè)試環(huán)境的構(gòu)建版本
dev 分支作為日常開發(fā)(包含未過debug)的代碼存儲(chǔ)管理

2、使用自動(dòng)化構(gòu)建工具,在不同環(huán)境下獲取不同分支的代碼進(jìn)程構(gòu)建運(yùn)行

筆者實(shí)例

1、使用開源的Gitea作為代碼倉庫管理

由于大部分公司都不愿意將代碼放至網(wǎng)上(即使是私有倉),因此這里使用開源的Gitea項(xiàng)目部署在測(cè)試環(huán)境上

2、編寫一個(gè)極為簡(jiǎn)單的自動(dòng)化構(gòu)建工具部署到測(cè)試服務(wù)器上

由于測(cè)試環(huán)境都是些低配服務(wù)器,為了節(jié)省資源,存放更多的應(yīng)用到服務(wù)器中。因此筆者棄用市面上的大型自動(dòng)化構(gòu)建工具,而去使用golang編寫一個(gè)極其簡(jiǎn)單的自動(dòng)化構(gòu)建工具
筆者的工具開源連接http://github.com/lroyia/goauto

模擬實(shí)操

以上方案在window及l(fā)inux下均可用,下文以CentOS服務(wù)器為例。請(qǐng)按照自己的服務(wù)器操作系統(tǒng)類型酌情修改

1、下載Gitea

前往Gitea官方下載Gitea,并根據(jù)官方文檔安裝。以下使用1.12.4版本為例

12wget -O gitea https://dl.gitea.io/gitea/1.12.4/gitea-1.12.4-linux-amd64
chmod +x gitea

2、安裝數(shù)據(jù)庫以支撐Gitea

Gitea支持SQLite,MySQL,PostgreSQL和MSSQL,這里以PostgreSQL作為例。其他數(shù)據(jù)庫請(qǐng)自行根據(jù)官方文檔進(jìn)行配置

修改postgresql.conf,將加密方式改為sha

1password_encryption = scram-sha-256

轉(zhuǎn)至postgres用戶,并用CLI登錄PG

12su postgres
pgsql

創(chuàng)建數(shù)據(jù)庫用戶

1CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';

創(chuàng)建數(shù)據(jù)庫

12CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
\q --退出CLI

修改pg_hba.conf,授權(quán)登錄

本地登錄:

1local giteadb gitea scram-sha-256

遠(yuǎn)程登錄:

1host giteadb gitea 192.168.6.11/24 scram-sha-256

做完以上配置后重啟服務(wù)或重載配置

3、初始化Gitea并構(gòu)建服務(wù)

命令行執(zhí)行

1./gitea web

打開瀏覽器,訪問服務(wù)器3000的端口訪問Gitea頁面

隨意點(diǎn)擊頂部bar上的任意按鈕,即可進(jìn)入初始化的install頁面。按照自己的需要配置好后,在服務(wù)器上gitea的同一目錄下就會(huì)多出一個(gè)custom目錄。用于記錄配置的app.ini文件就在該目錄下的conf目錄里。

接著構(gòu)建服務(wù)。ctrl + c取消剛剛運(yùn)行的gitea進(jìn)程,然后服務(wù)器運(yùn)行

1sudo vim /etc/systemd/system/gitea.service

拷貝示例代碼gitea.service按照自己的需求取消注釋及修改

示例:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service requirements
###
#
#Requires=mysql.service
#Requires=mariadb.service
#Requires=postgresql-11.service
#Requires=memcached.service
#Requires=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=root
#Group=git
WorkingDirectory=/usr/local/gitea/gitea-repositories
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#RuntimeDirectory=gitea
ExecStart=/usr/local/gitea/bin/gitea web --config /usr/local/gitea/custom/conf/app.ini
Restart=on-abort
[Install]
WantedBy=multi-user.target

激活gitea.service并將它作為系統(tǒng)自啟動(dòng)服務(wù):

12sudo systemctl enable gitea
sudo systemctl start gitea

啟動(dòng)服務(wù)后,瀏覽器訪問Gitea的頁面,注冊(cè)賬號(hào)并登陸。

以下操作為項(xiàng)目示例:

點(diǎn)擊界面右上角的+號(hào),創(chuàng)建一個(gè)demo倉庫

進(jìn)入http://start.spring.io/創(chuàng)建一個(gè)springboot的demo項(xiàng)目

在demo項(xiàng)目中加入一個(gè)controller,使其返回一個(gè)hello

在倉庫首頁點(diǎn)擊按鈕,復(fù)制克隆路徑

命令行運(yùn)行

1git clone http://192.168.6.11:3000/lroyia/springboot-example.git

拉取倉庫后將demo項(xiàng)目中的.git去掉,并將其他文件全部拉到拉取的倉庫目錄下

命令行進(jìn)入倉庫目錄,并執(zhí)行命令推送所有代碼

123git add . # 將當(dāng)前目錄下所有文件(沒有被.ignore排除的文件)列入提交選項(xiàng)
git commit -m 'init' # 將所有文件提交到本地倉庫,提交消息問'init'
git push # 將本地倉庫的更改推送到遠(yuǎn)程倉庫

回到瀏覽器的gitea頁面,點(diǎn)擊當(dāng)前分支的下拉列表,輸入新標(biāo)簽名,從當(dāng)前分支的節(jié)點(diǎn)創(chuàng)建新分支(這里創(chuàng)建test分支和dev分支)

構(gòu)建服務(wù)器上運(yùn)行

1git config --global credential.helper store

保證git在輸入一次帳號(hào)密碼后不再需要輸入帳號(hào)密碼,然后拉取倉庫并檢出test分支

123git clone http://192.168.6.11:3000/lroyia/springboot-example.git
git checkout test
git pull # 為了調(diào)出帳號(hào)驗(yàn)證,多調(diào)用一次pull

給服務(wù)器安裝golang環(huán)境,拉取博主的自動(dòng)化程序代碼,并構(gòu)建

123git clone https://github.com/lroyia/goauto.git # clone code
cd goauto # cd dir
go build # build

修改里面的conf.ini,配置demo項(xiàng)目的部署信息:

1234567891011[conf]
sleep=10 # 輪詢檢查倉庫新增的休眠時(shí)間

[dir]
boot=/usr/local/springboot-example # 項(xiàng)目倉庫拉取目錄

[branch]
boot=test # 監(jiān)聽的分支

[script]
boot=mvn package -Dmaven.test.skip=true | java -jar target/springboot-example-0.0.1-SNAPSHOT.jar # 構(gòu)建腳本“|”分開,最后一個(gè)默認(rèn)為運(yùn)行腳本

最后啟動(dòng)運(yùn)行./goauto啟動(dòng),linux下如果需要關(guān)系運(yùn)行,可使用以下命令掛起運(yùn)行

1nohup ./goauto >日志文件名.log 2>&1 &

以上便是這個(gè)方案的全部示例搭建過程

改進(jìn)方案

在這個(gè)方案中,其實(shí)我們?cè)跇?gòu)建部分再獨(dú)立一個(gè)程序出來做這一步驟。構(gòu)建后通過Docker存儲(chǔ)Artifacts,再通過程序調(diào)用Docker獲取對(duì)應(yīng)Artifacts重新部署。這樣可以避免由編譯構(gòu)建時(shí)間引起的服務(wù)真空期。但公司大部分服務(wù)器都是Windows服務(wù)器,Docker在Windows以及虛擬機(jī)中部署的坑多,就不考慮這個(gè)改進(jìn)方案了,以后有機(jī)會(huì)在看著辦。

總結(jié)

以上是生活随笔為你收集整理的network setup service启动后自动停止_一个简单的测试环境下的自动化部署方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。