引言
java项目:
1、将项目通过maven进行编译打包
2、将文件上传到指定的服务器中
3、将war包放到tomcat的目录中
4、通过Dockerfile将tomcat和war包转成一个镜像,由docker-compose去运行容器
项目更新后:将上述流程再次的从头到尾的执行一次
go项目:
1、将项目通过go build编译成二进制执行文件打包(或者直接将项目代码打包压缩)
2、将文件上传到指定的服务器中
3、解压文件到指定目录
4、通过Dockerfile将go build后的二进制文件转成一个镜像,由docker-compose去运行容器 项目更新后:将上述流程再次的从头到尾的执行一次
CI介绍和实现
CI (continuous intergration) 持续集成
持续集成:编写代码时,完成一个功能后,立即提交代码到git仓库中,将项目重新构建并测试。
1、快速发现错误
2、阻止代码偏离主分支
实现持续集成
搭建gitlab服务器
1、创建一个全新的虚拟机,并且只是指定4G运行内存
2、安装docker以及docker-compose
3、docker-compose.yml文件去安装gitlab(下载和运行的时间比较长)
4、将ssh的默认端口22修改为60022 vim /etc/ssh/sshd_config 修改 port 22 --> 60022 systemctl restart sshd
docker-compose.yml文件
version: '2'
services:gitlab:image: 'gitlab/gitlab-ce:12.4.1-ce.0'restart: alwayscontainer_name: gitlabhostname: 'gitlab'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://47.119.16.196'nginx['enable'] = truenginx['redirect_http_to_https'] = truenginx['redirect_http_to_https_port'] = 80# 开启 pages 功能pages_external_url 'http://47.119.16.196'gitlab_pages['inplace_chroot'] = truegitlab_rails['lfs_enabled'] = true# 设置时区为北京时间gitlab_rails['time_zone'] = 'PRC'gitlab_rails['gitlab_email_enabled'] = truegitlab_rails['gitlab_email_from'] = 'code@example.com'gitlab_rails['gitlab_email_display_name'] = 'code'gitlab_rails['gitlab_email_reply_to'] = 'code@example.com'gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = 'smtp.exmail.qq.com'gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = 'code@example.com'gitlab_rails['smtp_password'] = '******'gitlab_rails['smtp_domain'] = 'exmail.qq.com'gitlab_rails['smtp_authentication'] = 'login'gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = trueunicorn['worker_processes'] = 2unicorn['worker_timeout'] = 60sidekiq['concurrency'] = 4# 解决 GitLab 响应 Forbiddengitlab_rails['rack_attack_git_basic_auth'] = {'enabled' => true, 'ip_whitelist' => ["0.0.0.0"], 'maxretry' => 300, 'findtime' => 5, 'bantime' => 60}# 内存和CPU限制,worker_processes 配置声明使用2核CPUmem_limit: 5500mcpu_shares: 200 #2核ports:- '443:443'- '80:80'- '22:22'volumes:# 挂载宿主机目录可以根据实际情况挂载- '/opt/gitlab-docker/config:/etc/gitlab'- '/opt/gitlab-docker/logs:/var/log/gitlab'- '/opt/gitlab-docker/data:/var/opt/gitlab'- '/etc/localtime:/etc/localtime'
执行命令
docker-compose up -d
搭建gitlab-runner
步骤:
1、环境准备
创建目录:/opt/gitlab-runner
配置daemon.json,私有化仓库
{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["39.108.227.113:5000"]
}
复制这个daemon.json 到/etc/docker/,并执行下面命令
systemctl daemon-reload
systemctl restart docker
2、在/opt/gitlab-runner目录下创建一个docker-compose.yml文件
version: 'v2.2.2'
services:gitlab-runner:image: gitlab/gitlab-runnerrestart: alwayscontainer_name: gitlab-runnerprivileged: truevolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sock
然后执行命令
sudo chown root:root /var/run/docker.sock
最后启动容器
docker-compose up -d --build
3、添加容器权限
保证容器可以使用宿主机器的docker,执行下面命令
docker exec -it gitlab-runner usermod -aG root gitlab-runner
4、注册Runner信息到gitlab
docker exec -it gitlab-runner gitlab-runner register#输入gitlab地址
Please enter the gitlab-ci coordinator URL
http://106.55.229.11/#输入gitlab token
Please enter the gitlab-ci token for this runner:
xXapfgMsA_6eG5YUzTKb#输入runner 说明,这里取个名字就可以了#设置tag,可以用于指定在构建规定的tag时触发ci
Please enter the gitlab-ci tags for this runner :
deploy。。。