文章目录
1.安装gitlab,创建group、user和project并授权
# 安装
root@ubuntu-virtual-machine:/apps# dpkg -i gitlab-ce_16.4.3-ce.0_amd64.deb
root@ubuntu-virtual-machine:/apps# grep -v "#" /etc/gitlab/gitlab.rb | grep -v "^$"
external_url 'http://172.18.10.181'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "2521277651@qq.com"
gitlab_rails['smtp_password'] = "rfpopmmccmqheagc"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '2521277651@qq.com'
user["git_user_email"] = "2521277651@qq.com"
root@ubuntu-virtual-machine:/apps# gitlab-ctl reconfigure
# http://172.18.10.181/ 登录验证
创建group
创建用户
创建项目 选择群组
2.熟练git命令的基本使用,通过git命令实现源代码的clone、push等基本操作
# 克隆项目
root@ubuntu-virtual-machine:~/magedu-git# git clone http://172.18.10.181/magedu/order.git
Cloning into 'order'...
Username for 'http://172.18.10.181': magedu
Password for 'http://magedu@172.18.10.181':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
root@ubuntu-virtual-machine:~/magedu-git# ls
order
# 提交
root@ubuntu-virtual-machine:~/magedu-git/order# git add README.md
# 提交到工作区
root@ubuntu-virtual-machine:~/magedu-git/order# git commit -m "v2"
# 提交到仓库
root@ubuntu-virtual-machine:~/magedu-git/order# git push
# 验证
3.熟练掌握对gitlab服务的数据备份与恢复
# 数据备份
# 停止相关服务
root@ubuntu-virtual-machine:~/magedu-git/order# gitlab-ctl stop unicorn sidekiq
# 备份
root@ubuntu-virtual-machine:~# gitlab-rake gitlab:backup:create
root@ubuntu-virtual-machine:~# ls /var/opt/gitlab/backups
1701954363_2023_12_07_16.4.3_gitlab_backup.tar
#启动服务
root@ubuntu-virtual-machine:~# gitlab-ctl start unicorn sidekiq
# 删除数据
# 恢复数据
root@ubuntu-virtual-machine:~# gitlab-ctl stop unicorn sidekiq
# 恢复数据,指定备份文件
root@ubuntu-virtual-machine:~# gitlab-rake gitlab:backup:restore BACKUP=1701954363_2023_12_07_16.4.3
root@ubuntu-virtual-machine:~# gitlab-ctl start unicorn sidekiq
# 验证数据是否恢复
4.部署jenkins服务器
# 安装依赖
root@ubuntu-virtual-machine:~# apt install openjdk-11-jdk
# 下载二进制安装包
root@ubuntu-virtual-machine:/apps# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.414.3_all.deb
# 安装
root@ubuntu-virtual-machine:/apps# dpkg -i jenkins_2.414.3_all.deb && systemctl stop jenkins
root@ubuntu-virtual-machine:/apps# vim /etc/default/jenkins
JENKINS_USER=root
JENKINS_GROUP=root
User=root
Group=root
# 关闭跨站请求伪造保护(CSRF)保护
JAVA_ARGS="-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
root@ubuntu-virtual-machine:/apps# systemctl daemon-reload && systemctl restart jenkins.service
# 访问http://172.18.10.182:8080/
# 查看密码
root@ubuntu-virtual-machine:/apps# cat /var/lib/jenkins/secrets/initialAdminPassword
ec6d4492c5724ae09244f4b12e740932
5.掌握jenkins的插件在线安装及离线安装
在线安装插
离线安装
下载离线插件 http://updates.jenkins-ci.org/download/plugins/
6.实现基于脚本免秘钥clone代码并分发的目的web服务
# 生成密钥对 jenkins 172.18.10.182
root@ubuntu-virtual-machine:/data/scripts# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xtykluv6C9L6LU+LILzSzt3JFzLV0lvAKiuUfAcG094 root@ubuntu-virtual-machine
The key's randomart image is:
+---[RSA 3072]----+
| oo . |
| .+ o |
| . + o +.. |
| + +oE=o . |
| . . =S..o |
| . ..+o... |
| .o o.ooo. |
|...+ *.B.. |
| o+ o.B*B. |
+----[SHA256]-----+
# 私钥在jenkins服务器上,公钥放到gitlab上
root@ubuntu-virtual-machine:/data/scripts# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRFsoyBLRSaAr7U2yIxghrvd8cKpKluyGxmRSfjT/+mw5JekttprV3JCSzovYvs2nCIYCyz/kUdkPDTTKJvYjjwkJgH7l2IRX3EaD++IihmxmlsCJyMPJR6XLKPMChQl21JgkMofYXBiiJ4ooe6ttC0LQ8kQANCfdynOWkweo5kP5VkCtTP5vJLeddeYZ2FTw0HwHu/XaQhaeGZIahfKMwIfq9B52CV9AazmLR3ULvfCwtWA0rBMaao4jVFxkghFtIzwACSxLDhlEnKGGJEFH+hSfR7R1XHnCRRFZWhDcOfyNQ6qYzm99PeFAlcrNrsil0wd2n8bdZoZDxgjw974ZSM9RInTpPXEbhMlMQ8QMLmzr7Jnt9OGLgJ8eZglTASt9DHzuDu7BYtxAbYK1SBBQK82Vz6XwQSYimuwULYU2Plmn3D+3Wd1sB2m2QjH+G4meLv7beH69CdkvXu1Lh0B5ynTjaTtrKg5wt0pRI4Nq/rIWhQoeblkJq59DLbkKcITc= root@ubuntu-virtual-machine
# 配置gitlab ssh key
偏好设置-ssh秘钥-新建添加秘钥
# 克隆项目
root@ubuntu-virtual-machine:/data/scripts/gitlab# git clone git@172.18.10.181:magedu/order.git
# 安装nginx 172.18.10.200
root@ubuntu-virtual-machine:~# apt install -y nginx
root@ubuntu-virtual-machine:~# systemctl restart nginx
# 拷贝公钥到nginx主机
root@ubuntu-virtual-machine:~# ssh-copy-id 172.18.10.200
# 创建流水线,使用脚本完成代码自动分发
root@ubuntu-virtual-machine:/data/scripts# cat test.sh
#!/bin/bash
rm -rf /data/scripts/gitlab/order
cd /data/scripts/gitlab/
git clone git@172.18.10.181:magedu/order.git
cd order
ssh 172.18.10.200 "systemctl stop nginx"
scp index.html 172.18.10.200:/var/www/html/
ssh 172.18.10.200 "systemctl start nginx"
# 访问nginx验证
执行构建
验证nginx