DOCKER-IMAGES-CI

前置需求

  • Makefile(可选)
  • Gitlab-CICD
  • Docker registry
  • Dockerfile
  • Git
  • 钉钉通知(可选)

工作需求

通过Gitlab-CICD实现提交代码打Tag自动构建镜像并上传置私有库并通知相关人员

实现思路

Gitlab存储代码,通过branch和tag来构建不同环境所需要的镜像,通过CICD来完成自动构建和推送,Dockerfile构建镜像,Makefile实现不同docker需求如:build,test,deploy等等,通过webhook通知相关人员。

具体部署

Dockerfile

#Dockefile按照个人需求去编写,这里不多讲
FROM ubuntu:16.04

ENV TZ=Asia/Shanghai

COPY sources.list /etc/apt/sources.list
COPY bootstrap.sh /bootstrap.sh

RUN apt-get update \
    && apt-get update \
    & ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
    && apt-get -y install python \
    && apt-get -y install python-pip \
    && apt-get -y install net-tools \
    && apt-get -y install psmisc \
    && apt-get -y install vim  \
CMD ["/bootstrap.sh"]

Makefile

#建议使用IDE编写,其他容易出错
#镜像构建是否需要使用缓存由个人镜像需求决定
.PHONY: build

NAME=test
REGISTRY_URL= test/$(NAME)
REGISTRY_2_URL = test/$(NAME)
VERSION = v1,0
BASE_VERSION = latest

build:
	docker build --no-cache -t $(REGISTRY_URL):$(BASE_VERSION) .
	docker tag $(REGISTRY_URL):$(BASE_VERSION) $(REGISTRY_URL):$(VERSION)
	docker tag $(REGISTRY_URL):$(BASE_VERSION) $(REGISTRY_2_URL):$(BASE_VERSION)
	docker tag $(REGISTRY_URL):$(BASE_VERSION) $(REGISTRY_2_URL):$(VERSION)

clean:
	docker image rmi $(REGISTRY_URL):$(BASE_VERSION)

deploy:
	docker push $(REGISTRY_URL):$(BASE_VERSION)
	docker push $(REGISTRY_URL):$(VERSION)
	docker push $(REGISTRY_2URL):$(BASE_VERSION)
	docker push $(REGISTRY_2_URL):$(VERSION)

test:
	docker run -d --name  $(REGISTRY_URL):$(BASE_VERSION)

bash:
	docker exec -it $NAME bash

Git Branch && Tag

# 这里的Branch和Tag是按照git flow工作流来定义的
develop为开发分支
release分发布分支
master为主分支
tag为生产分支
可以通过Gitlab-Web或者git命令行操作

不同分支在不同runner上执行,runner是gitlab-cicd执行端,为二进制文件
注意:runner代表的是一个服务器级别,不是项目级别。

不同分支在不同runner上执行,实现不同需求。
提高开发效率

Gitlab-CICD

variables:
  DOCKER_USER: testuser
  DOCKER_PASSWORD: testpassword
  DOCKER_REGISTRY_URL: https://test_url
  NAME=imagename
  
stages:
  - deploy
  - test

deploy_build_tag_image:
  stage: deploy
  only:
    - tags
  script:
    - sudo make VERSION=$CI_COMMIT_REF_NAME
    - sudo make deploy VERSION=$CI_COMMIT_REF_NAME
    - sudo docker images |grep $NAME
    - sudo curl -u $DOCKER_USER:$DOCKER_PASSWORD  $DOCKER_REGISTRY_URL/v2/$NAME/tags/list |jq .
    - echo "update $CI_COMMIT_REF_NAME"
  tags:
    - runner-test
   when: manual

钉钉通知相关人员

钉钉创建群+机器人,获取webhooks
gitlab配置webhook事件通知
通知内容为git commit信息 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值