gitlab+gitlab-runner实现自动打包docker镜像
获取gitlab的docker镜像
注意安装的是ce版还是ee版,我们这里使用docker(ce汉化版)进行安装。
官方版
docker pull gitlab/gitlab-ce
-
docker pull beginor/gitlab-ce:11.0.4-ce.0
运行
先建三个文件夹,存放gitlab的配置,数据,日志
mkdir -p /home/gitlab/config
mkdir -p /home/gitlab/logs
mkdir -p /home/gitlab/data
- docker启动命令
1
2
3
4
5
6
7
8
9docker run --detach \
--hostname 192.168.0.15 \
--publish 8443:443 --publish 880:880 --publish 822:22 \
--name gitlab \
--restart unless-stopped \
--volume /home/gitlab/config:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce:11.0.1-ce.0
这里修改了gitlab的内部服务端口,否则在创建新账号后发送的邮件中的修改密码的地址端口不正确,无法访问(可能还有其他地方会受影响),如何修改内部的端口请见下方。
修改配置
每次修改完配置后记得docker restart gitlab
vim /home/gitlab/config/gitlab.rb
修改端口
external_url ‘http://192.168.0.15:880'
nginx[‘listen_port’] = 880设置邮箱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'lx1990@xxxx.xxx'
gitlab_rails['gitlab_email_display_name'] = 'lx1990'
gitlab_rails['gitlab_email_reply_to'] = 'lx1990@xxxx.xxx'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "lx1990@xxxx.xxx"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "xxx.xxx"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
这里使用的是网易的企业邮箱,其他邮箱具体设置方法请看文档
登录地址
192.168.0.15:880
登录默认密码
5iveL!fe
第一次登陆会让你直接修改密码,用户名为root
安装运行gitlab-runner
安装
docker pull gitlab/gitlab-runner
启动
1
2
3
4docker run -d --name gitlab-runner --restart always \
-v /home/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest注册
docker exec -it gitlab-runner gitlab-ci-multi-runner register
1.输入 GitLab 实例 URL:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
http://192.168.0.15:880
2.输入获取到的用于注册 Runner 的 token:
Please enter the gitlab-ci token for this runner
xxx
- Shared Runners(一个runner可以负责多个项目)
- Specific Runners(一个runner只能负责对应的项目)
3.输入该 Runner 的描述,稍后也可通过 GitLab’s UI 修改:
Please enter the gitlab-ci description for this runner
[hostame] my-runner
4.给该 Runner 指派 tags, 稍后也可以在 GitLab’s UI 修改:
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
5.Enter the Runner executor:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
6.如果你选择 Docker 作为你的 executor,注册程序会让你设置一个默认的镜像, 作用于 .gitlab-ci.yml 中未指定镜像的项目:
Please enter the Docker image (eg. ruby:2.1):
docker:stable
7.修改gitlab-runner的注册信息
vim /home/gitlab-runner/config/config.toml
1 | concurrent = 1 |
下面,我们需要当我们给git打标签的时候(触发条件,可以设成别的),自动打包docker镜像并推送到镜像仓库中。
gitlab-ci配置
- 在项目中增加一个
.gitlab-ci.yml
文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21image: docker:stable
services:
- docker:dind
before_script:
- docker login -u xxxx -p xxxx 192.168.0.15:80
build:
stage: build
script:
- pwd
- mv ./Dockerfile ../
- cd ../
- docker build -t 192.168.0.15:80/xxx/xxx:$CI_COMMIT_REF_NAME .
- docker images
- docker push 192.168.0.15:80/xxx/xxx:$CI_COMMIT_REF_NAME
only:
- tags
tags:
- cloud
至此,我们就可以实现打了tag自动生成docker镜像并推送到镜像仓库,结合之前的docker engine api的调用来方便地部署镜像
—————-华丽的分割线—————-
若未标明转载,本博客内容均为原创。
版权归作者所有,转载请注明出处。
若有帮助(批评指正),还请留言,您的建议是我不断前进的动力