day62-gitlab和JenKins

1.每日复盘与今日内容

1.1复盘

  • 持续集成/持续交付的服务器准备
  • git的使用🍟🍟🍟🍟🍟(基本语法、版本回滚、标签、分支)
  • gitlab的安装

1.2今日内容

  • gitlab的两种代码上传方式
  • gitlab合并请求
  • Jenkins的安装部署
  • Jenkins自动拉取代码更新
  • SonarQube代码自动检测

2.gitlab

第一种方式

接day61后,创建空白项目

远程仓库:复制链接

此为你创建gitlab的账号和密码

可以查看远程仓库的地址

打通底层

先添加ssh密钥

生成密钥

将生成的密钥复制下来

复制链接

先清空远程链接文件

提交时还要写好账号(随便写)

将代码提交

提交成功

第二种方式

代码上传流程

复制代码
代码已经存在本地
1.本地仓库已经初始化
2.本地代码已经存在

有本地仓库但没有远程仓库

添加远程仓库

(ps:仓库为空,不然建议使用第一种方法:先把远程仓库的东西下载下来再操作)

直接推

成功

5.推送game游戏代码到远程的game项目中

创建一个空的项目并克隆

通过网盘分享的文件:xbw.zip

链接: https://pan.baidu.com/s/1KLiy0bp2WIEPXUGYnkx7fA?pwd=1234 提取码: 1234

--来自百度网盘超级会员v5的分享

复制代码
#将小霸王放到其中模拟开发写完的代码
#将安装包解压到git仓库
root@oldboy:~/game# unzip xbw.zip
#上传代码
root@oldboy:~/game# git add .
root@oldboy:~/game# git commit -m "xbw"
root@oldboy:~/game# git push -u origin master

再到web01中,提前准备好nginx、以及对应的文件目录存放代码,

先打通

将密钥放入gitlab中

新建,将上面的密钥复制

在web01中,克隆代码,注意路径和你规定的路径一样

成功打开

6.创建普通用户dev

创建账户(模拟开发人员)

设置密码

回到管理员将dev拉入群

dev也要免密钥

7.开发上传代码的流程

复制链接

克隆代码

简述下开发的提交代码流程

修改代码(随便改)

复制代码
root@WEB02 ~/game# vim index.html
root@WEB02 ~/game# git add .
root@WEB02 ~/game# git commit -m "修改斗斗"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@WEB02.(none)')
root@WEB02 ~/game# git config --global user.email "dev@example.com"
root@WEB02 ~/game# git config --global user.name "dev"
root@WEB02 ~/game# git commit -m "修改斗斗"
[master 37f5bbc] 修改斗斗
 1 file changed, 2 insertions(+), 2 deletions(-)
root@WEB02 ~/game# git branch testing
root@WEB02 ~/game# git checkout 
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
root@WEB02 ~/game# git branch 
* master
  testing
root@WEB02 ~/game# git checkout testing  
Switched to branch 'testing'
root@WEB02 ~/game# git branch 
  master
* testing
root@WEB02 ~/game# git push -u origin testing 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 296 bytes | 296.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: 
remote: To create a merge request for testing, visit:
remote:   http://10.0.0.200/oldboy/game/-/merge_requests/new?merge_request%5Bsource_branch%5D=testing
remote: 
To 10.0.0.200:oldboy/game.git
 * [new branch]      testing -> testing
Branch 'testing' set up to track remote branch 'testing' from 'origin'.

dev和root都可以看到

请求合并

切换到root时,点击合并请求

合并

合并成功

3.Jenkins

复制代码
官网 jenkins.io
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

1.安装jenkins

复制代码
#Kylin系统 10.0.0.202 1核2G内存
#安装JDK运行环境
root@oldboy ~# yum -y install java

#使用rpm安装jenkins
root@oldboy ~# rpm -ivh jenkins-2.405-1.1.noarch.rpm

#修改启动用户为root默认使用jenkins运行
root@oldboy ~# grep root /usr/lib/systemd/system/jenkins.service
User=root
Group=root

#重新加载配置文件
root@oldboy ~# systemctl daemon-reload

#修改配置文件中的启动用户
root@oldboy ~# grep root /etc/sysconfig/jenkins
JENKINS_USER="root"

#启动
root@oldboy ~# systemctl start jenkins

注意端口号

我们自己安装插件

进入后修改密码,不然每次都要复制大长串密码

进入/var/lib/jenkins/plugins,将插件安装到此

通过网盘分享的文件:jenkins_plu.tar.gz

链接: https://pan.baidu.com/s/11O7ZM4GsQ6s2eGvDFzzHfg?pwd=1234 提取码: 1234

--来自百度网盘超级会员v5的分享

将上面的安装包拖入,解压,重启

复制代码
root@oldboy /var/lib/jenkins/plugins# tar xf jenkins_plu.tar.gz

root@oldboy /var/lib/jenkins/plugins# systemctl restart jenkins.service

有中文插件,就变成中文了

创建新项目

配置一下

可以看到工作目录

touch a.txt

创建成功

拉取代码

gitlab

jk

1.生成密钥对

2.将公钥放到gitlab下

3.在jk命令行 克隆game项目

注意这里要先在命令行通过才行,不然会一只报红

因为页面没办法输入yes

ok了

我想将jk拉取到的代码全部发给10.0.0.7

必须命令行要通过才可以(jk和web01的服务器打通)

3.Jnekins默认执行的Shell路径

复制代码
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

修改下载的网站为国内的清华园镜像

5.配置自动触发webhook勾子

在JK中打开触发器

在gitlab中打开钩子

在JK中生成令牌

将网址和令牌设置到gitlab中

测试

成功

4.SonarQube代码扫描

复制代码
jenkins将代码拉取到jenkins本地,先将代码推送到sonar服务器上代码扫描检测,检测漏洞 逻辑

创建服务器后

复制代码
1.安装java
root@sonarqube ~# yum -y install java

2.安装mysql
root@sonarqube ~# wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
root@sonarqube ~# rpm -ivh mysql-community-release-el6-5.noarch.rpm
#禁止gpgcheck
root@sonarqube ~# vim /etc/yum.repos.d/mysql-community.repo
...
# Enable to use MySQL 5.6
...
gpgcheck=0
...

root@sonarqube ~# yum -y install mariadb-server
root@sonarqube ~# service mysqld start
root@sonarqube ~# mysqladmin -uroot password Lidao996

root@sonarqube ~# mysql -uroot -pLidao996 -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"
Warning: Using a password on the command line interface can be insecure.
root@sonarqube ~# mysql -uroot -pLidao996 -e "show databases;"
Warning: Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sonar              |
+--------------------+

3.安装sonarqube
#将文件拖入
#解压
root@sonarqube ~# unzip sonarqube-7.0.zip -d /usr/local/
#创建软链接
root@sonarqube ~# ln -s /usr/local/sonarqube-7.0/ /usr/local/sonarqube
#修改连接数据库信息
root@sonarqube /usr/local/sonarqube# vim conf/sonar.properties
...
sonar.jdbc.username=root
sonar.jdbc.password=Lidao996
...
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
...

4.创建普通用户sonar
root@sonarqube /usr/local/sonarqube# useradd sonar
root@sonarqube /usr/local/sonarqube# chown -R sonar.sonar /usr/local/sonarqube-7.0/

5.使用sonar用户运行服务
root@sonarqube /usr/local/sonarqube# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"
复制代码
6.安装插件
root@sonarqube /usr/local/sonarqube/extensions/plugins# cd /usr/local/sonarqube/extensions/plugins

#将插件压缩包上传
[root@sonarqube:plugins]#rm -rf *
[root@sonarqube:plugins]#tar xf sonar_plugins.tar.gz
[root@sonarqube:plugins]#mv plugins/* .

#重启sonarqube服务
[root@sonarqube:~]#su - sonar -c"/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"

用户名和密码 admin

链接凭证:

sonar-scanner \

-Dsonar.projectKey=html \

-Dsonar.sources=. \

-Dsonar.host.url=http://10.0.0.203:9000 \

-Dsonar.login=cf97e57e5741989259e928a63170f4ba55421921

3.客户端执行代码扫描上传到sonar服务器

复制代码
#安装客户端
root@oldboy ~#unzip sonar-scanner-cli-4.2.0.1873-linux.zip -d /usr/local/
root@oldboy /usr/local# ln -s sonar-scanner-4.2.0.1873-linux/ sonar-scanner

#将客户端命令写入PATH变量
root@oldboy /usr/local/sonar-scanner# tail -1 /etc/profile
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/sonar-scanner/bin"

#执行代码扫描

sonar-scanner \
  -Dsonar.projectKey=html \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://10.0.0.203:9000 \
  -Dsonar.login=cf97e57e5741989259e928a63170f4ba55421921

运行后

刷新一下

4.配置jenkins集成soanrqube

配置服务端

保存再重新进

密码为这个

保存即可

配置客户端

配置全局工具

将之前下载的sonar路径复制

再修改一下配置文件

sonar的配置改为sonarqube的9000端口以及密码

将这三行粘到这里

复制代码
sonar.projectName=${JOB_NAME} 
sonar.projectKey=html 
sonar.sources=. 

在10.0.0.200上面修改,上传代码

成功后直接看

5.今日总结

  • gitlab的两种代码上传方式
  • gitlab合并请求
  • Jenkins的安装部署
  • Jenkins自动拉取代码更新
  • SonarQube代码自动检测
相关推荐
YH行业报告分析9 分钟前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
pengdott1 小时前
Jenkins最新版本2.585修改插件源的方法
jenkins·流水线
ajassi20001 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎1 小时前
linux 进程信号(下)
linux·运维·服务器
Mikko72 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋2 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm2 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Liuqy-052 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
考研保研资料分享3 小时前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
乐维_lwops3 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能