-创建一个新账户
使用新账户登录gitlab
可以很明显看到,普通用户的权限是没有root多的
-把新创建的用户加入组
#Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner Guest(访客):可以创建issue、发表评论,不能读写版本库 Reporter(报告者):可以克隆代码,不能提交,QA(测试人员)、PM(主管或者产品经理)可以赋予这个权限 Developer(开发人员):可以克隆代码、开发、提交、push,RD(研发人员)可以赋予这个权限 Master(主程序员):可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 Owner(所有者):可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
-创建一个新项目
可以在群组中创建项目,也可以创建私有的项目,创建完后的使用方法和github相同
这里之后都汉化了,下面生成ssh密钥
#因为是要配合jenkins,所有这里使用的密钥直接在jenkins主机上操作即可 [root@Centos7 ~]# hostnamectl set-hostname jenkins [root@Centos7 ~]# su [root@jenkins ~]# 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:gh6chv+S4eK5Tnd8mWzbQNTmWdi4BLK9/H/VrA1Qenk root@Centos7.4-1 The key's randomart image is: +---[RSA 2048]----+ | . . | | + o + . | | . o * oo . | | o o o = +o o E| | . * . S + o o.| | +.o + + . +| | ..+oo B . = | | ..o+o o + . o .| | o=o .. . . .. | +----[SHA256]-----+ [root@jenkins ~]# cat .ssh/id_rsa.pub #查看公钥并且复制到gitlab的web界面中 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcUghkjbif7vFFzmUfeWaon08+VDF314si8Fa0xonE3dFbpfr1tzSLmldaulj8yBwXvvtS7XKJUuh54gqgQycor/T1apfyfPSLHtCoeZWYzbACufm9penKCA0USkYwTkOQU9HpOx17p85nBO6ydo6Xz0l8UBNqvoy7/tO7mIslcignj+r6mgskTxCoOk9ujwDSQ3QmfhLmc/7B4wGSWclvETZyRGyb8g3rye7+16fpPENpq1YaweoiNAytdb+IZBVjgdIT0k2PVggVdYxntoA0IulCYwolT1KcjJllcSm47IHtDL4J8AgPGO8ZXf7oJM+vMtZRiHlURjLlQzbcAnOh root@Centos7.4-1
使用jenkins主机复制一下仓库
[root@jenkins ~]# git clone git@192.168.100.202:root/test.git #克隆,后面的URL直接在web界面复制就行 正克隆到 'test'... The authenticity of host '192.168.100.202 (192.168.100.202)' can't be established. ECDSA key fingerprint is SHA256:VhTZ5YxS5af2rHtfCvyc6ehXh3PD2A8KY2MyE6rHjiU. ECDSA key fingerprint is MD5:e8:41:d2:8a:7e:e9:a9:47:a3:f0:29:be:e9:6d:df:51. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.100.202' (ECDSA) to the list of known hosts. remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) 接收对象中: 100% (3/3), done. [root@jenkins ~]# ll 总用量 4 -rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg drwxr-xr-x 3 root root 32 6月 30 18:57 test [root@jenkins ~]# cd test/ [root@jenkins test]# ll #成功克隆仓库 总用量 4 -rw-r--r-- 1 root root 16 6月 30 18:57 1.html
-搭建Jenkins(100.203)
- Jenkins下载地址
https://pkg.jenkins.io/redhat-stable/jenkins-2.176.2-1.1.noarch.rpm
- linux的wget下载地址:
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.2-1.1.noarch.rpm
******(1)先做基础配置 [root@jenkins ~]# systemctl stop firewalld [root@jenkins ~]# setenforce 0 setenforce: SELinux is disabled [root@jenkins ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 写保护,将以只读方式挂载 mount: /dev/sr0 已经挂载或 /mnt 忙 /dev/sr0 已经挂载到 /mnt 上 ******(2)因为Jenkins是使用JAVA开发,所以需要安装JDK [root@jenkins ~]# ls #上传jdk包 anaconda-ks.cfg jdk-8u91-linux-x64.tar.gz test [root@jenkins ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@jenkins ~]# mv /usr/local/jdk1.8.0_91 /usr/local/java [root@jenkins ~]# ls /usr/local/ bin etc games include java lib lib64 libexec sbin share src [root@jenkins ~]# vim /etc/profile 。。。。。。 #在最后一行添加,优化环境变量 JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH #保存退出 [root@jenkins ~]# source /etc/profile #执行脚本,使刚刚的配置生效 [root@jenkins ~]# java -version #查看java版本,确认成功安装 java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode) ******(3)上传Jenkins软件包,安装、配置 [root@jenkins ~]# ll 总用量 241624 -rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg -rw-r--r-- 1 root root 181367942 6月 30 22:11 jdk-8u91-linux-x64.tar.gz -rw-r--r-- 1 root root 66044542 6月 30 22:16 jenkins-2.222.4-1.1.noarch.rpm drwxr-xr-x 3 root root 32 6月 30 18:57 test [root@jenkins ~]# yum -y install jenkins-2.222.4-1.1.noarch.rpm #安装Jenkins 。。。。。。 完毕! [root@jenkins ~]# vim /etc/sysconfig/jenkins #修改配置文件 。。。。。。 28 # 29 JENKINS_USER="root" #把jenkins的用户改成root,因为上传密钥到gitlab的用户是root 30 。。。。。。 #保存退出 [root@jenkins ~]# ln -s /usr/local/java/bin/java /usr/bin/ #添加java的软连接 [root@jenkins ~]# /etc/init.d/jenkins start #启动jenkins Starting jenkins (via systemctl): [ 确定 ] [root@jenkins ~]# netstat -anpt | grep 8080 #默认监听的端口是8080 tcp6 0 0 :::8080 :::* LISTEN 15122/java [root@jenkins ~]# chkconfig jenkins on #添加开机自启 [root@jenkins ~]# chkconfig --list jenkins 注:该输出结果只显示 SysV 服务,并不包含 原生 systemd 服务。SysV 配置数据 可能被原生 systemd 配置覆盖。 要列出 systemd 服务,请执行 'systemctl list-unit-files'。 查看在具体 target 启用的服务请执行 'systemctl list-dependencies [target]'。 jenkins 0:关 1:关 2:开 3:开 4:开 5:开 6:关
-访问Jenkins并且安装相关插件
(1)解锁jenkins
使用浏览器访问http://192.168.100.203:8080即可,会出现解锁页面,并且提供了密码保存的路径,打开文件输入密码就行
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword #查看后,复制到web界面里 820ee2b087484685b4b04ebb5d834c34
#注意:由于jenkins需要联网下载插件,默认插件的网址是jenkins的官网(速度特别慢),因此需要给jenkins更换插件的下载源 #更换插件下载源步骤如下: 1、上图不要点继续、并且给Jenkins服务器断网 2、断网之后,再点继续 3、如下图,选择跳过插件安装
(2)登录Jenkins
-安装Jenkins插件
Jenkins的插件可以手动安装也可以联网安装
- 联网安装
Jenkins默认的插件源下载的特别慢,所以我们可以修改插件源
(1)给jenkins服务器联网,重新启动jenkins
[root@jenkins ~]# /etc/init.d/jenkins restart
(2)登录Jenkins
(3)选择Manage Jenkins----->Manage Plugins------>Advanced------->向下滑
将以下连接https://updates.jenkins.io/update-center.json替换为
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
(4)回到jenkins服务器,进行以下操作
[root@jenkins ~]# cd /var/lib/jenkins/updates/ [root@jenkins updates]# sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
到此为止,插件源修改完成
手动安装
如果联网安装插件失败或者是在无网络的环境下安装插件,可以选择手动安装,可以在web界面去安装也可以去linux系统中安装
web界面安装:
这个插件下载需要在有网的情况下,下载好了,再上传至服务器,直接点击选择文件就行
下载地址: http://updates.jenkins-ci.org/download/plugins/,下载完成之后,上传就行
linux命令行安装:
[root@jenkins ~]# ls #上传plugins.tar.gz插件包 anaconda-ks.cfg jdk-8u91-linux-x64.tar.gz jenkins-2.222.4-1.1.noarch.rpm plugins.tar.gz test [root@jenkins ~]# rm -rf /var/lib/jenkins/plugins #删除原来的插件包 [root@jenkins ~]# tar xf plugins.tar.gz -C /var/lib/jenkins/ #直接解压到jenkins目录中 [root@jenkins ~]# systemctl restart jenkins #重启服务,不重启无法使插件生效
直接替换/var/lib/jenkins下的plugins插件包目录,然后重启,可以上传的最好是有中文的插件包,之后修改这个为zh_CN重启jenkins会变成中文
-Jenkins升级
******(1)查看jenkins的war包所在的目录 [root@jenkins ~]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war #这个就是war包所在目录 /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins ******(2)下载最新稳定的war包 #下载地址:wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war #这里直接上传了 [root@jenkins ~]# systemctl stop jenkins #先关闭服务 [root@jenkins ~]# cd /usr/lib/jenkins/ [root@jenkins jenkins]# mv jenkins.war jenkins.war.bak #把原来的war包备份 [root@jenkins jenkins]# ll #上传新的war包 总用量 133996 -rw-r--r-- 1 root root 70969355 6月 30 23:57 jenkins.war -rw-r--r-- 1 root root 66239216 5月 28 2020 jenkins.war.bak [root@jenkins jenkins]# systemctl start jenkins #启动服务 [root@jenkins jenkins]# netstat -anpt | grep 8080 #确认启动 tcp6 0 0 :::8080 :::* LISTEN 15538/java
登录web界面验证
可以很明显的看到ui变了,成功升级jenkins
-配置jenkins使用gitlab更新代码
需要用到下面的插件
#有的已经默认安装,可以在已安装的上面的搜索栏中搜索一下确认 Credentials (默认已经安装) #签名证书管理插件 Gitlab #安装后从gitlab获取代码 Git 和 Git Client (默认已安装)#用于jenkins在gitlab 中拉取源码 GitLab Hook #gitlab触发jenkins构建项目 #hook [hʊ ʊk] 钩子; plugin ['plʌ ʌgɪ ɪn] 插件 Gitlab Authentication # gitlab 和 jenkins 认证相关的插件 SSH Plugin #进程执行shell 脚本 Publish Over SSH #用于通过 ssh部署应用
没有可选插件可能是因为版本问题,可以先往下做
上面已经把jenkins主机root用户的公钥传到了gitlab上,并且同步gitlab的仓库也已经成功,下面只需要把jenkins主机root用户的私钥传到jenkins的web界面上,这样jenkins就可以直接免密拉取gtilab的仓库了
[root@jenkins ~]# cat .ssh/id_rsa #查看私钥并复制 -----BEGIN RSA PRIVATE KEY----- MIIEpgIBAAKCAQEA3FIIZI24n+7xRc5lH3lmqJ9PPlQxd9eLIvBWtMaJxN3RW6X6 9bc0i5pXWrpY/MgcF777Uu1yiVLoeeIKoEMnKK/09WqX8nz0ix7QqHmVmM2wArn5 vaXpyggNFEpGME5DkFPR6Tsde6fOZwTusnaOl89JfFATar6Mu/7Tu5iLJXIoJ4/q +poLJE8QqDpPbo8A0kN0Jn4S5nP+weMBklnJbxE2ckRsm/IN68nu/ten6TxDaatW GsHqIjQMrXW/iGQVY4HSE9JNj1YIFXWMZ7aANCLpQmMKJU9SnIyZZXEpuOyB7Qy+ CfAIDxjvGV3+6CTPrzLWUYh5VEYy5UM23AJzoQIDAQABAoIBAQCcVtW/zNVLIDoz Z89YM0SGuW149DOaL+h6pYNRimTuvty2JSTdQeDWg3IjXoKQ9csBirM62GXjTmLL Qnx51s0t0RaJI9eo6cR6CCbWtlhScvrIJII0ckxg4a+uSzpdQtwsyV32G83DFoOf lN9w4jIzRZOG1CfDIm4pZR2ITCnJKlRv+hL4gGDTEh3oFQHMJZwxA6qiwXqmRxJ+ jUNP9S2LHl2Zsz3QwTHCsdHUoJisLz348M9bjia5Kn7i/kJONdk3inxBTWhxX9sA j/GDTO++H4bklRgtJuB+hL7wpYuL5T/dK0VShtWTZVQQZTycPNsmBEf6XYYx37K2 07ZRyCjBAoGBAPNBuWYP1RgIShVBaQsEXjWdP+4orN9cDvvueMKroCkg7QGv2m0v SDmpKWkhLNurnd3QoqyW1Q1w0+iw1QOKmjmHxo95tu3ieNAQ5TOK8fAiEA996zpC DiADVjo0qMrUncf1taWCytmhSu0kPDOVsniy8BMlJdzTlgL5QJ+G55NJAoGBAOfc trZ9b9gI0bBG2Jx9khmY54RZReaJF2q21eR75YTB9myh9AWZ0a+7KukJoay7hk6b 2n3tKx05RV1xbXYM7QKQ2f6Xbvcc8gZbW6viWkrst3ic57stZ2F7Bdg6Q8gH4Wy8 vExvAutE8A7GMlHOjKfx6NByhj8I5jJoPWA84wWZAoGBAOn+AdokRqXsa17Q4btg Q0MtdS6hX9EnW56JgQ45S0Hk0zb5MpIuljoo95WR/PV9usiBBcog+OYJ7z14xB64 96t5aM3glc90NyRl7CPNdva3vV05kckjezTeINayit848GFFgKqqCniXx1wfq+0v BVNHRNoVtLsbqMRJgRkzCpVJAoGBAJDjCkYFInPUJvxJeShpC3f1ZY79nkGOH1Tv Bb/ucCFCd3OwzGUHltGCWzEedKoU0Lukhqc0IkHzvNXEgItJTn3Q+HgwNwYyT0cL pcBGBPhW7dtv6Rq9J6Hxl1hkKGECE6q4Uc5NfHx6KqyAy4b1VE3KTBqdxifzrq2H F/tgcNjZAoGBAMoF+HmoroSp0obSTn/CHK15wF7aZBB6clA9d0Ezz63PAd2yLMe3 dMfTpRHVKcMiDrCeYVj/XNjwhA+GXexq4h1WgGBBHuiRwiFP67p5p4Jlad7t6qP9 pnh+oFpRclAmJEJwkj45u5J8oUFeQ7AztILU3qWFMpaYoYLYSdAbkdQR -----END RSA PRIVATE KEY-----