windows docker搭建gitlab CI/CD环境

980 阅读2分钟

准备

gitlab支持CI/CD,通过简单的配置便可以搭建CI/CD服务。

.gitlab-ci.yml

CI配置脚本,具体语法请查看gitlab文档。这里列举下简单配置:

# 基础镜像
image: node:latest

# 定义变量
variables:
  DOCKER_DRIVER: overlay
  DOCKER_IMAGE_NAME: $DOCKER_REGISTRY_URL/${CI_PROJECT_NAMESPACE}/$CI_PROJECT_NAME:$CI_PIPELINE_IID-$CI_COMMIT_SHORT_SHA
  WORK_HOME: .
  DOCKERFILE: ./Dockerfile
  MARATHON_CONFIG: ./marathon.json
  GITLAB_NPM_MODULES: /local_cache/npm/modules
  KUBECONFIG: /config
  HEALTH_CHECK_URL: /path/to/healthcheck/url

# 执行的步骤
stages:
  - step-1
  - step-2
  - step-3

webpack-build:
  # 步骤名称
  stage: step-1
  tags:
  	# runner的tag
    - default
  # 使用的镜像
  image: node:latest
  # 执行的脚本
  script:
    - env
    - npm uninstall yarn webpack webpack-cli -g
    - npm install yarn@1.22.5 --force -g
    - yarn install
    - yarn run build
  artifacts:
    name: webpack_build
    paths:
    - $WORK_HOME/dist/*
    expire_in: 1 week
  only:
  	# 只对master分支执行
    - master

gitlab-runner

gitlab-runner是运行CI/CD任务的宿主容器,可以部署在任意操作系统上。本文选用windows的Docker作为gitlab-runner的容器。

Docker

本文在windows docker中安装gitlab-runner,首先需在本地安装docker。详情参考docker教程。

安装完成后,需切换为linux容器,否则无法安装gitlab-runner镜像(gitlab-runner镜像无windows版本)。

操作:右键到docker图标,选择Switch to Linux Containers...

在windows docker中搭建gitlab-runner环境

拉取镜像

docker pull gitlab/gitlab-runner

通过docker images查看镜像是否获取成功

启动容器

在启动容器之前,需要了解到有些gitlab-runner的配置信息需要存储。我们可以通过数据卷的方式。

通过本地系统数据卷挂载来启动容器

docker run -d --name gitlab-runner --restart always \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:latest

在mac系统上,使用/Users/Shared替换/srv

通过docker数据卷启动容器

  • 创建docker数据卷
docker volumn create gitlab-runner-config
  • 使用创建的volume来启动gitlab-runner容器
docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v gitlab-runner-config:/etc/gitlab-runner \
    gitlab/gitlab-runner:latest

通过docker ps查看是否运行成功

注册gitlab-runner

  • 根据不同的挂载方式运行注册命令:
  1. 本地系统数据卷方式挂载:
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
  1. docker数据卷挂载
docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner register

然后根据提示输入gitlab仓库中对应的配置。 在选择executor时,选择docker,之后会被要求填写一个基础镜像,本文这里写的是docker:latest,根据需要输入即可。

再重新启动gitlab-runner,这时配置已完成。

问题

Local Gitlab-runner "ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 192.168.65.1:53: no such host"

解决方案:gitlab.com/gitlab-org/…