0.安装gitlab
0.环境:10.0.0.60
1.安装gitlab
[root@gitlab opt]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.0.3-ce.0.el7.x86_64.rpm
2.安装GitLab
# 安装依赖包
[root@gitlab opt]# yum install -y curl policycoreutils-python openssh-server perl
[root@gitlab opt]# yum install postfix -y
# 关闭防火墙
[root@gitlab opt]# systemctl disable --now firewalld
# 关闭selinux
[root@gitlab opt]# sed -i 's#enforcing#disabled#g' /etc/sysconfig/selinux
# 临时关闭
[root@gitlab opt]# setenforce 0
# 安装
[root@gitlab opt]# yum install -y gitlab-ce-13.0.3-ce.0.el7.x86_64.rpm
# 修改配置文件
[root@gitlab opt]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.60'
nginx['listen_port'] = 80
# 刷新配置(默认启动)
gitlab-ctl reconfigure
#查看详细信息(客户端工具)
[root@gitlab opt]# gitlab-ctl
#查看服务
[root@gitlab opt]# gitlab-ctl service-list
#查看服务状态
[root@gitlab opt]# gitab-ctl status
#停止服务
[root@gitlab opt]# gitlab-ctl stop nginx
#开启服务
[root@gitlab opt]# gitlab-ctl start nginx
jenkins知识
一、用户权限
1.创建用户
系统管理 —> 用户管理 —> 新建用户
2.创建权限组
使用权限组,需要安装Role-Based Strategy权限插件
1、 启用授权策略插件
系统管理 —> 全局安全配置 —> 授权策略 —> Role-Based Strategy
2、创建及管理权限组
系统管理 —> Manage and Assign Roles —> Manage Roles —> 各个角色(权限组)
1)启用Role-Based Strategy权限插件
2)创建及管理权限组
3)分配角色组权限
系统管理 —> Manage and Assign Roles —> Assign Roles
4)使用通配符分配权限
.* : 匹配以什么开头的项目
1.创建jyh1用户:
2.创建jyh1的管理权限组
3.创建分配角色
4.登录jyh1账号测试
3.凭证管理
1.Username with password:用户名和密码
2.SSH Username with private key: 使用SSH用户和密钥
3.Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径 设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
4.Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token Certificate:通过上传证书文件的方式
5.X.509:证书,一般使用第三方云服务时使用。
6.Certificate:docker私有仓库密码存储类型。
系统管理 —> Manage Credentials —> 系统凭证 —> 全局凭证 —> 添加凭证
1)通过http连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)
系统管理 —> Manage Credentials —> 系统凭证 —> 全局凭证 —> 添加凭证 —> Username with Password
1.生成秘钥对
[root@jenkins admin_6297016367257135384]# 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:6nv6J93ZcRL+ladaQfLif9Ubm27kVPlChDY2/M9Bb0U root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| . . .E|
| B ...|
| o.=o +|
| ++o+|
| S .oo=*|
| . . .=*X|
| . . ..o=BO|
| . o o ooo*o|
| +=.o ..+o |
+----[SHA256]-----+
[root@jenkins admin_6297016367257135384]#
[root@jenkins admin_6297016367257135384]# cd
[root@jenkins ~]# ll -a .ssh/
总用量 8
drwx------ 2 root root 38 7月 26 15:38 .
dr-xr-x---. 7 root root 238 7月 26 15:38 ..
-rw------- 1 root root 1675 7月 26 15:38 id_rsa
-rw-r--r-- 1 root root 394 7月 26 15:38 id_rsa.pub
[root@jenkins ~]# cat id_rsa
cat: id_rsa: 没有那个文件或目录
[root@jenkins ~]# ll -a .ssh/id_rsa
-rw------- 1 root root 1675 7月 26 15:38 .ssh/id_rsa
[root@jenkins ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAr1Zyq9AsDEyNPQV7o2ciGZgz0L0rOpSJ95pSSnJjUE6BQQkl
rd+R0m6yMaGbHLB8JYzGzMj6XBsTu4jAMCoAQJZrffrucGAOFuX49DE1n3hKgob3
+dtS20mZ1KGn8Q6TVowVuRieawIN/8PL6QoCZ7J3+7JVQD/B5W1Z2/QqAnpHriQi
Fzef2iDH2kaV0PPaExvkD5iEBN4bAjONc3apAH4r1uI9PQhHdSrFmmEm9J/KdNKe
7upZixRukHUuAoeZCIHo4enQgAG16A6qnIsM4drLPe/tcNWs1+i/TaQ+ocFZq3zF
knalIiu8UOHZ4PIVBDmqFjLrDRmVWBgukTOfdQIDAQABAoIBAEOLuwtDW+S1DOgI
F7RAQ9u2TafJaEDd/jR7p930KRxD0fla68AK06NMb6s9BYNM3dadX+x+NCyNZdGm
AdvMImK/T9OtenOiHWtm1rxDxNOVRKb6FceUXVwLA47tY8QyiEIcHzY6LLUuinQQ
WpqA96I5F43ICp2AslKPCMH6UsC29UVCv91M9gvO76RQHapcCV/CN05MFhB+ZfDX
VNDnhI0QqBzbzC2uTUKOnkKi+Ak+ivPBbnwaTrUk1oxdjXM+mlWU8rD5gZFvIQK/
tNLcv7jsPealvNTIxa6NL/BGYVEVe0BoS5fGOWZDqvKd/BJ9vK9Qdpl0KRwySUfh
0PWl0PUCgYEA3aA1Jf+0UNNW7S5Oh8GVnHG3KAOWLuhKNif4qmW1xiJ7OTPpqmHF
5G4AdujNIHkmLEubP1Zv54qOatAtrTLxGBfSpz58aKZaEF8hdpc2vGDrfRELQ20/
fi7PslwdNSVBB7llF63KuG7+FFvwyK/LGpvHWh0s43lLkiMHWxreGvMCgYEAyohX
WkUdC4xhewACnu7VHM9XVtYPsW3FztDzB43/ndwfl0q5nXpot0f6757BozYaSpiB
zrEzh4OgNXweUS0TlSWfKWeuej6UXcbQENHalHv8prJ1ZSEBm+IlUy1jxmBVur3o
TlhUBVB/N/hCETKDTz9RY6esmc9pp2ZQV+yTpfcCgYACepE9nI+Ku+JkArmUISEo
P8lZpDigy65Qzr+kQED5N1eDe0YoxrEs7eIJcm8g5tn7ctkIq1HTGCShozRvlHtH
1rRfdH51uS6Wskmwht5w2vCnVHJ4zZcBNUrTZt5YwtLoYDV2P1ZeG7exyJl31SeD
Y6ymIF9pJ+kleEjTxwgm6wKBgQC52QafVRBkCnthDQ9anDp+51xz2JYp8Fs1ftOk
OQ844kcy42UUNsFkfe6sd3ektv7FONDUxBJO5d/bdHu1bbGsiQtWSUf38PjgXJGM
/aSf4G5k4RmMpQ7+5jPt8Za+8KN6as2DJtZi0g0LZQnrEfkgfS/ITJK7yXJgJCjR
pcuO3QKBgHz9CEbXGN+1Prk1qHvzOgHMJKvspun6isnw6mKZCfqcV4c1kRqi/Q4c
uTn1p/V5tES6M7zjoaG4tniVrcMPDQEe/WdlXhCuIjyCebGCV/VSHElLxYZPjzrd
MI595InSxw1TbhFfm6vfTkglubPmYkltFLNWOqzxoaPsNzv1MRGl
-----END RSA PRIVATE KEY-----
2.将私钥添加jenkins(不能有空格)
[root@jenkins ~]# cat /root/.ssh/id_rsa
见下图
3.将公钥添加gitlab
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
见下下图
*******重点注意:前提需要安装git工具***************
yum install git -y
在jenkins的目录中可以看见代码
[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins workspace]# ll
总用量 0
drwxr-xr-x 3 jenkins jenkins 35 7月 26 20:29 shnaghai-004
drwxr-xr-x 2 jenkins jenkins 6 7月 26 20:30 shnaghai-004@tmp
[root@jenkins workspace]# cd shnaghai-004
[root@jenkins shnaghai-004]# ll
总用量 4
-rw-r--r-- 1 jenkins jenkins 14 7月 26 20:29 README.md
2)通过SSH连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)
系统管理 —> Manage Credentials —> 系统凭证 —> 全局凭证 —> 添加凭证 —> ssh username with private key
- 先到gitlab上复制项目源代码的仓库ssh链接地址
- 打开Jenkins选择要部署的项目
[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins workspace]# ll
drwxr-xr-x 3 jenkins jenkins 35 7月 26 21:13 shnaghai-005
drwxr-xr-x 2 jenkins jenkins 6 7月 26 21:13 shnaghai-005@tmp
[root@jenkins workspace]# cd shnaghai-005
[root@jenkins shnaghai-005]# ll
总用量 4
-rw-r--r-- 1 jenkins jenkins 24 7月 26 21:13 README.md
3)登录服务器SSH(从另一台服务器上拉取源代码)
此处以JenkinsSSH连接gitlab为例
1.先在服务器上做免密登录
在Jenkins服务器上生成密钥对,将公钥推送到gitlab服务器
[root@jenkins ]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.60
4) 将从gitlab远程仓库拉取好源代码的项目部署到其他的服务器上(gitlab)
1.有时候后端的代码需要编译,手动先假设编译一下
2.进入jenkins查看一下:
[root@jenkins ~]# cd /var/lib/jenkins/workspace/shnaghai-005
[root@jenkins shnaghai-005]# ll
总用量 8
-rw-r–r-- 1 jenkins jenkins 13 7月 26 22:10 deamon.html
-rw-r–r-- 1 jenkins jenkins 24 7月 26 21:13 README.md
[root@jenkins shnaghai-005]# cat deamon.html
假设编译
[root@jenkins shnaghai-005]# ###
结论:在构建以前所有的执行的都是在jenkins服务上执行,构建后的操作都是在部署的服务器上执行。
构建后的操作:
[root@gitlab ~]# hostname -I
10.0.0.60 172.16.1.60
[root@gitlab ~]#
[root@gitlab ~]# pwd
/root
[root@gitlab ~]# ll
总用量 710068
-rw-r–r-- 1 root root 22 7月 26 22:25 deamon.html
[root@gitlab ~]# cat deamon.html
假设在执行命令
5) 简单部署====一般不可取
jenkins=======》gitlab上
1.准备nginx的目录
[root@gitlab ~]# mkdir -p /usr/share/nginx/html
2.在jenkins上系统管理=系统配置publish ssh over 配置ssh-server
3.在jenkins选择对应的项目右键点击配置构建后操作==
jenkins查看
[root@jenkins ~]# cd /var/lib/jenkins/workspace/shnaghai-005
[root@jenkins shnaghai-005]# ll
总用量 8
-rw-r--r-- 1 jenkins jenkins 13 7月 26 23:13 deamon.html
-rw-r--r-- 1 jenkins jenkins 24 7月 26 21:13 README.md
[root@jenkins shnaghai-005]# cat deamon.html
假设编译
[root@jenkins shnaghai-005]# cat README.md
# hello wordld project
gitlab查看
[root@gitlab html]# cd /usr/share/nginx/html/
[root@gitlab html]# ll
总用量 8
-rw-r--r-- 1 root root 123 7月 26 23:32 deamon.html
-rw-r--r-- 1 root root 24 7月 26 23:15 README.md
drwxr-xr-x 3 root root 19 7月 26 23:31 usr
[root@gitlab html]# cat deamon.html
假设编译
假设在执行命令
假设在执行命令
假设在执行命令
假设在执行命令
假设在执行命令
[root@gitlab html]# cat README.md
# hello wordld project
[root@gitlab html]# cd usr/
[root@gitlab usr]# ll
总用量 0
drwxr-xr-x 3 root root 19 7月 26 23:31 share
[root@gitlab usr]# cd share/
[root@gitlab share]# ll
总用量 0
drwxr-xr-x 3 root root 18 7月 26 23:31 nginx
[root@gitlab share]# cd nginx/
[root@gitlab nginx]# ll
总用量 0
drwxr-xr-x 2 root root 42 7月 26 23:31 html
[root@gitlab nginx]# cd html/
[root@gitlab html]# ll
总用量 8
-rw-r--r-- 1 root root 13 7月 26 23:32 deamon.html
-rw-r--r-- 1 root root 24 7月 26 23:32 README.md