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服务