安装postgres和sonarqube

安装postgres和sonarqube

创建postgres

docker pull postgres:11.4
mkdir -p /data/sonar/postgresql

postgres.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-sonar
  labels:
    app: postgres-sonar
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-sonar
  template:
    metadata:
      labels:
        app: postgres-sonar
    spec:
      nodeSelector:
        kubernetes.io/hostname: 192.168.11.18
      containers:
      - name: postgres-sonar
        image: postgres:11.4
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_DB
          value: sonardb
        - name: POSTGRES_USER
          value: sonar
        - name: POSTGRES_PASSWORD
          value: sonar
        resources:
          limits:
            cpu: 1000m
            memory: 1024Mi
          requests:
            cpu: 256m
            memory: 512Mi
        volumeMounts:
          - name: data
            mountPath: /var/lib/postgresql/data
      volumes:
        - name: data
          hostPath:
            path: /data/sonar/postgresql
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-sonar
  labels:
    app: postgres-sonar
spec:
  clusterIP: None
  ports:
  - port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    app: postgres-sonar

create

# kubectl create -f postgres.yml
# kubectl exec -it pod-name bash
root@****:/# psql --username=sonar --dbname=sonardb

创建sonarqube

docker pull sonarqube:lts
mkdir -p /data/sonar/sonarqube
# 重要到一下午都是因为 sonarqube的用户是sonarqube,uid=999
chmod -R 777 /data/sonar/sonarqube

sonar.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sonarqube
  labels:
    app: sonarqube
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sonarqube
  template:
    metadata:
      labels:
        app: sonarqube
    spec:
      nodeSelector:
        kubernetes.io/hostname: 192.168.11.18
      initContainers:
      - name: init-sysctl
        image: busybox
        imagePullPolicy: IfNotPresent
        command: ["sysctl", "-w", "vm.max_map_count=262144"]
        securityContext:
          privileged: true
      containers:
      - name: sonarqube
        image: sonarqube:lts
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9000
        securityContext:
          privileged: true
        env:
        - name: SONARQUBE_JDBC_USERNAME
          value: "sonar"
        - name: SONARQUBE_JDBC_PASSWORD
          value: "sonar"
        - name: SONARQUBE_JDBC_URL
          value: "jdbc:postgresql://postgres-sonar:5432/sonardb"
        volumeMounts:
        - mountPath: /opt/sonarqube/data
          name: data
          subPath: data
        - mountPath: /opt/sonarqube/extensions
          name: data
          subPath: extensions
        - mountPath: /opt/sonarqube/logs
          name: data
          subPath: logs
      volumes:
      - name: data
        hostPath:
          path: /data/sonar/sonarqube
---
apiVersion: v1
kind: Service
metadata:
  name: sonarqube
  labels:
    app: sonarqube
spec:
  type: NodePort
  ports:
    - name: sonarqube
      port: 9000
      targetPort: 9000
      nodePort: 30003
      protocol: TCP
  selector:
    app: sonarqube

create

# kubectl create -f sonar.yml
# kubectl logs -f pod-name

登录

密码 admin/admin
在这里插入图片描述

安装jenkins

jenkinsci/blueocean  latest  d58c233718a1  5 months ago  562MB

docker run -u root \
-d \
-p 9999:8080 \
-p 50000:50000 \
-v /data/jenkins/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/java/maven:/usr/java/maven \
-v /etc/localtime:/etc/localtime:ro \
--name jenkins jenkinsci/blueocean


# 密码在 /var/jenkins_home/secrets/initialAdminPassword
# 登录之后,把下载的插件放到/var/jenkins_home/plugins中,重启服务就可以了,但是不要把.hpi文件删除,好像如果删除了重启服务,并不会加载刚刚加入的插件。

使用

安装对应版本的插件

sonarqube插件 https://www.sonarplugins.com/java
安装好了sonarqube之后,其实里面啥都没有,需要安装插件

SonarQube™ technology is powered by SonarSource SA
Community Edition版本 7.9.5 (build 38598)LGPL v3社区文档获取支持插件Web接口关于

没有安装的话,也必须安装。否则会报错。没有安装语言会报错Language没安装,插件安装失败还会提示一大堆类不能加载。这个不能加载类的问题用了我好久时间,最后还是在英文网站看到的解决方案。于是感觉国内的网站除了少数的好,其他的都是垃圾吧。
插件版本不对报错信息如下:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:
3.7.0.1746:sonar (default-cli) on project shqhportal: Unable to load component c
lass org.sonar.scanner.scan.filesystem.ProjectFileIndexer: Unable to load compon
ent class org.sonar.scanner.scan.filesystem.FileIndexer: Unable to load componen
t class org.sonarsource.dotnet.shared.plugins.WrongEncodingFileFilter: org.sonar
source.dotnet.shared.plugins.WrongEncodingFileFilter has unsatisfied dependency
'class org.sonarsource.dotnet.shared.plugins.AbstractConfiguration' for construc
tor 'public org.sonarsource.dotnet.shared.plugins.WrongEncodingFileFilter(org.so
narsource.dotnet.shared.plugins.EncodingPerFile,org.sonarsource.dotnet.shared.pl
ugins.AbstractConfiguration)' from org.sonar.core.platform.ComponentContainer$Ex
tendedDefaultPicoContainer@6a0094c9:271<[Immutable]:org.sonar.core.platform.Comp
onentContainer$ExtendedDefaultPicoContainer@69909c14:45<| -> [Help 1]

下载后把插件放在extensions/plugins目录下,没有plugins目录就新建一下。
重启sonarqube就可以了。

检测

在自己的开发机器的maven的settings.xml文件中加入

	<proxies>
		<proxy>
			<id>optional</id>
			<active>true</active>
			<protocol>http</protocol>
			<username>*****</username>
			<password>*****</password>
			<host>******</host>
			<port>***</port>
			<nonProxyHosts>192.168.***.***|192.168.11.18</nonProxyHosts>
		</proxy>
	</proxies>
	<pluginGroups>
	  <pluginGroup>org.codehaus.cargo</pluginGroup>
	  <!--sonar配置--> 
	  <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
	</pluginGroups>
	
	<profiles>
	     <profile>
           <id>sonar</id>
           <activation>
              <activeByDefault>true</activeByDefault>
           </activation>
           <properties>
               <!--              <sonar.jdbc.url>jdbc:postgresql://192.168.11.18:5432/sonardb</sonar.jdbc.url>
              <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
              <sonar.jdbc.username>sonar</sonar.jdbc.username>
              <sonar.jdbc.password>sonar</sonar.jdbc.password>
SERVER ON A REMOTE HOST -->
			  <sonar.login>admin</sonar.login>
              <sonar.password>admin</sonar.password>
              <sonar.host.url>http://192.168.11.18:30003</sonar.host.url>
           </properties>
        </profile>
......        

sonar:sonar

/# mvn clean compile  sonar:sonar -Dsonar.java.binaries=target/classes
....
[INFO] Analysis total time: 1:03.805 s
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:17 min
[INFO] Finished at: 2020-12-23T13:08:30+08:00
[INFO] Final Memory: 66M/769M
[INFO] ------------------------------------------------------------------------

采坑

  1. post的yml文件密码账户不用带有“”双引号
  2. sonar的hostPath目录权限开通 chmod -R 777
  3. sonarqube安装的插件版本要对应
  4. mvn clean compile sonar:sonar -Dsonar.java.binaries=target/classes都要有。多个calass目录怎么办?

猜你喜欢

转载自blog.csdn.net/xiaolixi199311/article/details/111564824