GitLab倉庫
簡單的來說就是開發人員提交代碼的倉庫,用于團隊開發,GitLab 上托管的倉庫通常作為遠程倉庫使用,開發人員可以將本地的 Git 倉庫推送到
GitLab 上,也可以從 GitLab 克隆倉庫到本地進行開發。
Jenkins
Jenkins 是一個開源的自動化服務器,廣泛用于持續集成(Continuous Integration,
CI)和持續交付(Continuous Delivery,
CD)流程中。它幫助開發者自動化軟件開發周期中的不同階段,如構建、測試和部署應用程序。通過
Jenkins,團隊可以更快地發現并解決代碼中的問題,提高軟件的質量和效率。
部署環境介紹:
Centos 8.2
gitlab-ce-18.1.5-ce.0.el8.x86_64
jenkins-2.512
一、部署GitLab
下載地址:https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/8/gitlab-ce-18.1.5-ce.0.el8.x86_64.rpm
#安裝git
yum -y install git#安裝gitlab
wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/8/gitlab-ce-18.1.5-ce.0.el8.x86_64.rpm/download.rpm
yum -y install download.rpm ##修改配置文件 external_url
vim /etc/gitlab/gitlab.rb
external_url 'http://172.16.33.100'#加載配置文件
gitlab-ctl reconfigure
最后看到gitlab Reconfigured!代表配置成功#啟動GitLab
gitlab-ctl start
ok: run: alertmanager: (pid 6878) 124s
ok: run: gitaly: (pid 6831) 128s
ok: run: gitlab-exporter: (pid 6847) 127s
ok: run: gitlab-kas: (pid 6247) 301s
ok: run: gitlab-workhorse: (pid 6800) 129s
ok: run: logrotate: (pid 5954) 336s
ok: run: nginx: (pid 6819) 128s
ok: run: node-exporter: (pid 6840) 128s
ok: run: postgres-exporter: (pid 6890) 123s
ok: run: postgresql: (pid 6082) 307s
ok: run: prometheus: (pid 6859) 126s
ok: run: puma: (pid 6313) 209s
ok: run: redis: (pid 5989) 330s
ok: run: redis-exporter: (pid 6850) 126s
ok: run: sidekiq: (pid 6330) 203s#查看狀態
gitlab-ctl status#默認賬戶 root 密碼去配置文件找
cat /etc/gitlab/initial_root_password |grep Password
# 2. Password hasn't been changed manually, either via UI or via command line.
Password: BsYT7SMWB8l7u9saBsvFsWmS4cnL9bH8fXcmW0R8Q7A=
可以登錄圖形化界面修改為中文并修改密碼
http://172.16.33.100/
新建項目
二、部署Jenkins
1、安裝JDK17
wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
mkdir /usr/java
tar -xf jdk-17.0.12_linux-x64_bin.tar.gz
mv jdk-17.0.12 /usr/java#配置環境變量
vim /etc/profile
export JAVA_HOME=/usr/java/jdk-17.0.12
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile
java --version
java 17.0.12 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
2、安裝jenkins
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.512-1.1.noarch.rpm
yum install -y jenkins-2.512-1.1.noarch.rpm -y#安裝字體包,否則會報錯Fontconfig head is null
yum install -y fontconfig dejavu-sans-fonts
fc-cache -f -v#在啟動配置文件配置jdk地址,由于部署gitlab和jenkins是同一臺服務器,已使用了8080端口,jenkins更改為8081
vim /usr/lib/systemd/system/jenkins.service
Environment="JAVA_HOME=/usr/java/jdk-17.0.12"
Environment="PATH$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="JENKINS_PORT=8081"#啟動
systemctl start jenkins
#開機自啟
systemctl enable jenkins#cat /var/lib/jenkins/secrets/initialAdminPassword
92422d179ede45f1a47398fedf99b444
瀏覽器訪問http://172.16.33.100:8081/
至此,Jenkins安裝完成!
三、使用Jenkins構建項目
在 Jenkins 上生成 非對稱密鑰,Jenkins 存儲私鑰,GitLab 存儲公鑰。 公鑰解密,私鑰加密 的方式實現 權限校驗 功能。
當 GitLab 能成功解密就證明我們有權限訪問數據, 然后就能成功拉取代碼。 這里以 GitLab 作為列舉說明,實際上
GitHub、Gitee、Gitea 等實現 CICD 過程差不多,這里就不過多贅述。
為了模擬真實的前后端項目構建,所以這里采用將 若依框架 進行學習,將代碼拷貝到對應的倉庫中
我們這里模擬企業開發的代碼不開源狀態,所以這里創建的是私密倉庫,然后配置 憑證 拉取代碼
服務器說明
gitlab+jenkins:172.16.33.100
運行project:172.16.33.101
1、創建項目倉庫
#克隆項目
git clone https://gitee.com/y_project/RuoYi-Vue.git#移除現有的遠程 URL
cd RuoYi-Vue/
git remote remove origin#添加 GitLab 遠程倉庫 URL
git remote set-url origin http://root:nantianyw888@172.16.33.100/root/myproject#推送到 GitLab
git push -u origin master
2、安裝Maven
這個是用于構建項目使用的,如果項目采用的的是 gradle,則需要安裝 gradle
#下載 maven 壓縮包并解壓
wget -P /usr/local https://dlcdn.apache.org/maven/maven-3/3.8.9/binaries/apache-maven-3.8.9-bin.tar.gz --no-check-certificate
cd /usr/local/
tar -xf apache-maven-3.8.9-bin.tar.gz #配置阿里鏡像,注釋掉原先的倉庫,使用阿里倉庫
vim /usr/local/apache-maven-3.8.9/conf/settings.xml<!--<mirror><id>maven-default-http-blocker</id><mirrorOf>external:http:*</mirrorOf><name>Pseudo repository to mirror external repositories initially using HTTP.</name><url>http://0.0.0.0/</url><blocked>true</blocked></mirror></mirrors>--><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>#查看 maven 版本
/usr/local/apache-maven-3.8.9/bin/mvn -v
Apache Maven 3.8.9 (e26b057cc3a17459358ef53e4d0e2e381bf08a1c)
Maven home: /usr/local/apache-maven-3.8.9
Java version: 17.0.12, vendor: Oracle Corporation, runtime: /usr/java/jdk-17.0.12
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-193.el8.x86_64", arch: "amd64", family: "unix"
3、配置Git
git --version
git version 2.27.0#查看git位置
which git
/usr/bin/git#創建密鑰
# 設置名稱
git config --global user.name "Kamming"
# 設置郵箱
git config --global user.emial "Kamming@qq.com"
# 生成密鑰
ssh-keygen -t rsa -b 4096 -C "Kamming@qq.com"#查看公鑰,將公鑰 id_rsa.pub 里面的內容拷貝到 GitLab 的 sshKey 里面
cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCjI6pPnkq/05yipiasATfyjpkL7UsVS+WEyXyDPSkl2GwUD33pjhRPMsOOR5+Tfn75g9xl9ViY+xc8RQIWmZV2cHD6GHSP0OGhcKuQLG9s6hJ5aZwkWIqPMuaBgdmlfvesiTlKwTDX7+yEch1l3mkP8s0Jz4iK2ETOgwf/A/o4ou6znosuYGaUdBsYiEY9POPzUVDu25EDUUHSnhgMQfrEyqMW2L8RhhpIUAc6AonKh0ZnOVyG1gbXbyBlNLY/Hg1muDLPNuJBvWdIouxwxGFpUtdanbj4PFGWZR8YS2K2voZMLuDhumeR/yXn5O4wNZVDcHY03hVToNXgydOJ8+DUNr/HzQM5fXAd4LeU/PS8WAchu16yWdaLIqRKZyvjVRaiwZ/jHJX6upcIh5a7N+J5R0vp9lj1KTcuSsKtbkyOLWm7ixToDzky2ImtOvK5pyFwxHYmqSneATTUFra/pA7ltU/qiUYHcJXjwXJDAaO3pChGN/Ea4VN/XSnPLecFqsn9is8TMJLBZDqj8WRaSljCTvFRjcRwQSI5tj3F5czUEz3lxD0ryGuGsP0lWJeGwW4VT94Gvdp1FsW+6uohVWkitcrZ3XbCNY0DprKt0pg7Q+Z+Tc3pKBE9nG8ZriqOaYCXqy4pCh9lz2DLEXOvn/YH7Sq1Cku9H16dHcAwNslAlw== Kamming@qq.com