gitlab部署
Gitlab部署
//配置yum源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@localhost ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# rm -f /etc/yum.repos.d/
[root@localhost ~]# dnf clean all
[root@localhost ~]# dnf list all
//配置epel源
[root@localhost ~]# dnf -y install epel-release
//安装git
[root@localhost ~]# dnf -y install git
//安装依赖包
[root@localhost ~]# dnf -y install openssh-server openssh-clients postfix cronie
//启动postfix服务并设置开机自启
[root@localhost ~]# systemctl enable --now postfix.service
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.
//下载gitlab的rpm包
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.3.3-ce.0.el7.x86_64.rpm
//下载policycoreutils-python的rpm包
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/policycoreutils-python-2.5-34.el7.x86_64.rpm
[root@localhost ~]# rpm -qa | grep policycoreutils
policycoreutils-2.9-9.el8.x86_64
//如果系统有这个报的话,请先卸载
[root@localhost ~]# rpm -e policycoreutils-2.9-9.el8.x86_64
//安装policycoreutils-python
[root@localhost ~]# rpm -ivh policycoreutils-python-2.5-34.el7.x86_64.rpm --nodeps
warning: policycoreutils-python-2.5-34.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:policycoreutils-python-2.5-34.el7################################# [100%]
//安装gitlab
[root@localhost ~]# rpm -ivh gitlab-ce-15.3.3-ce.0.el7.x86_64.rpm --nodeps
warning: gitlab-ce-15.3.3-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
…………
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
//修改配置文件
[root@localhost ~]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.169.139' //将此处设为gitlab的服务器ip地址亦或域名
//重载配置文件并重启gitlab
[root@localhost ~]# gitlab-ctl reconfigure //时间有点久,请耐心等待
[root@localhost ~]# gitlab-ctl restart
//破解管理员密码
[root@localhost ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
GitLab: 15.3.3 (c629a47f87f) FOSS
GitLab Shell: 14.10.0
PostgreSQL: 13.6
------------------------------------------------------------[ booted in 18.26s ]
Loading production environment (Rails 6.1.6.1)
irb(main):001:0> user = User.where(id: 1).first //id为1是超级管理员
=> #<User id:1 @root>
irb(main):002:0> user.password = 'zic12345' //设置密码,最少8位
=> "zic12345"
irb(main):003:0> user.password_confirmation = 'zic12345'
=> "zic12345"
irb(main):004:0> user.save! //保存,没问题会返回true
=> true
irb(main):005:0> exit //退出
去浏览器输入ip访问
Gitlab的基本使用
新建项目
建立项目之前需要将gitlab服务器的ssh公钥添加到
如果本地有ssh公钥就直接进行使用,没有可以生成
[root@localhost ~]# ssh-keygen -t rsa
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:nrcevcXEAkfQd4JMgqqiGSFatYKmhmqzZGj8a59xUTA root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
| E .o=o. |
| . + o+ o .|
| . . . . .. .. o |
|+.o . . . o . |
|*o . . .S . o |
|B.. . ... . + |
|+O . . .o o . o |
|Bo.. + . o o |
|..+ooo .o . |
+----[SHA256]-----+
查看/root/.ssh/id_rsa.pub文件的内容,将内容复制到如下位置,然后保存
新建项目
查看项目分支
使用命令行的方式管理项目
首先将gitlab项目克隆到本地来,使用如下命令
选择想要克隆的项目
选择克隆,复制ssh克隆
然后使用git clone命令
[root@localhost ~]# git clone git@192.168.169.139:gitlab-instance-63929587/zic.git
Cloning into 'zic'...
The authenticity of host '192.168.169.139 (192.168.169.139)' can't be established.
ECDSA key fingerprint is SHA256:h0JBqfyD7nmBvCwBazGyK6b50D/gE11IG/dW6E3J1Ug.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.169.139' (ECDSA) to the list of known hosts.
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.
//可以看到多了一个zic的目录
[root@localhost ~]# ls
anaconda-ks.cfg gitlab-ce-15.3.3-ce.0.el7.x86_64.rpm policycoreutils-python-2.5-34.el7.x86_64.rpm zic
//进入项目
[root@localhost ~]# cd zic/
[root@localhost zic]# ls
README.md
上传文件
在上传文件之前,需要做两件事,指定本地访问项目的邮箱和用户
//指定邮箱
[root@localhost zic]# git config --global user.email "root@example.com"
//指定用户
[root@localhost zic]# git config --global user.name "root"
上传文件
//新建文件
[root@localhost zic]# touch file1
[root@localhost zic]# ls
file1 README.md
//添加文件
[root@localhost zic]# git add file1 //如果想上传多个文件的话就直接指定,上传所有文件就使用‘.'代表整个目录
//提交,选项-m是描述信息
[root@localhost zic]# git commit -m "file1"
[main 228cd02] file1
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
//上传
[root@localhost zic]# git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 260 bytes | 260.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.169.139:gitlab-instance-63929587/zic.git
a6e2488..228cd02 main -> main
到gitlab的web管理界面进行验证,file1文件已经上传了上来
新建分支
//创建一个名为zic的分支
[root@localhost zic]# git branch zic
//进行同步
[root@localhost zic]# git push origin zic
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for zic, visit:
remote: http://192.168.169.139/gitlab-instance-63929587/zic/-/merge_requests/new?merge_request%5Bsource_branch%5D=zic
remote:
To 192.168.169.139:gitlab-instance-63929587/zic.git
* [new branch] zic -> zic
切换分支
//切换到分支zic
[root@localhost zic]# git checkout zic
Switched to branch 'zic'
//在分支zic里面上传一个文件
[root@localhost zic]# touch file2
[root@localhost zic]# git add file2
[root@localhost zic]# git commit -m "file2"
[zic 6295df5] file2
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2
//在分支里推送不能直接使用push命令,直接使用他会提醒你使用'git push --set-upstream origin'
[root@localhost zic]# git push
fatal: The current branch zic has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin zic
//这条命令是将zic这个分支与前面的分支main进行合并处理
[root@localhost zic]# git push --set-upstream origin zic
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 256 bytes | 256.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for zic, visit:
remote: http://192.168.169.139/gitlab-instance-63929587/zic/-/merge_requests/new?merge_request%5Bsource_branch%5D=zic
remote:
To 192.168.169.139:gitlab-instance-63929587/zic.git
228cd02..6295df5 zic -> zic
Branch 'zic' set up to track remote branch 'zic' from 'origin'.
拉取文件
//将分支zic里的文件都拉取到分支main里
//切换到main分支
[root@localhost zic]# git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
//进行拉取,拉取到本地
[root@localhost zic]# git pull origin zic
warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.
From 192.168.169.139:gitlab-instance-63929587/zic
* branch zic -> FETCH_HEAD
Updating 228cd02..6295df5
Fast-forward
file2 | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2
//推送
[root@localhost zic]# git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.169.139:gitlab-instance-63929587/zic.git
228cd02..6295df5 main -> main