学习思路:
gitlab基于docker安装
jira基于docker安装
gitlab配置jira-代码push后jira自动显示注释,Merged Master后自动修改jira状态
一、基于docker安装gitlab
1、镜像拉取
#拉取最新的gitlab镜像docker pull gitlab/gitlab-ce
当然还可以指定版本拉取
docker pull gitlab/gitlab-ce:xxx
2、运行容器
docker run -d -p 8443:443 -p 8080:80 -p 8022:22 --name gitlab --restart always -v $PWD/config:/etc/gitlab -v $PWD/logs:/var/log/gitlab -v $PWD/data:/var/opt/gitlab gitlab/gitlab-ce
参数解释:
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# --restart always:失败自动重启
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
# $PWD在本目录(当然也可以指定绝对路径)
建议:在执行该命令时自己新建gitlab包路径,因为会将容器内文件映射到本目录下
到此为止浏览器访问8080端口就可以了
二、基于docker安装jira
jira是Atlassian公司的收费产品,主要包含jira core(基本业务管理)、jira Align(企业级敏捷规划)、jira Software(项目与问题追踪);目前企业用的基本都是Jira Software,我们这里安装的也是
1、拉取镜像
docker pull dchevell/jira-software:7.13.0
当然也可以不带版本号,默认拉取最新的
2、运行容器
docker run -d -it -p 8080:8080 --privileged -m 2048M -v $PWD/jira-data:/var/atlassian/application-data/jira -v /etc/localtime:/etc/localtime --name jira dchevell/jira-software:7.13.0
3、连接mysql
首先下载jia包(mysql-connector-java-5.1.49.jar)可以mysql官网下载
然后进行如下操作
#拷贝jar包到容器jira的lib下
docker cp mysql-connector-java-5.1.49-bin.jar jira:/opt/atlassian/jira/atlassian-jira/WEB-INF/lib/#进入容器修改jar包权限docker exec -it jira bashchmod 755 /opt/atlassian/jira/atlassian-jira/WEB-INF/lib/mysql-connector-java-5.1.49-bin.jar#退出容器exit#重启容器docker restart jira
4、web页面设置属性
访问8080端口
选择语言

选择《我将设置它自己》
线上选择其他数据库
填写数据库配置
申请许可证关键字,点击「生成Jira试用许可证」
需要注册账号,注册完之后,选择相关信息,点击「Generate License」,会自动跳回到这个页面并填充信息,
接着点击「下一步」
等待一会就进入设置管理员页面,填入一些信息即可,接着「下一步」点击「完成」即完成设置
注意:收费的还未破解
三、gitlab配置jira-代码push后jira自动显示注释,Merged Master后自动修改jira状态
点击要配置的项目->Settings->Integrations->Jira

然后填充里边信息,主要是下面两个
Web URL:指向Jira实例web接口的基本URL,该接口被链接到这个GitLab项目。例如,https://jira.example.com
Transition ID:这个是jira工作流程的流程id
流程id可以访问:http://*.*.*.*:8080/rest/api/2/issue/FTBQ-5/transitions
FTBQ-5:是你jira创建的任何一个问题的号
此时会返回
{"expand": "transitions","transitions": [{"id": "11","name": "待办","to": {"self": "http://:8080/rest/api/2/status/10000","description": "","iconUrl": "http://106.53.239.230:8080/","name": "待办","id": "10000","statusCategory": {"self": "http://:8080/rest/api/2/statuscategory/2","id": 2,"key": "new","colorName": "blue-gray","name": "待办"}}}, {"id": "21","name": "处理中","to": {"self": "http://:8080/rest/api/2/status/3","description": "此问题正在被经办人积极处理。","iconUrl": "http://106.53.239.230:8080/images/icons/statuses/inprogress.png","name": "处理中","id": "3","statusCategory": {"self": "http://:8080/rest/api/2/statuscategory/4","id": 4,"key": "indeterminate","colorName": "yellow","name": "处理中"}}}, {"id": "31","name": "完成","to": {"self": "http://:8080/rest/api/2/status/10001","description": "","iconUrl": "http://:8080/","name": "完成","id": "10001","statusCategory": {"self": "http://:8080/rest/api/2/statuscategory/3","id": 3,"key": "done","colorName": "green","name": "完成"}}}]}
json中的:"id": "31"就是流程id填入Transition ID即可,多个可用逗号(,)隔开
具体可以看gitlab文档:
https://docs.gitlab.com/ce/user/project/integrations/jira.html
四、验证
1、我们在jira创建问题(FTBQ-2为例)

然后idea修改代码commit时备注填写以问题号开头,然后push

到jira中的效果就是

2、我们再看Transition ID的作用
这里官网提供了三个前缀:触发场景就是在代码合并到默认分支(master)时jira自动触发相应操作
Resolves PROJECT-1
Closes PROJECT-1
Fixes PROJECT-1
还是以FTBQ-2为例,commit是备注写 "Close FTBQ-2 测试11111"
然后提交合并到默认分支master,jira中会自动从处理中转为完成

gitlab官网文档:
https://docs.gitlab.com/ce/user/project/integrations/jira.html
jira连接数据库文档:
https://confluence.atlassian.com/adminjiraserver/connecting-jira-applications-to-a-database-938846850.html




