Docker 安装 GitLab、 Artifactory、Jenkins

 全部使用 Docker,完成 GitLab、Artifactory、Jenkins,并完成代码提交自动构建过程

基于 Centos 虚拟机,Docker 版本:20.10.4

目录

一,安装 GitLab

 1,Docker 语句及虚拟机变量

 2,运行好之后编辑 GitLab 的配置文件

 3,参数解释说明

二,安装 Artifactory

三,安装 Jenkins

1. 运行 Docker 镜像

2. 安装 Jenkins 插件

3,在 Jenkins 中安装 Maven 插件

四,新建 Jenkins 任务 ,配置 GitLab webhooks

1,新建自由风格的任务 demo

 2,配置代码源​

3,配置构建触发器

4,设置 GitLab Webhook

5,附加: GitLab 的全局 hooks

6,配置 Build

7,配置 Build Environment,此处我暂时没用到

8,触发构建

六、根据 jar 包构建 Docker 镜像

1,创建 Dockerfile

2,创建 Docker 镜像 

3,运行 demo 镜像 

七,未来展望:CD


一,安装 GitLab

 1,Docker 语句及虚拟机变量

export $GITLAB_HOME=/srv/gitlab
 
docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v $GITLAB_HOME/config:/etc/gitlab -v $GITLAB_HOME/logs:/var/log/gitlab -v $GITLAB_HOME/data:/var/opt/gitlab  --shm-size 256m gitlab/gitlab-ce


 docker run --detach \
  --publish 198.168.3.43:443:443 \
  --publish 198.168.3.43:80:80 \
  --publish 198.168.3.43:222:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:latest

 2,运行好之后编辑 GitLab 的配置文件

# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.199.231'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
# 重启gitlab容器
$ docker restart gitlab

 3,参数解释说明

# -d:后台运行 等于 --detach
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

初始密码在

二,安装 Artifactory:

用的是OSS版本,具体版本区别:

JFrog Artifactory发行版差异及选择 - Jrri - 博客园JFrog Artifactory发行版差异及选择 与其他服务不同, JFrog在版本发行上分类较多且杂. 在选择的时候需要仔细梳理与选择. 一. 参考资料 JFrog发行版区分 矩阵: JFroghttps://www.cnblogs.com/jrri/p/15945979.html

docker run --name artifactory \
 -d -p 8081:8081 \
-p 8082:8082 \
--restart always \
 -e EXTRA_JAVA_OPTIONS='-Xms512m -Xmx2g -Xss256k -XX:+UseG1GC' docker.bintray.io/jfrog/artifactory-oss:latest

来源:

Installing with Docker - Artifactory 6.x - JFrog Wikihttps://www.jfrog.com/confluence/display/RTF6X/Installing+with+Docker#InstallingwithDocker-UsingDockerCompose

三,安装 Jenkins

1. 运行 Docker 镜像

docker run \
  -u root \
  --restart=always \
  -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /usr/local/jenkins/jar:/usr/local/jenkins \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

2. 安装 Jenkins 插件

引导步骤中,不选择任何插件下载 ,引导完成后,再下载插件

重要的插件: Maven Integration pluginhttps://plugins.jenkins.io/maven-plugin

Git pluginhttps://plugins.jenkins.io/gitGitLab Pluginhttps://plugins.jenkins.io/gitlab-plugin

3,在 Jenkins 中安装 Maven 插件

Dashboard -> Global Tool Configuration

在页面上方可以设置 Maven settings,同样也可以设置 JDK

至此,三个服务完成

四,新建 Jenkins 任务 ,配置 GitLab webhooks

1,新建自由风格的任务 demo

 2,配置代码源

此处凭证必须是 GitLab 的用户名密码才可以。网上也有说,可以通过 ssh-keygen 生成的 privateKey,将 publicKey 设置到 GitLab 中去。我试了下,不行,可能是由于虚拟机加 Docker 的端口映射问题,具体未知。同时可以设置触发的分支。

3,配置构建触发器

按照提示,将这个地址设置到 GitLab 对应项目的 Webhook 中去。

4,设置 GitLab Webhook

 此处的 Secret token 未知,设置了跟没设置都可以正常触发。待研究。

同时可以设置触发 Jenkins 构建的 GitLab 事件类型。

这里设置好之后,可以 Test ,看是否触发成功。

5,附加: GitLab 的全局 hooks

在 GitLab 中,可以设置 system hooks ,用来捕获全局的 GitLab 事件。

 设置位置: Menu -> Admin 

同时可以设置触发器的类型。

如果有触发事件的话,发送的消息内容:

{
  "event_name": "repository_update",
  "user_id": 1,
  "user_name": "Administrator",
  "user_email": "admin@example.com",
  "user_avatar": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
  "project_id": 51,
  "project": {
    "id": 51,
    "name": "demo",
    "description": "",
    "web_url": "http://192.168.3.43/gat/java/demo",
    "avatar_url": null,
    "git_ssh_url": "git@git.fzg.com:gat/java/demo.git",
    "git_http_url": "http://192.168.3.43/gat/java/demo.git",
    "namespace": "java",
    "visibility_level": 0,
    "path_with_namespace": "gat/java/demo",
    "default_branch": "main",
    "ci_config_path": null,
    "homepage": "http://192.168.3.43/gat/java/demo",
    "url": "git@git.fzg.com:gat/java/demo.git",
    "ssh_url": "git@git.fzg.com:gat/java/demo.git",
    "http_url": "http://192.168.3.43/gat/java/demo.git"
  },
  "changes": [
    {
      "before": "6f240b75eb34d139f0a74bcea3694706e1d74a13",
      "after": "7bae6a69fef2ef980e66f74eafff03e31ebe704e",
      "ref": "refs/heads/master"
    }
  ],
  "refs": [
    "refs/heads/master"
  ]
}

6,配置 Build

在这里设置执行的步骤,我选择了 Maven 的执行命令,之后是执行 Shell 脚本。

我的 Shell 脚本是将打包好的 jar 包放到 docker 的挂载目录,这样在宿主机也可以看得到这个 jar 包。同时,这个 Shell 脚本还可以实现把 jar 包发送到固定的制品库等功能。完成 CI 的全过程。

其他步骤可选的有:

7,配置 Build Environment,此处我暂时没用到

所有 Jenkins 配置完成。

8,触发构建

至此,GitLab 创建项目、联动 Jenkins 持续集成就好了 。

六、根据 jar 包构建 Docker 镜像

1,创建 Dockerfile

第五步中,我把 jar 包放在了挂载目录,这样宿主机可以访问到:

同时在该目录下创建一个 Dockerfile 文件,名称一定要对!

设置 Dockerfile 的内容如下: 

注意:demo 项目的启动端口是 8081,所以此处要暴露 8081 端口

2,创建 Docker 镜像 

从 openjdk-8 的 docker 镜像开始,设置系列参数之后,创建 Docker 镜像:

docker build -t demo:0.0.1 .
 即: docker build -t name:tag . 
最后的 . 表示当前目录

可以看到 docker 镜像已经成功了。

3,运行 demo 镜像 

此时运行该镜像,需要将 docker 的端口映射给宿主机,由于宿主机的 8081 端口已经给了 Artifactory,所以我将 8083 给 demo 的 docker 镜像

docker run -d -p 8083:8081 --name demo demo:0.0.1

 验证 demo 应用可用:

至此,所有的操作已经结束。

七,未来展望:CD

docker 私有仓库,配合 k8s 完成自动化部署 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值