Gitlab如何实现自动打包部署到docker集群?
预备知识:
开发模式转变:瀑布模型——》敏捷开发——》DevOps
DevOps:Development Operations的组合词
CICD:持续集成(Continuous Integration),持续交付(Continuous Delivery),持续部署(Continuous Deployment)
使用 Gitlab-CI 实现自动打包部署
通过 pipeline 完成项目的自动打包部署
名词解释
pipeline(管道,流水线):里面包含多个流程(Stage),如自动构建,自动单元测试,自动代码检查等
pipeline流程:verify——》build——》dockerpush——》deploy
单元测试——》Java编译——》push镜像——》deploy部署
gitlab-runner:gitlab持续化集成工具
具体实现
一、git安装
yum安装
# 移除git
yum remove git
# 安装 yum 源的 Git 版本
yum install -y git
# 查看版本
git version
编译安装
# 解压压缩包到 /usr/local 下
tar -zxf 压缩包
# 安装依赖
sudo yum install -y curl-devel
# 编译
make prefix=/usr/local/git all
# 安装
make prefix=/usr/local/git install
二、gitlab-runner安装
# 添加 gitlab 官方 repo
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
# 安装 gitlab-runner
sudo yum install -y gitlab-runner
# 指定安装目录
sudo gitlab-runner install --working-directory /home/gitlab-runner --user appserv
# 重启gitlab-runner
sudo gitlab-runner restart
三、Gitlab-Runner注册
准备gitlab地址和密匙:点击gitlab管理员后的概览
菜单,找到runner
,进入runner后右边就可以看到,一个是gitlab的url地址,一个是密钥
# 开始 gitlab-runner 注册
gitlab-runner register 回车
输入url
输入token
输入tags
输入executor
四、项目增加.gitlab-ci.yml文件进行配置
打包部署流程概述:项目合并分支到gitlab,gitlab通过.gitlab-ci.yml文件判断该分支要执行哪些步骤
如下配置,项目合并到dev分支则执行
- 在所有job前执行before_script,登录私有仓库
- 执行build-dev,通过 tags 指定的 build_dev 执行器执行 spript 对应的命令完成项目编译,单元测试,打包功能
- 执行deploy-dev,如上执行命令利用镜像创建容器并启动服务
.gitlab-ci.yml简易配置
stages: # 要执行的步骤顺序
- build-dev
- deploy-dev
before_script: # 在所有job前执行,登录私有仓库
- docker login -u 用户名 -p 密码 域名地址
build-dev:
stage: build-dev # 属于哪个流程
script:
- mvn clean package # mvn clean package 完成了项目编译,单元测试,打包功能
- docker push # push镜像到远程仓库
only: # 指定只有提交到dev分支或者tags标签才执行此job
- dev
- tags
tags: # 指定执行器,在哪个runner上面执行
- build_dev
deploy-dev:
stage: deploy-dev
script:
- docker stack deploy -c docker-compose-dev.yml eureka # 利用镜像创建容器并启动服务
only:
- dev
- tags
tags:
- deploy_dev