# cicddemo **Repository Path**: jasonliu459/cicddemo ## Basic Information - **Project Name**: cicddemo - **Description**: cicddemo jenkins sonarqube gitlab - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-28 - **Last Updated**: 2022-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 虚拟机环境 1. 内存:8g,cpu 8核,注意:gitlab消耗内存比较多,内存或者cpu过低,会导致很多异常,建议有条件尽量多给点,如果出现异常可首先查看虚拟机资源是否充足 #### 安装gitlab 1. 下载rpm安装包:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.6.6-ce.0.el7.x86_64.rpm 2. 上传到服务器 3. 安装gitlab: `rpm -ivh 安装包` 4. 修改默认请求地址: ``` vim /etc/gitlab/gitlab.rb 修改 external_url为真实ip端口 gitlab-ctl reconfigure gitlab-ctl restart ``` #### 使用gitlab 1. 登录 :用户名:root,密码:`cat /etc/gitlab/initial_root_password` 进行查看 2. 创建项目,提交项目(略) #### 安装docker 0. 安装yum util: ``` yum install yum-utils -y ``` 1. 安装阿里的yum源 ``` yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum clean all yum makecache ``` 2. 安装 ``` yum list docker-ce sudo yum install docker-ce docker-ce-cli containerd.io -y ``` 3. 安装成功后,配置阿里免费镜像源(登录阿里容器镜像服务获取) ``` mkdir -p /etc/docker/ touch /etc/docker/daemon.json cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://cbxbkuy6.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` 4. 设置开机启动: ``` systemctl enable docker.service ``` #### 安装jenkins ``` mkdir -p /docker/jenkins/data ``` 注意docker镜像,其他很多包无法下载插件 ``` docker pull jenkins/jenkins:centos7-jdk11 docker run -d -u root --restart=always \ -p 8883:8080 \ -p 50000:50000 \ -v /docker/jenkins/data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkins/jenkins:centos7-jdk11 ``` 其中 /var/run/docker.sock 和 /usr/bin/docker目录的作用是为了能在jenkins中使用宿主机的docker #### jenkins使用 1. 登录 - 访问:http://ip:8883/ - 获取密码,输入密码登录:`cat /docker/jenkins/data/secrets/initialAdminPassword` - 选择安装推荐插件,等待安装后,设置用户密码 4. 配置maven - 安装maven插件:系统管理-> 插件管理 -> available plugins -> Maven Integration - 配置maven:点击 Manage Jenkins -> Global Tool Configuration - 点击新增maven,设置名字后让其自动安装即可(熟悉maven和jenkins的话可以将settings文件配置到私库,否则可能编译很慢) 5. gitlab插件(非必要) - 安装插件:系统管理-> 插件管理 -> available plugins -> gitlab #### 安装sonarqube ``` docker pull sonarqube:9.7-community docker run -d --name sonarqube --restart=always \ -p 9000:9000 \ -v /docker/sonarqube/data:/opt/sonarqube/data \ -v /docker/sonarqube/extensions:/opt/sonarqube/extensions \ -v /docker/sonarqube/logs:/opt/sonarqube/logs \ sonarqube:9.7-community ``` #### 使用sonarqube 1. 登录 - 访问 http://1p:9000 - 输入用户名密码:admin/admin - 修改默认用户名密码 2. 插件安装 - 安装方法:下载好jar包后,将jar包放到 `/docker/sonarqube/extensions/plugins`目录下,重启sonarqube即可 - 中文插件:`https://objects.githubusercontent.com/github-production-release-asset-2e65be/6060405/2d74db31-d2e1-4aca-8bb4-851ea78094e2?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221228%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221228T031122Z&X-Amz-Expires=300&X-Amz-Signature=c0a0db76c02d73a4d9d551aa5bf72fe7c062936dea30ae009a9b68838b12972f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=6060405&response-content-disposition=attachment%3B%20filename%3Dsonar-l10n-zh-plugin-9.7.jar&response-content-type=application%2Foctet-stream` #### sonarqube和jenkins联合使用 ##### 代码部分 1. 代码部分,项目pom文件中新增依赖: ``` org.jacoco jacoco-maven-plugin 0.8.7 org.mockito mockito-inline 3.9.0 test org.springframework.boot spring-boot-maven-plugin org.jacoco jacoco-maven-plugin 0.8.7 pre-test prepare-agent post-test test report ``` 2. junittest类示例: ``` import com.example.cicddemo.dao.TestDAO; import org.junit.Test; import org.junit.jupiter.api.BeforeEach; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import static org.junit.jupiter.api.Assertions.*; @RunWith(MockitoJUnitRunner.class) public class TestServiceTest { @InjectMocks TestService testService; @Mock TestDAO testDAO; @BeforeEach public void setUp(){ /** 初始化mock **/ MockitoAnnotations.initMocks(getClass()); } @Test public void testService(){ /** 将testDAO进行mock,并设置返回值 **/ Mockito.when(testDAO.add()).thenReturn(1); /** 调用想要测试的service类 **/ testService.test(); } } ``` ##### sonarqube部分 1. 设置令牌: - 点击右上角用户图标 -> 我的账号 -> 安全 - 输入令牌名称(任意),选择类型为:全局分析令牌,过期时间选择“永不过期”,点击生成,记录下生成的秘钥,在jenkins中需要 #### jenkins部分 1. 配置sonar_scaner插件 - 系统管理-> 插件管理 -> available plugins -> sonar scaner - 全局工具配置中,新增sonarQubeScaner,配置为自动安装即可,版本 2. 配置sonarQube信息,让jenkins知道sonarqube在哪 - 系统管理->系统配置-> SonarQube servers -> add sonarqube - Server URL 配置为安装的sonarqube的地址 - 找到Server authentication token,添加认证信息,类型选择:“secret text”,将上一步中在sonarqube中生成的令牌填入 - 保存 3. 创建项目 - 首页点击新建任务 -> 构建一个maven项目 -> 配置 - 仓库选git,输入git地址比如:http://192.168.137.147/root/cicddemo.git, Credentials部分,添加类型为username with password类型的认证,输入gitlab的用户名密码即可 - build -> Goals and options 填入 clean package -Dmaven.test.failure.ignore=true - Post Steps 选择 Run only if build succeeds - add post-build step 选择Execute SonarQube Scaner,并在 Analysis properties填入如下信息,每个项目需要改动名称 ``` # 项目标识符,在给定的 SonarQube 中必须是唯一的 sonar.projectKey=testDemo sonar.projectVersion=1.0 sonar.sources=src/main/java sonar.java.binaries=target/classes sonar.language=java #单元测试覆盖率 sonar.sourceEncoding=UTF-8 sonar.core.coveragePlugin=jacoco sonar.jacoco.reportPaths=target/jacoco.exec sonar.java.test.binaries=target/test-classes sonar.coverage.exclusions=**/entity/** sonar.login=sqa_7bfb48fbb4fc976ec91f3fe79674fe0845db3cfd ``` 4. 构建项目 - 点击立即构建,可以点击构建id -> 控制台输出 查看构建日志 ##### 登录sonarqube查看编译结果