通过docker和gitlab实现项目自动打包部署

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分支则执行

  1. 在所有job前执行before_script,登录私有仓库
  2. 执行build-dev,通过 tags 指定的 build_dev 执行器执行 spript 对应的命令完成项目编译,单元测试,打包功能
  3. 执行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


你可能感兴趣的:(服务部署,docker,容器,运维)