引言
| 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
| CI (continuous intergration) 持续集成 持续集成:编写代码时,完成一个功能后,立即提交代码到git仓库中,将项目重新构建并测试。 1、快速发现错误 2、阻止代码偏离主分支 |
实现持续集成
- 搭建gitlab服务器
| 1、创建一个全新的虚拟机,并且只是指定4G运行内存 2、安装docker以及docker-compose 4、将ssh的默认端口22修改为60022 vi /etc/ssh/sshd_config 修改 port 22 --> 60022 systemctl restart sshd 3、docker-compose.yml文件去安装gitlab(下载和运行的时间比较长) |
docker-compose.yml文件
| version: '2' services: gitlab: image: 'gitlab/gitlab-ce:12.4.1-ce.0' restart: always container_name: gitlab hostname: 'gitlab' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://106.55.229.11' nginx['enable'] = true nginx['redirect_http_to_https'] = true nginx['redirect_http_to_https_port'] = 80 # 开启 pages 功能 pages_external_url 'http://106.55.229.11' gitlab_pages['inplace_chroot'] = true gitlab_rails['lfs_enabled'] = true # 设置时区为北京时间 gitlab_rails['time_zone'] = 'PRC' gitlab_rails['gitlab_email_enabled'] = true gitlab_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'] = true gitlab_rails['smtp_address'] = 'smtp.exmail.qq.com' gitlab_rails['smtp_port'] = 465 gitlab_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'] = true gitlab_rails['smtp_tls'] = true unicorn['worker_processes'] = 2 unicorn['worker_timeout'] = 60 sidekiq['concurrency'] = 4 # 解决 GitLab 响应 Forbidden gitlab_rails['rack_attack_git_basic_auth'] = {'enabled' => true, 'ip_whitelist' => ["0.0.0.0"], 'maxretry' => 300, 'findtime' => 5, 'bantime' => 60} # 内存和CPU限制,worker_processes 配置声明使用2核CPU mem_limit: 5500m cpu_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": [ "registry.docker-cn.com" ], "insecure-registries": [ "106.55.229.11: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-runner restart: always container_name: gitlab-runner privileged: true volumes: - ./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 。。。 |
提交本地go_web_demo项目到私有化代码仓库
git 地址:http://106.55.229.11/root/go_web_demo.git
效果图: