什么是CI,什么是CD
CI和CD是軟件開發(fā)中持續(xù)集成和持續(xù)交付的縮寫。
CI代表持續(xù)集成(Continuous Integration),是一種實踐,旨在通過自動化構(gòu)建、測試和代碼靜態(tài)分析等過程,頻繁地將代碼變更合并到共享存儲庫中。其目的是快速發(fā)現(xiàn)和修復(fù)代碼問題,確保開發(fā)團隊對軟件產(chǎn)品持續(xù)交付。其中,持續(xù)指的是在整個開發(fā)周期中經(jīng)常性地進行集成。
CD代表持續(xù)交付(Continuous Delivery)和持續(xù)部署(Continuous Deployment)。持續(xù)交付是一種實踐,它將 CI 的結(jié)果自動發(fā)布到一個暫存區(qū)域中,等待進一步的人工測試和批準,然后再將其發(fā)布到生產(chǎn)環(huán)境中。而持續(xù)部署則是將所有 CI 和 CD 步驟無縫集成在一起,以自動化地發(fā)布代碼到生產(chǎn)環(huán)境中。
持續(xù)流程
- 代碼管理。開發(fā)人員使用版本控制系統(tǒng)(如Git)管理主干代碼庫和分支代碼庫。
- 觸發(fā)構(gòu)建。當代碼庫中有新的變更提交時,持續(xù)集成服務(wù)器會自動觸發(fā)構(gòu)建過程。這個過程可以由代碼倉庫的hook機制,在代碼被commit/push到遠端時調(diào)用。也可以通過定時方式來進行構(gòu)建操作,以便于定期更新構(gòu)建結(jié)果。
- 自動化構(gòu)建。持續(xù)集成服務(wù)器會自動從代碼庫拉取最新代碼,并執(zhí)行構(gòu)建腳本。構(gòu)建腳本的具體內(nèi)容包括代碼編譯、打包、部署等操作,具體的腳本內(nèi)容是根據(jù)不同項目的需求而定。
- 代碼靜態(tài)分析。在構(gòu)建過程中,持續(xù)集成服務(wù)器還會執(zhí)行代碼靜態(tài)分析以檢查潛在的代碼錯誤、安全漏洞等問題。
- 單元測試和集成測試。接下來進行單元測試和集成測試,主要是驗證從新提交的代碼與已有代碼庫的兼容性和正確性。
- 報告反饋。持續(xù)集成服務(wù)器會將構(gòu)建過程中的錯誤、測試結(jié)果以及代碼指標(如代碼覆蓋率、靜態(tài)分析結(jié)果等)呈現(xiàn)到一個易于閱讀的報告中,這些報告可以使團隊更好地了解開發(fā)過程中出現(xiàn)的問題。
-
部署操作。如果構(gòu)建,測試和分析都成功完成,則可以將最新代碼部署到生產(chǎn)環(huán)境或其他目標環(huán)境中。
總之,持續(xù)集成的流程可幫助團隊快速檢測代碼問題并進行修復(fù),減少代碼沖突時間和重復(fù)勞動,提高軟件交付質(zhì)量和效率。
持續(xù)部署方案:
使用第三方云產(chǎn)品:如阿里云的云效、騰訊云的CODING DevOps
1、騰訊云的CODING DevOps
2、阿里云
CI/CD云產(chǎn)品的使用
下面就以云效介紹為主,云效是阿里云提供的免費企業(yè)管理平臺,其中可用的應(yīng)用有項目協(xié)作、代碼倉庫、流水線管理、制品倉庫、測試管理
鏈接:https://accountid-devops.aliyun.com/
進入鏈接首次會讓新建企業(yè)(一般是管理員去創(chuàng)建企業(yè),成員只是跟據(jù)管理員發(fā)來的邀請鏈接加入),
以下重點介紹代碼管理、流水線、制品管理
代碼管理
代碼倉庫中重點介紹代碼檢測,就是對提交的代碼進行檢測,檢測不通過就不進行提交
檢測規(guī)則可以多選
配置好檢測方案后就可以進行檢測任務(wù)的創(chuàng)建了,就可以配置代碼倉庫的關(guān)聯(lián)觸發(fā)。也可以導(dǎo)入其他的代碼倉庫地址
流水線
流水線就是控制代碼自動化部署的配置,能實現(xiàn)CI/CD的持續(xù)集成發(fā)布的功能,在流水線中可以自動配置代碼的檢測
流水線部署方案選擇
在新建的流水線中可選部署的方案
選擇自己適用的部署方案,進行每個任務(wù)的編輯
配置流水線的源頭。
源頭可以分為現(xiàn)有的代碼倉庫的地址。和已經(jīng)有的制品源地址。也可以是某流水線的源頭
各流程具體編輯
代碼掃描
具體的命令參數(shù)和路徑,部署的主機信息
單元測試編輯
部署好單元測試的命令及測試報告文件的入口文件
構(gòu)建上傳
主機信息配置
制品管理
制品是向服務(wù)器發(fā)送的部署包,是壓縮文件的類型,方便文件傳輸,方便代碼的回滾和管理
自己部署 Gitlab+jenkins
jenkins概述:
Jenkins是一種開源的自動化服務(wù)器軟件,最初是Hudson項目的分支。它提供了構(gòu)建、測試和部署軟件項目的持續(xù)集成(CI)和持續(xù)交付(CD)功能。
Jenkins可以自動化執(zhí)行各種任務(wù),如構(gòu)建代碼、運行測試、檢查代碼質(zhì)量等。通過使用豐富的插件生態(tài)系統(tǒng),Jenkins能夠與許多其他工具和技術(shù)集成,包括Docker、Git、GitHub、SVN、Maven等等。
jenkins特點:
- 高度可擴展。Jenkins有一個強大的插件框架,使得用戶可以自由地選擇需要的功能并將其添加到Jenkins中。
- 易于設(shè)置和使用。Jenkins的安裝和配置非常簡單,并且有良好的文檔和社區(qū)支持。
- 自動化構(gòu)建和測試。Jenkins可以自動從版本控制庫中獲取代碼,進行編譯、構(gòu)建、測試和發(fā)布等操作。
- 安全性。Jenkins提供了一系列的安全功能來保護您的構(gòu)建環(huán)境和數(shù)據(jù),如用戶身份驗證、訪問控制等。
- 多平臺支持。Jenkins可以在Windows、Linux和Mac OS X等多個操作系統(tǒng)上運行。
gitlab概述:
GitLab是一個基于Git版本控制系統(tǒng)的、用于存儲和管理代碼的Web托管服務(wù)。它提供了代碼倉庫管理、問題追蹤、CI/CD等一系列軟件開發(fā)所需的功能。
gitlab特點:
- 完整的Git工作流程管理。GitLab自帶有完整的Git工作流程管理,可以方便地管理代碼庫的分支、合并、提交等操作。
- 內(nèi)置CI/CD功能。GitLab內(nèi)置了強大的CI/CD工具,可以讓用戶輕松地配置和管理持續(xù)集成和持續(xù)部署過程。
- 集成的項目管理。除了基本的Git操作以外,GitLab還包含了項目管理、問題跟蹤、Wiki、代碼審查、安全性掃描等功能,允許團隊更加高效地協(xié)同開發(fā)。
- 在線編輯器。GitLab帶有在線編輯器,允許您在瀏覽器中直接編輯文件,而無需在本地環(huán)境中安裝Git客戶端。
- 強化的安全性管理。GitLab提供了多重身份驗證(MFA)、LDAP、SAML、TFA等多種安全性管理方式,保證應(yīng)用程序和數(shù)據(jù)的安全性。
#配置阿里云倉庫
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo /etc/yum.repos.d/
yum install -y epel-release
#安裝gitlab所需組件
yum -y install curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python.x86_64
#默認,使用postfx發(fā)送郵件
systemctl enable postfix --now
#從本地下載gitlab包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
#或者配置yum倉庫
vim /etc/yum.repo.d/gitlab.repo
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
repo_gpgcheck=0
enabled=1
gpgcheck=0
yun -y install gitlab-ce
#我選擇的從本地下載,上傳
#解包
rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm
警告:gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm: 頭V4 RSA/SHA1 Signature, 密鑰 ID f27eab47: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:gitlab-ce-15.9.4-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-9
#安裝完成后修改訪問地址
vim /etc/gitlab/gitlab.rb
....
external_url 'http://192.168.100.10'
....
#修改完后重置gitlab(時間較長,5分鐘左右)
gitlab-ctl reconfigure
#到最后看到gitlab Reconfigured!就OK了
#瀏覽器訪問時內(nèi)存要大于4G,不然內(nèi)存不足會報501,另外注意防火墻規(guī)則
#初始密碼在/etc/gitlab/initial_root_password
cat /etc/gitlab/initial_root_password
[root@localhost ~]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: 0kevvItShgNxHYdvPywLB1hBDTtidJf7TWAlXvymKkU=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
Password后邊的是初始密碼
#初始化密碼
gitlab-rake "gitlab:password:reset[root]"
[root@localhost bin]# gitlab-rake "gitlab:password:reset[root]"
Enter password:
Confirm password:
Password successfully updated for user with username root.
#密碼必須8個以上的字符,最好為字母+數(shù)字
or
# 進入控制臺
gitlab-rails console -e production
# 查詢id為1的用戶,id為1的用戶是超級管理員
user = User.where(id:1).first
# 修改密碼為lyh20030930
user.password='lyh20030930'
user.password_confirmation = 'lyh20030930'
# 保存
user.save!
#退出
exit
局部漢化文章來源:http://www.zghlxwxcb.cn/news/detail-827890.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-827890.html
到了這里,關(guān)于CI/CD部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!