Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

  • docker搭建gitlab

安装 postgresql container

sudo docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:9.4-12
  • 安装 redis container
sudo docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis:/var/lib/redis sameersbn/redis:latest
  • 安装Jenkins
sudo docker run -d -u root --name myjenkins -p 8084:8080 -p 50000:50000 -v $PWD/jenkins:/var/jenkins_home -v $PWD/jenkins/docker.sock:/var/run/docker.sock jenkins
  • 安装Publish Over SSH插件
首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装。
设置服务器SSH信息
首先在容器中生成rsa密钥:
# 从宿主机客户进入容器,目前容器名myjenkins,也可通过docker ps 查看
$ docker exec -it myjenkins /bin/bash
# 进入容器后建立.ssh目录,创建密钥文件私钥id_rsa,公钥id_rsa.pub
~ mkdir ~/.ssh && cd ~/.ssh
~ ssh-keygen -t rsa
# 一直回车即可
  • 启动gitlab-runner
docker run -d --name gitlab-runner --restart always -v $PWD/gitlab-runner/config:/etc/gitlab-runner -v $PWD/gitlab-runner/docker.sock:/var/run/docker.sock gitlab/gitlab-runner
  • 安装sonar

  1、Sonar介绍
  Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

  2、配置数据库
  Apache Derby 是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql为例介绍如何配置数据库:

  1)创建数据库

CREATE DATABASE sonar ACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

  2)编辑${SONAR_HOME}/conf/sonar.properties配置数据库:

sonar.jdbc.username:                       sonar
sonar.jdbc.password: sonar
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
# Optional properties
sonar.jdbc.driverClassName: com.mysql.jdbc.Driver

  3)配置DB驱动包

  如果使用Oracle数据库,必须手动复制驱动类到${SONAR_HOME}/extensions/jdbc-driver/oracle/目录下。其它支持的数据库默认提供了驱动。

  3、安装、配置Sonar

  创建运行sonar的CentOS账户sonar,并设置账户密码:
  # useradd sonar
  # passwd sonar
  Sonar默认集成了jetty容器,可以直接启动提供服务,也可以通过脚本构建为war包,部署在tomcat容器中。

1)直接启动
编辑.bash_profile,添加环境变量SONAR_HOME
$ vi $HOME/.bash_profile
修改成如下内容:
  PATH=$PATH:$HOME/bin
  SONAR_HOME=$HOME/sonar
  export PATH SONAR_HOME
$source $HOME/.bash_profile
运行如下命令启动sonar
$ {SONAR_HOME}/bin/linux-x86-64/sonar.sh start
Sonar默认的端口是”9000”、默认的上下文路径是”/”、默认的网络接口是”0.0.0.0”,默认的管理员帐号和密码为:admin/admin,这些参数都可以在配置文件中修改:
$ vi ${SONAR_HOME}/conf/sonar.properties

  4、配置为自启动服务

  创建自启动脚本文件/etc/init.d/sonar

  # vi /etc/init.d/sonar    ##添加如下内容

#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*

添加启动服务
# ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar
# chmod 755 /etc/init.d/sonar
# chkconfig --add sonar

5、配置插件
a)插件介绍
Sonar支持多种插件,将下载后的插件上传到${SONAR_HOME}extensions\plugins目录下,重新启动sonar。

  sonar默认集成了Java Ecosystem插件,该插件是一组插件的合集:

Java [sonar-java-plugin]:java源代码解析,计算指标等
Squid [sonar-squid-java-plugin]:检查违反Sonar定义规则的代码
Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle检查违反统一代码编写风格的代码
FindBugs [sonar-findbugs-plugin]:使用FindBugs检查违反规则的缺陷代码
PMD [sonar-pmd-plugin]:使用pmd检查违反规则的代码
Surefire [sonar-surefire-plugin]:使用Surefire执行单元测试
Cobertura [sonar-cobertura-plugin]:使用Cobertura获取代码覆盖率
JaCoCo [sonar-jacoco-plugin]:使用JaCOCO获取代码覆盖率

  其他常用的插件
  JavaScript代码检查,python代码检查,Web页面检查(HTML、JSP、JSF、Ruby、PHP等),xml文件检查,scm源码库统计分析,文件度量,中文语言包,时间表显示度量结果,度量结果演进图

Jenkins持续集成 docker、gitlab、sonar的更多相关文章

  1. gitlab+gerrit+jenkins持续集成框架

    1.持续集成之gitlab+gerrit+jenkins 1.1. GitLab 1.1.1. 简介 GitLab 是一个使用使用Ruby on Rails搭建的,用于仓库管理系统的开源项目.使用Gi ...

  2. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

  3. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  4. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  5. 持续集成之④:GitLab触发jenkins构建项目

    持续集成之④:GitLab触发jenkins构建项目 一:目的为在公司的测试环境当中一旦开发向gitlab仓库提交成功代码,gitlab通知jenkins进行构建项目.代码质量测试然后部署至测试环境, ...

  6. Jekens 配置多项目SCM GitLab+Jenkins持续集成环境

    参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...

  7. Docker+Jenkins持续集成

    Docker+Jenkins持续集成 使用etcd+confd实现容器服务注册与发现   前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇 ...

  8. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  9. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  10. Jenkins持续集成相关文章整理

    构建iOS持续集成平台(一)——自动化构建和依赖管理 构建iOS持续集成平台(二)——测试框架 构建iOS持续集成平台(三)——CI服务器与自动化部署 使用Jenkins搭建iOS开发的CI服务器 一 ...

随机推荐

  1. dart 中在实例化 new 关键字可以省略不写

    dart 中在实例化 new 关键字可以省略不写 class Person { String name; int age; String sex; Person(this.name, this.age ...

  2. PostgreSQL:数据库迁移与版本控制

    title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...

  3. Kali Linux 安装教程

    Kali Linux 安装教程 下载镜像文件 Kali官网下载 访问Kali官网(https://www.kali.org/ ),根据下图所示进行下载 清华大学开源软件镜像站下载 访问清华大学开源软件 ...

  4. 管理虚拟机(libvirt)

    给我的理解就是与用户交互的"显示器" [root@kvm1 ~]# systemctl status libvirtd [root@kvm1 ~]# virsh virsh # l ...

  5. 如何在ubuntu[linux] 上用docker安装Sqlserver

    本次按照目前最新版本Sqlserver2022进行记录 先决条件 任何受支持的 Linux 发行版上的 Docker 引擎 1.8 及更高版本. 有关详细信息,请参阅 Install Docker(安 ...

  6. Mybatis 返回自增主键的id

    Mybatis 返回自增主键的idkeyProperty=id:封装到对象中的id字段当中keyColumn=id:封装到数据库的id这一列order=AFTER:在新增语句之后执行 方法一 < ...

  7. AI 发展下的伦理挑战,应当如何应对?

    一.构建可靠的 AI 隐私保护机制 在当今数字化时代,人工智能的广泛应用给我们的生活带来了诸多便利,但与此同时,个人隐私保护问题也日益凸显.在不牺牲个人隐私的前提下,设计和实施有效的数据保护措施,特别 ...

  8. luogu-P3262题解

    简要题意 有一棵不超过十层的满二叉树,需要对每个节点进行染色.每个叶子节点会对其颜色相同的祖先节点产生贡献且黑白贡献不同.求最大贡献. 题解 首先我会暴力!我如果直接暴力枚举每个节点的颜色,复杂度就是 ...

  9. 基于注意力机制与改进TF-IDF的推荐算法

    前言 本篇文章是2020年8月发表于<计算机工程>的一篇期刊论文,文章名称<基于注意力机制与改进TF-IDF的推荐算法>. 文章针对传统推荐系统主要依赖用户对物品的评分数据而无 ...

  10. 使用Express对mysql进行增改查操作(完全代码版本)

    使用Express对mysql进行增改查操作(完全代码版本) 今天发的是Express对mysql进行增删改操作的所有代码,这个代码还没有完善好,都是一些基础的增删改查操作,有一些地方也写上了注释方便 ...