物理机 gogs+jenkins+sonarqube 实现CI/CD

一、部署gogs_0.11.91_linux_amd64.tar.gz

gogs官网下载:https://dl.gogs.io/

yum -y install mariadb-serversystemctl start mariadbsystemctl enable mariadbuseradd gittar zxvf gogs_0.11.91_linux_amd64.tar.gzcd gogsmysql -u root -p < scripts/mysql.sqlmv gogs /home/git/chown -R git.git /home/git/gogs/su - gitcp /home/git/gogs/scripts/init/centos/gogs /etc/init.d/chmod +x /etc/init.d/gogs/etc/init.d/gogs start

二、部署安装jdk-11.0.9_linux-x64_bin.tar.gz

  当前最新版本下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

  历史版本下载地址:  http://www.oracle.com/technetwork/java/javase/archive-139210.html   

账号:2696671285@qq.com 密码:Oracle123

三、部署jenkins(apache-tomcat-9.0.41.tar.gz jenkins.war)

见链接:Jenkins+Gitlab持续集成综合实战-CSDN博客

四、gogs+jenkins

1、添加Web钩子

2、设置web钩子的详情

这里的推送地址是http://jenkins地址:端口号/generic-webhook-trigger/invoke?token=密钥,这里的密钥是要与后面在jenkins里面的密钥设置一致。触发web钩子的事件可以自己设置什么样的事件去触发jenkins的构建

这里设置完了之后可以点击测试推送,点击测试记录可以看到发送给jenkins的推送详情了。其中ref就是推送过去的分支啦。以下的推送的内容都是可以通过文章后面设置jenkins变量来获得的。(底下绿色圈出的部分是我jenkins中需要用的变量)

jenkins

更多见:Jenkins+Gitlab持续集成综合实战-CSDN博客

五、部署sonarqube-8.6.0.39681.zip

官方文档地址:Try out SonarQube

useradd sonarqubeyum install ncurses* readline* zlib* -yunzip sonarqube-8.6.0.39681.zipmv sonarqube-8.6.0.39681 /home/sonarqubecd /home/sonarqube/chown -R sonarqube.sonarqube ./*su - sonarqube[root@gogs conf]# cd /home/sonarqube/sonarqube-8.6.0.39681/conf/
[root@gogs conf]# cat sonar.properties
#找到下面,并根据postgresql改写
sonar.jdbc.url=jdbc:postgresql://localhost/sonar?currentSchema=public
sonar.jdbc.username=test名
sonar.jdbc.password=123456cd /home/sonarqube/sonarqube-8.6.0.39681/bin/linux-x86-64./sonar.sh start#启动脚本
vim /etc/systemd/system/sonarqube.service[Unit]
Description=SonarQube service
After=syslog.target network.target[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup /usr/local/jdk-11.0.9/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /home/sonarqube/sonarqube-8.6.0.39681/lib/sonar-application-8.6.0.39681.jar
StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143[Install]
WantedBy=multi-user.target

六、部署postgresql-11.10.tar.gz(sonarqube数据存储)

useradd postgrestar zxvf postgresql-11.10.tar.gzmv postgresql-11.10 /usr/src/cd /usr/src/postgresql-11.10./configure --prefix=/usr/local/pgsql-11.10chown -R postgres.postgres /usr/local/pgsql-11.10/ln -s /usr/local/pgsql-11.10/ /usr/local/pgsqlln -sv /usr/local/pgsql-11.10/bin/* /usr/local/bin/ln -s /usr/local/pgsql-11.10/lib/libpq.so.5 /usr/lib64/libpq.so.5su - postgres#环境变量
[root@gogs ~]# cat /home/postgres/.bash_profile 
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PGDATA=/usr/local/pgsql-11.10/dataexport PATH#前往文件安装所在地,修改pg_hba.conf配置文件
[postgres@gogs data]$ cp pg_hba.conf pg_hba.conf.`date +%F`
[postgres@gogs data]$ vim pg_hba.conf
#######################################
# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
#host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               md5     #所有ip都可以通过密码连接
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
#######################################前往文件安装所在地,修改postgresql.conf配置文件
[postgres@gogs data]$ cd /usr/local/pgsql/data/
[postgres@gogs data]$ cp postgresql.conf postgresql.conf.`date +%F`
[postgres@gogs data]$ vim postgresql.conf
#########################################
# - Connection Settings -listen_addresses = '*'  #为了方便,监听所有# what IP address(es) to listen on;# comma-separated list of addresses;# defaults to 'localhost'; use '*' for all# (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories# (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
##########################################创建日志目录
mkdir /usr/local/pgsql/log#启动
pg_ctl start -l /usr/local/pgsql-11.10/log/pg_server.log

 进入库的一些小操作

[postgres@gogs data]$ psql    #进入库
psql (10.5)
Type "help" for help.postgres=# \password    #设置密码
Enter new password: 
Enter it again: 
postgres=# CREATE DATABASE sonar;       #创建库
CREATE DATABASE
postgres=# \du    #查看用户List of rolesRole name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}postgres=# 
postgres=# \l    #查看数据库列表List of databasesName    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------sonar      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgres
(4 rows)postgres=# 
postgres=# create user test名 superuser password '123456';    #创建用户及密码
CREATE ROLE
postgres=# 

七、部署nginx-1.18.0.tar.gz(代理sonarqube)

yum -y install pcre-devel zlib-develuseradd -M -s /sbin/nologin nginxtar zxvf nginx-1.18.0.tar.gz -C /usr/srccd /usr/src/nginx-1.18.0./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_modulemake && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/#启动脚本
vim /lib/systemd/system/nginx.service[Unit]
Description=nginxapi
After=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=kill -s HUP $(cat /usr/local/nginx/logs/nginx.pid)
ExecStop=kill -s QUIT $(cat /sr/local/nginx/logs/nginx.pid)
PrivateTmp=Flase[Istall]
WantedBy=multi-user.target

八、sonarqube 集成 golangci-lint

一、golangci-lint使用:

以下是window下安装方法,结合vscode使用, 其他平台也可以参考

(1)常规安装方法

使用命令: 

go get -u github.com/golangci/golangci-lint/cmd/golangci-lint

一般的第三方工具通过上面方法基本能安装成功,无非就是下载慢点,可golangci-lint就是不按照套路来,很不幸,通过上面方法,除非你的golang版本与最新的golangci-lint版本一致,否则,就会报以下错误:

# github.com/golangci/golangci-lint/internal/cache
..\..\..\..\github.com\golangci\golangci-lint\internal\cache\default.go:76:15: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/config
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\config\config.go:23:17: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/internal/cache
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\internal\cache\default.go:76:15: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/ssa
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\ssa\builder.go:61:16: undefined: types.NewInterfaceType

(2)正确安装方式

上述方法之所以安装不成功,主要是golang版本和golangci-lint版本不一致导致导致的;

1. 官方版本对应描述如下:

go < 1.9 isn't supported
go1.9 is officially supported by golangci-lint <= v1.10.2
go1.10 is officially supported by golangci-lint <= 1.15.0.
go1.11 is officially supported by golangci-lint <= 1.17.1.
go1.12+ are officially supported by the latest version of golangci-lint (>= 1.18.0).

2. 大家可以这个地址找到自己golang对应版本:

https://github.com/golangci/golangci-lint/releases

如我的go1.10, 需要用golangci-lint-1.15.0版本

3. 下载后直接解压

解压后将golangci-lint.exe文件直接放到GOPATH\bin目录下就可以直接使用了

(3)正确使用

1.使用命令使用格式

该命令可以在vscode的终端下直接使用

命令格式: golangci-lint run [目录]/[文件]

错误使用方式,又一个不按套路来的命令,文件我们一般习惯用“*”表示,但golangci-lint 确不认这种方式,会报如下错误:

执行命令:

golangci-lint run ./iss/*

报错:

level=error msg="[runner/typecheck] typechecking error: cannot find package \"XXXX/iss/*\" in any of:XXXX\\iss\\* (from $GOROOT)\n\tXXXX\\iss\\* (from $GOPATH)"
level=warning msg="[runner/megacheck] Can't run megacheck because of compilation errors in packages [xxxxx/iss/*]: -: cannot find package \"xxxx/iss/*\" in any of:\n\txxxx\\iss\\* (from $GOROOT)\n\txxxx\\iss\\* (from $GOPATH)"

2.正确使用方式

官网推荐三种使用方式:golangci-lint rungolangci-lint run ./...这里...代表的就是检测目录下所有的文件golangci-lint run dir1 dir2/... dir3/file1.go

二、sonarqube集成golangci-lint:

sonar客户端扫描#

在项目根目录新建一个名为sonar-project.properties的文件

# must be unique in a given SonarQube instance
sonar.projectKey=test                            #sonar平台中相对应项目的key
sonar.projectName=test                           #sonar平台中相对应项目的名字sonar.host.url=http://localhost:9000            sonar.sources=.                                  #sonar检测的源文件目录,‘.’表示当前根目录下的所有文件目录;包含主要源文件的目录的逗号分隔路径
sonar.exclusions=**/*_test.go,**/vendor/**       #检测中排除的源文件(排除的源文件不参与检测,一般排除单元测试文件、配置文件等)sonar.tests=.                                    #sonar检测的测试文件目录,‘.’表示当前根目录下的所有文件目录;包含测试源文件的目录的逗号分隔路径。从构建系统中读取Maven,Gradle,MSBuild项目。否则默认为空。
sonar.test.inclusions=**/*_test.go               #检测中的测试源文件(指定单元测试文件)
sonar.test.exclusions=**/vendor/**               #检测中排除的测试源文件(排除的源文件不参与检测)sonar.sourceEncoding=UTF-8sonar.go.golangci-lint.reportPaths=sonar/golangcilint.xml

设置成功后保存,进入到项目的根目录下就是sonar-project.properties的目录下面打开命令行  输入 sonar-scanner

稍等一会儿,就可以在sonarqube的web界面中看到分析结果

附:golang语言配置

sonar.go.coverage.reportPaths=report/coverage.out                  #go的覆盖率报告文件位置
sonar.go.tests.reportPaths=report/test.json                        #go的单元测试报告文件位置
sonar.go.govet.reportPaths=report/govet-report.out                 #go的源码中静态错误报告文件位置
sonar.go.gometalinter.reportPaths=report/gometalinter-report.out   #go的gometalinter代码规范报告文件位置
sonar.go.golint.reportPaths=report/golint-report.out               #go的golint代码规范报告文件位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1487877.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

xLua | xLua Framework | 2 加载

0. 基础 0.1 不同加载模式 测试用 编辑器模式&#xff1b;打包模式&#xff1b;更新模式 public enum GameMode {EditorMode,PackageBundle,UpdateMode, } 0.2 加载资源步骤与接口 private void LoadAsset(string assetName, Action<Object> action) {if (AppConst.G…

c++ 求解质因数(细节详解)

定义 这里先来了解几个定义&#xff08;如已了解&#xff0c;可直接看下一个板块&#xff09; 因数&#xff1a;又称为约数&#xff0c;如果整数a除以整数b&#xff08;b0&#xff09;的商正好是是整数而没有余数&#xff0c;我们就说b是a的因数 质数&#xff1a;又称为素数…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

儿童洗衣机什么牌子质量好?五款质量上乘机型推荐

在当今繁忙的生活中&#xff0c;儿童洗衣机已成为我们日常生活中不可或缺的家电。但是&#xff0c;面对市场上众多品牌的儿童洗衣机&#xff0c;那么&#xff0c;到底儿童洗衣机哪个牌子好&#xff1f;本次我将在这篇文章中探讨儿童洗衣机的选购策略&#xff0c;以帮助大家找到…

Logitech Media Server已更名为Lyrion Music Server

还以为是个新软件&#xff0c;折腾之后来才发现 &#xff0c;Lyrion Music Server 原名叫 Logitech Media Server&#xff0c;只是现在它已不再由 Logitech 拥有和维护&#xff0c;已完全移交给社区&#xff0c;因此更名&#xff0c;但简称依然还是 LMS。镜像目前还是延续了 lo…

Python Flask入门到精通:详细教程和实战案例

前言 Flask是一个轻量级的Web框架&#xff0c;用于快速开发Web应用程序。它的设计理念是简洁、灵活和易于扩展&#xff0c;非常适合于从简单的单页应用到复杂的大型项目。通过Flask&#xff0c;可以创建各种Web应用程序&#xff0c;比如博客、电子商务网站、RESTful API等。 …

在 LCD 上显示 png 图片-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

在 LCD 上显示 png 图片 PNG 简介 无损压缩&#xff1a;PNG 使用 LZ77 派生算法进行无损压缩&#xff0c;确保图像质量不受损&#xff0c;且压缩比高 体积小&#xff1a;通过高压缩比&#xff0c;PNG 文件体积小&#xff0c;适合网络传输 索引彩色模式&#xff1a;PNG-8 格式…

结合el-upload上传组件,验证文件格式及大小

结合el-upload上传组件&#xff0c;验证文件格式及大小 效果如下&#xff1a; 代码如下&#xff1a; upgradeFirmwareInfo.vue页面 <template><div><el-dialog title"新增固件升级包" :visible.sync"dialogFormVisible"top"7vh&qu…

一年八百倍!刘邦不装杯!——早读(逆天打工人爬取热门微信文章解读)

台风格美&#xff0c;是比较倾向内陆的&#xff0c;大家注意安全 引言Python 代码第一篇 洞见 读懂了刘邦的人性哲学&#xff0c;你迟早脱离底层第二篇 看看新闻了 不小心越写越俗结尾 引言 这行情我TM真的越来越看不懂 现在的互联网太恐怖了 以前还好 很多散户都是懵懂懂的 现…

Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)

**15.28(显示一个转动的风扇) 编写一个程序显示一个转动的风扇&#xff0c;如图15-33c所示。Pause、Resume和Reverse按钮用于暂停、继续和反转风扇的转动 可修改编程练习题14_9的代码 习题思路&#xff1a; 新建一个BorderPane&#xff0c;一个Pane和一个HBox&#xff0c;P…

javafx的ListView代入项目的使用

目录 1. 创建一个可观察的列表&#xff0c;用于存储ListView中的数据,这里的User是包装了用户的相关信息。 2.通过本人id获取friendid&#xff0c;及好友的id&#xff0c;然后用集合接送&#xff0c;更方便直观一点。 3.用for遍历集合&#xff0c;逐个添加。 4.渲染器&…

Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab运行原理

PythonPytestAllureYamlPymysqlJenkinsGitLab运行原理逻辑及调用关系 GitLab代码仓&#xff1a; Jenkins工作空间&#xff1a; 代码&#xff1a; 测试报告展示&#xff1a;

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…

Python3网络爬虫开发实战(1)爬虫基础

一、URL 基础 URL也就是网络资源地址&#xff0c;其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme&#xff1a;协议&#xff0c;常用的协议有 Http&#xff0c;https&#xff0c;ftp等等&#xff1b;usern…

数据库(MySQL)-DQL数据查询语言

DQL(Data Query Language 数据查询语言)的用途是查询数据库数据&#xff0c;如select语句。其中&#xff0c;可以根据表的结构和关系分为单表查询和多表联查。 单表查询 单表查询&#xff1a;针对数据库中的一张数据表进行查询 全字段查询 语法&#xff1a;select 字段名 fro…

C# 实现条件变量

C# 进程通信系列 第一章 共享内存 第二章 条件变量&#xff08;本章&#xff09; 第三章 消息队列 文章目录 C# 进程通信系列前言一、关键实现1、用到的主要对象2、初始化区分创建和打开3、变量放到共享内存4、等待和释放逻辑 二、完整代码三、使用示例1、线程同步控制2、进程…

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装&#xff0c;配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…

【PyTorch】图像多分类项目

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 【PyTorch】图像多分类项目 【PyTorch】图像多分类项目部署 多类图像分类的目标是为一组固定类别中的图像分配标签。 目录 加载和处理数据 搭建模型 定义损失函数 定义优化器 训练和迁移学习 用随机权重进行训…

【HTML — 构建网络】HTML 入门

在本文中,我们将介绍 HTML 的绝对基础知识。为了帮助您入门,本文定义了元素、属性以及您可能听说过的所有其他重要术语。它还解释了这些在 HTML 中的位置。您将学习 HTML 元素的结构、典型的 HTML 页面的结构以及其他重要的基本语言功能。在此过程中,也将有机会玩转 HTML! …

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中&#xff0c;我们写了一些注释&#xff0c;如下所示&#xff1a; 但是再次打开注释会变成乱码&#xff0c;如下所示&#xff1a; 那么如何解决呢&#xff1f; 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…