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 denied
chmod 777 /var/run/docker.sock

重启Jenkins服务

0%