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