GitLab简介
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wal1)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。常用的网站:
官网:GitLab最新版下载安装_GitLab中文免费版-极狐GitLab中文官方网站
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/安装环境:
1、Centos 6或者7
2、2G内存(实验)生产(至少4G)
3、 安装包:gitlab-ce-10.2.2-ce
4 、禁用防火墙,关闭selinux
1. 安装和配置必须的依赖项
在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它。
sudo yum install -y curl policycoreutils-python openssh-server perl
#上面这个是最重要的
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
2.(可选)下一步,安装 Postfix 以发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装极狐GitLab 后配置外部 SMTP 服务器。
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
在安装 Postfix 的过程中可能会出现一个配置界面,在该界面中选择“Internet Site”并按下回车。把“mail name”设置为您服务器的外部 DNS 域名并按下回车。如果还有其它配置界面出现,继续按下回车以接受默认配置。
3. 下载/安装极狐GitLab
配置极狐GitLab 软件源镜像。
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
4.接下来,安装极狐GitLab。确保您已正确设置您的 DNS,并更改 https://gitlab.example.com 为您要访问极狐GitLab 实例的 URL。安装包将在该 URL 上自动配置和启动极狐GitLab。
对于 https
站点,极狐GitLab 将使用 Let's Encrypt 自动请求 SSL 证书,这需要有效的主机名和入站 HTTP 访问。您也可以使用自己的证书或仅使用 http://
(不带s
)。
如果您想为初始管理员用户(root
)指定自定义密码,请查看文档。如果未指定密码,将自动生成随机密码。
执行如下命令开始安装:
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh
#可要可不要,我在安装的时候没输出
根据上面操作完后,检查一下依赖包得安装是否成功
rpm -qa|egrep "policycoreutils-python|openssh-server|curl"
然后在修改一下它得配置文件,这里可以更改一下地址www.wjk.com,我这里使用的是域名,也可以使用IP地址看个人喜欢,但是后面需要去hosts解析一下
vim /etc/gitlab/gitlab.rb
完成之后我们现在再来安装gitlab-ce,官网gitlab/gitlab-ce - Packages · packages.gitlab.com
点击你要选择得版本,我这里选择的是14.10.5,成功后会得到一个狐狸头这样的
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm/download.rpm
在解压
rpm -i gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
紧接着在敲,这个就是重新配置的结果图
gitlab-ctl reconfigure ---重新配置得
gitlab-ctl status ---先查看状态
然后点开我们刚刚配置的域名:我配置的是www.wjk.com
这里账号我是默认root密码可以去cd /etc/gitlab查看文件是init开头的里面会有一个随机密码,不过只会保留24小时我这里已经过期了所以没有显示
知识点:
下载好的gitlab都放在/opt/gitlab
输入刚刚修改得gitlab配置文件得地址www.wjk.com打开后输入一个账号密码
进入以后点击这个Admin
进去公司如果没有gitlab就要先创建组,组里面有人员,再把项目添加到组里面,那这个组里面的所有人就可以访问这个项目了
这个时候在点击我们的项目,这里面可以把我们创建的组添加到项目里面,就相当于你在公司要组建一个项目肯定需要小组,组员等,这里我们就直接部署与jenkins的小项目
点击这里导入
这里我们按照步骤进行项目导入
https://gitee.com/skips/game.git
然后就开始加载了
在这输入jenkins这台服务器上的公钥,可以先进入cd .ssh然后使用cat id_dsa.pub进行查看
上面在gitlab的部署就已经完成了,下面的是补充一下gitlab的一些知识点
1.秘钥远程登录服务器实现免密登录实战
想要打通的过去的这台主机:
1)dsa建立私钥和公钥(一直回车)
ssh-keygen -t
2)创建ssh目录:
mkdir /ssh
#在
cd .ssh
3)
ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
需要被打通的主机:
1)需要在第3把打通过去之前新建文件:
mkdir .ssh
2)新建文件:
touch authorized_keys
3)附加权限:
chmod 600 authorized_keys
4)建立私钥公钥:
ssh-keygen -t dsa
2.然后我们还可以在gitlab里面改一下密码,防止那个系统密码过了24小时就自动消失
3.假如你们开发或者其他人想加入到你这个项目里面来,你要怎么给他附赠权限呢
在这里选择权限添加即可 上面就是gitlab的全部内容了,总结一下:
首先在我们本地服务器上搭建gitlab,这个gitlab服务器要想使用,必须要把自己的这台服务器上的管理员root的公钥放在SSH key里面它就可以下载了,如果开发想使用,就单独开用户,比如dev用户,这个属于gitlab的普通用户,当我们写好新的功能,或者代码就要网gitlab上进行推送,那gitlab有两个分支,一个是master一个是dev分支,我们的开发一般都把功能上传到专门的dev分支上,master都是上传我们最新版本的,类环境的,dev自己把有权限的代码拽到本地,再用checkout -b在分支上创建一个新的分支,再到分支上写入新的功能,在提交,在申请一个和并请求,申请到master。
官网Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
1.安装准备
装备两台服务器 关闭selinux和防火墙内存2G 50G+硬盘,这里面jenkins和gitlab不要放在同一台服务器上,同时它的内存是2G以上哈
jenkins 10.0.0.201
nexus 10.0.0.202
开始安装
1.安装 epel-release
yum -y install epel-release
2.安装 daemonize
yum -y install daemonize
3.清华源直接下载rpm包安装即可,下载地址如下:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
这里是链接:https://pan.baidu.com/s/1E1cY3Ptkl-4IB5m3d3DJBA
提取码:fs7m
然后安装好以后拖进来可以在root下,如果脱不进来可以使用安装lrzsz
yum install -y lrzsz
然后在解压
rpm -ivh jenkins-2.315-1.1.noarch.rpm
yum install java-11-openjdk
配置使用root账号运行
vim /etc/sysconfig/jenkins
JENKINS_USER="root"
启动:
systemctl start jenkins
这个文件是jenkins的war包所以以后升级直接把文件丢在这里就好了
[root@138 ~]# ll /usr/lib/jenkins/
total 70460
-rw-r--r--. 1 root root 72148539 Oct 7 2021 jenkins.war
2.jenkins主要的目录
/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里
/etc/sysconfig/ienkins:jenkins配置文件“端口”“JENKINS HOME”等都可以在这里配置
/var/lib/jerkins/:默认的JENKINS HOME
/var/log/jenkins/jenkins.log:Jenkins日志文件
把上面那段代码复制下来
清华源地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
我们可以将插件提前下好,然后只需要解压到jenkins对应的目录即可
链接:https://pan.baidu.com/s/1ELWPbZleTTSmQRlR3u4e6A
提取码:nila
tar zxf jenkins_plugins.tar.gz -C /var/lib/jenkins/
ll /var/lib/jenkins/plugins/
重启jenkins:
systemctl restart jenkins
但是如果我们发现报错了,因为jenkins没有拉取gitlab项目的权限。如果没有就不用管直接创建就好
解释
1.如果我们想让jenkins从gitlab上拉取代码,那么需要将jenkins的公钥信息放在gitlab上。
2.gitlab针对这种情况有一个专门的功能,叫做部署部署公钥。
3.部署公钥的作用是不需要创建虚拟用户和组,直接在需要拉取的项目里关联部署公钥即可。
步骤
1.获取jenkins公钥信息
2.将jenkins公钥信息填写到gitlab的部署公钥里
3.由项目管理员操作,在需要jenkins拉取的项目里关联部署公钥
4.jenkins配置私钥凭证,部署项目时关联凭证
[root@jenkins-201 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCg8+DQFOjR+gl1Xw83CIyGJ50vI4DBeTaMRFdu5+5pT/IMnYq1iS7/lRS6JxXLYvVeNMDUfDxA1sOL70okyA3npjASXgJPGE1FsbpqzWjsN0TAGoZkR1VWuP9Yn0CrH7dA4lhZQfUUVjvqzFBZK8N9iZMzIu6KOiSY/aD4Ol59vbDS4kO0rTG1DYQNnjZzMPNlIiJ+0EVkfuYRwABRFA8fmL+6btqZqhjGY29EHuIfzIMTDTysrtCTGxQn2ql1zwjReGiNXzmFncwvyy92DAuMbnOQiE1YNn72wThy2oWSHsCwKdIvcNHqY2xBvFnkZ9Ltga7PgR33kbJ7Gl8tjiZF root@jenkins-201
gitlab项目关联部署公钥
通过cat id_rsa查看私钥
查看拉取的代码:
[root@jenkins-201 ~]# ll /var/lib/jenkins/workspace/h5game
总用量 16
drwxr-xr-x 4 jenkins jenkins 47 8月 6 09:37 game
-rw-r--r-- 1 jenkins jenkins 9349 8月 6 09:37 LICENSE
-rw-r--r-- 1 jenkins jenkins 937 8月 6 09:37 README.md
其中这里面的IP地址是你要拉取的目标
#创建目录
mkdir -p /scripts/jenkins/
#编写脚本
cat > /scripts/jenkins/deploy.sh << 'EOF'
#!/bin/bash
PATH_CODE=/var/lib/jenkins/workspace/h5game/
PATH_WEB=/usr/share/nginx
TIME=$(date +%Y%m%d-%H%M)
IP=10.0.0.7
#打包代码
cd ${PATH_CODE}
tar zcf /opt/${TIME}-web.tar.gz ./*
#拷贝打包好的代码发送到web服务器代码目录
ssh ${IP} "mkdir ${PATH_WEB}/${TIME}-web -p"
scp /opt/${TIME}-web.tar.gz ${IP}:${PATH_WEB}/${TIME}-web
#web服务器解压代码
ssh ${IP} "cd ${PATH_WEB}/${TIME}-web && tar xf ${TIME}-web.tar.gz && rm -rf ${TIME}-web.tar.gz"
ssh ${IP} "cd ${PATH_WEB} && rm -rf html && ln -s ${TIME}-web html"
EOF
#添加可执行权限
chmod +x /scripts/jenkins/deploy.sh
然后立即构建,发现报错了,提示权限不足: 报错原因是因为jenkins是以jenkins用户运行的,所以提示权限不足,我们可以修改jenkins为root用户运行。
[root@jenkins-201 ~]# vim /etc/sysconfig/jenkins
[root@jenkins-201 ~]# grep "USER" /etc/sysconfig/jenkins
JENKINS_USER="root"
[root@jenkins-201 ~]# systemctl restart jenkins
查看一下web服务器的代码目录
[root@web-7 ~]# ll /usr/share/nginx/
总用量 0
drwxr-xr-x 3 root root 50 8月 6 10:13 20200806-1013-web
lrwxrwxrwx 1 root root 17 8月 6 10:13 html -> 20200806-1013-web