Docker-Compose部署Jenkins
          目录
          
        
        
      docker-compose部署jenkins
version: '3.5'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: jenkins
    environment:
      TZ: Asia/Shanghai
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home启动报错:Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
chmod 777 data验证安装:http://localhost:8080/


设置admin用户:admin/12345678

如果出现离线检查失败;修改配置
修改 ./data/updates 下面的 default.json 文件
将 www.google.com 修改为 www.baidu.com

如果插件下载慢改修改插件下载源:修改 ./data/hudson.model.UpdateCenter.xml 然后重启Jenkins
略;
插件地址查询:http://mirrors.jenkins-ci.org/status.html
第二种方式:jenkins》系统管理》管理插件》高级:升级站点
汉化:系统管理》插件管理
搜索:Locale 下载安装重启。



安装插件:搜索:maven integration ssh plugin
踩坑:docker 启动的Jenkins 还需要挂载宿主机的 maven,java家目录路径
eg:
我的云服务器[101.34.xx.xx]
- maven家目录:/usr/local/maven/apache-maven-3.6.3
- java家目录:/usr/local/java/jdk1.8.0_241
踩坑: (Permission denied) and ‘parent.relativePath’ points at no local POM @ line 4, column 13
需要给宿主机的maven repository 目录以及子目录添加可读写的权限。然后重启Jenkins
- 同时需要给仓库目录添加权限:chmod -R o+r+w /usr/local/maven/apache-maven-3.6.3/repository
需要将这两个目录挂载到Jenkins容器中修改配置,重新启动
version: '3.5'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: jenkins
    environment:
      TZ: Asia/Shanghai
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home
      - /usr/local/maven:/usr/local/maven
      - /usr/local/java:/usr/local/java
    deploy:
      resources:
        limits:
          memory: 2048M查看效果:

在Jenkins中配置jdk和maven环境变量



配置Jenkins全局变量



在项目中使用maven构建项目:


构建结果:

构建流水线项目



结果


Jenkins 集成SonarQube
安装SonarQube:
参考:docker-sonarqube.md
jenkins 安装sonarqube scanner 插件
进入Jenkins插件管理自行安装即可
在Linux上安装 sonarqube scanner客户端
下载sonarqube-scanner安装包:
上传至服务器:101.34.xx.xx:/usr/local/sonarqube-scanner 目录下
解压:
unzip sonar-scanner-cli-4.6.2.2472-linux.zip配置环境变量:
vim  /etc/profile
# 配置sonar-csanner 环境变量
export SONAR_SCANNER_HOME=/usr/local/sonarqube-scanner/sonar-scanner-4.6.2.2472-linux
export PATH=$PATH:$SONAR_SCANNER_HOME/bin查看:
sonar-scanner --version结果:
INFO: Scanner configuration file: /usr/local/sonarqube-scanner/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.6.2.2472
INFO: Java 11.0.11 AdoptOpenJDK (64-bit)
INFO: Linux 3.10.0-1160.31.1.el7.x86_64 amd64将sonar-scanner挂载到Jenkins中去:
sonar-scanner家目录: /usr/local/sonarqube-scanner/sonar-scanner-4.6.2.2472-linux
version: '3.5'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: jenkins
    environment:
      TZ: Asia/Shanghai
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home
      - /usr/local/maven:/usr/local/maven
      - /usr/local/java:/usr/local/java
      - /usr/local/sonarqube-scanner:/usr/local/sonarqube-scanner
    deploy:
      resources:
        limits:
          memory: 2048M重启Jenkins

在SonarQube中生产凭证

在Jenkins中添加凭证

在Jenkins中配置SonarQubeserver

Jenkins-SonarQube 非流水线项目
添加:

添加配置:
# 项目名称全局唯一标识(自定义)
sonar.projectKey=scms
# 项目名称(和Jenkins的workspace里面的项目名称一致)
sonar.projectName=test-gitee
# 项目版本号
sonar.projectVersion=1.0
# 扫描路径
sonar.sources=./src/main/**
# 不需要扫描路径
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
# 编码格式
sonar.sourceEncoding=UTF-8
构建项目:

构建成功:

Jenkins推送镜像到harbor时还需要挂载docker相关数据卷:
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/docker:/etc/docker完整yml文件如下:
version: '3.5'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: jenkins
    environment:
      TZ: Asia/Shanghai
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home
      - /usr/local/maven:/usr/local/maven
      - /usr/local/java:/usr/local/java
      - /usr/local/sonarqube-scanner:/usr/local/sonarqube-scanner
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/docker:/etc/docker
    deploy:
      resources:
        limits:
          memory: 2048M并且赋予 /var/run/docker.sock 777权限
解决报错:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth: dial unix /var/run/docker.sock: connect: permission deniedchmod 777 /var/run/docker.sock重启Jenkins服务
