GitLab和Redmine深度集成

Redmine Issue Tracker

  1. 设置Redmine Issue Tracker
    在GitLab的项目setting里面找到integrations,找到redmine
    修改如下:

  2. 关闭内置issue

    setting->general->Permissions

Redmine 启用版本库

  1. 进入redmine容器

    docker exec -it redmine /bin/bash
    
  2. 安装插件redmine_gitlab_hook

    进入/usr/src/redmine/plugins目录

    git clone https://github.com/phlegx/redmine_gitlab_hook.git
    

    登录redmine管理员,管理->插件,找到Redmine GitLab Hook plugin,进入配置

  3. 创建本地git仓库并拉取

    mkdir -p /home/redmine/git-repo #创建本地git仓库
    cd /home/redmine/git-repo/
    git clone --mirror http://username:password@gitlab.1234tv.lan:/awesome/python-test.git #此处最好采用http加上用户名和密码的方式拉取git仓库
    chmod -R redmine:redmine python-test.git ##记得修改用户组为redmine:redmine
  4. 登录redmine管理员,启用版本库

  5. 配置版本库

    进入到和gitlab项目对应的项目中,进入设置页面
    git clone时加了-mirror参数,使用下面参数

    如果git clone 时没有使用-mirror参数,使用下面的配置

配置GitLab Webhook

进入GitLab的项目中,在setting->Integrations中添加如下webhooks地址

webhook url格式:

{redmine_installation_url}/gitlab_hook?key={redmine_repository_API_key}&project_id={redmine_project_identifier}

如果redmine的项目名称和版本库的标识不一致,需要带上repository_name参数,手动指定redmine上的版本库

如果需要gitlab webhook插件自动创建版本库,还需要加上repository_git_urlrepository_namespacerepository_name这几个参数,

其中repository_git_url为需要克隆的远程仓库的地址
repository_namespacerepository_name自由填写,会在redmine的版本库里生成类似 {repository_namespace}_{repository_name}样式的版本库标识

验证

  1. 在redmine里创建一个issue,状态为新建
  2. 本地clone项目,少许修改,commit日志填写"bugfix #" (id为redmine上的issue id),然后push 到服务器上
  3. 查看redmine上该issue的状态是否改变
2018/12/12 posted in  PM

GitLabRunner配合SonarScanner针对每次commit做代码检查

Sonar GitLab-Plugin插件以及配置

  1. 下载安装插件

    admin登录SonarQube,点击 配置 —> 系统 —> 更新中心 —> Available —> Search,输入 GitLab,在列表中点击 install 安装,安装完毕后重启 SonarQube 即可

  2. 在GitLab上注册一个Sonarqube账号,获取Private Token

  1. 回到SonarQube 配置插件

Sonar Scanner 相关配置

依然采用docker方式

  1. 拉取镜像

    docker pull ciricihq/gitlab-sonar-scanner
    
  2. 在sonarqube上新建要测试的项目
    按照向导创建完项目之后记住所设置的key

  3. 回到GitLab,在需要进行质量检测的项目中加入.gitlab-ci.yml,在末尾添加如下代码:

    stages:
    - analysis
    sonarqube:
    stage: analysis
    image: ciricihq/gitlab-sonar-scanner
    variables:
    SONAR_URL: http://sonarqube.domain.lan #你的sonarqube地址
    SONAR_ANALYSIS_MODE: issues
    script:
    - gitlab-sonar-scanner
    sonarqube-reports:
    stage: analysis
    image: ciricihq/gitlab-sonar-scanner
    variables:
    SONAR_URL: http://sonarqube.domain.lan #你的sonarqube地址
    SONAR_ANALYSIS_MODE: publish
    script:
    - gitlab-sonar-scanner
  4. 在项目根目录添加sonar scanner 配置文件 sonar-project.properties

    sonar.projectKey=<sonarqube上创建项目时填写的key>
    sonar.sources=.
    sonar.gitlab.project_id=git@gitlab.domain.lan/awesome/xxx.git ##你的git仓库地址

GitLab Runner注册

  1. 拉取镜像

    docker pull gitlab/gitlab-runner
    
  2. 利用docker注册镜像

    docker run --rm -t -i -v /path/to/config:/etc/gitlab-runner --name  gitlab-runner gitlab/gitlab-runner register \
      --non-interactive \
    --executor "docker" \
    --docker-image alpine:3 \
    --url "https://gitlab.com/" \
    --registration-token "PROJECT_REGISTRATION_TOKEN" \
    --description "docker-runner" \
    --tag-list "docker,aws" \
    --run-untagged \
    --locked="false"
  3. 启动GitLab Runner

    docker run -d --name gitlab-runner --restart always \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner

测试验证

修改代码提交到gitlab,观察gitlab的pipeline的状态,以及sonarqube上新建项目的状态。

GitLab Pipeline
Sonarqube

问题

观察redmine的日志,如果出现权限问题,请注意仓库的用户组需要为redmine:redmine

2018/12/11 posted in  PM