关于推送代码自动打包发布镜像

2021-07-09 by uino 53 Docker 研发

现在支持Git代码推送,创建新标签(Tag)后自动发布镜像的功能,如果您的仓库有需要构建成Docker镜像的需求,根据以下引导配置好自动化打包Docker镜像功能,今后将根据您的具体配置自动化打包发布Docker镜像到Docker私有仓库

准备工作

请登录Docker私有仓库,选择你希望推送并已存在的Project,如果没有找到符合您的Project,请创建一个。无论如何,你最后要确定你将推送的Project名称

docker-project.png

如以上截图中的表格,第一列是已存在Project的名称,右下角可以翻页继续查找,假如已存在的Project名称没有符合您的要求,您可以点击左上角的+ NEW PROJECT按钮新建一个

编写Dockerfile

在Git源码仓库下,必须存在一个Dockerfile供自动化构建使用,存放的路径以及文件名可随意定义,通常情况下,我们都命名为Dockerfile标准名称。

docker-build-1.png

编写.gitlab-ci.yml

.gitlab-ci.yml文件是CICD的配置文件,如果您的项目已经创建了该文件,请添加一个stage,建议放到最后一步,参考一下写法

.gitlab-ci.yml

stages:
  - docker

docker:
  stage: docker
  variables:
    CI_DOCKERFILE: Dockerfile 
    CI_DOCKER_PROJECT: library
    CI_DOCKER_REPO: test

  only:
    - tags
    - branches
    
  script:
    - docker_build

variables

  • CI_DOCKER_PROJECT: 第一步准备工作中在Docker私有仓库创建的项目名称
  • CI_DOCKER_REPO: Docker镜像名称
  • CI_DOCKERFILE: Dockerfile文件路径,默认值Dockerfile

only

  • tags: 推送tag时才构建Docker镜像,并且镜像的tag名称取自推送tag的名称
  • branches: 传统分支,比如master或者develop等分支推送时,就会构建镜像,镜像的tag名称取自于推送的tag名称

一些例子

stages:
  - install_deps
  - build
  - docker

cache: &global_cache
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/
    - dist/

install_deps:
  stage: install_deps
  retry: 2
  cache: 
    <<: *global_cache
  script:
    - npm install --registry=https://npm.uino.cn

build:
  stage: build
  cache: 
    <<: *global_cache
  script:
    - npm run build

docker:
  stage: docker
  variables:
    CI_DOCKERFILE: Dockerfile
    CI_DOCKER_PROJECT: library
    CI_DOCKER_REPO: test-ci

  only:
    - branches
    - tags
    
  script:
    - docker_build