gitlab.com CI - 在 docker 中使用 docker 构建一个 NodeJS 应用程序

gitlab.com CI - build a NodeJS app using docker in docker

我目前遇到 cigitlab.com 共享运行程序的问题。我想在我的管道中实现的是:
- NPM 安装和使用 grunt 制作一些 uncss,最小化和压缩任务
- 打扫干净 - 使用包含的应用构建 docker 容器
- 将容器移动到 gitlab 注册表

不幸的是,我很久没听懂了 运行!我尝试了很多不同的 gitlab.ci 配置 - 但都没有成功。问题是,我必须使用 "image: docker:latest" 来获得所有 docker-工具 运行。但是后来我没有在容器中安装 node 和 grunt。
反过来也是行不通的。我试图使用 image: centos:latest 并手动安装 docker - 但这也不起作用,因为我总是得到 Failed to get D-Bus connection: Operation not permitted
有没有人对 gitlab-ci 在 docker 共享运行器中使用 docker 构建命令有更多经验?
非常感谢ci任何帮助!!

谢谢
贾尼克

Gitlab 可能有点棘手 :) 我没有基于 CentOS 的示例,但如果对您有帮助,我有一个基于 Ubuntu 的示例。这是我的一个工作 gitlab 管道的一些复制粘贴,它使用 gulp(你应该很容易调整它以适应你的 grunt)。

.gitlab-ci.yml是这样的(调整开头的CONTAINER...变量):

variables:
  CONTAINER_TEST_IMAGE: registry.gitlab.com/psono/psono-client:$CI_BUILD_REF_NAME
  CONTAINER_RELEASE_IMAGE: registry.gitlab.com/psono/psono-client:latest

stages:
  - build

docker-image:
  stage: build
  image: ubuntu:16.04
  services:
    - docker:dind
  variables:
    DOCKER_HOST: 'tcp://docker:2375'
  script:
    - sh ./var/build-ubuntu.sh
    - docker info
    - docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" registry.gitlab.com
    - docker build -t $CONTAINER_TEST_IMAGE .
    - docker push $CONTAINER_TEST_IMAGE

此外,我还有一个“./var/build-ubuntu.sh”,您可以根据需要稍微调整一下,替换一些 ubuntu 依赖项或将 gulp 切换为 grunt as需要:

#!/usr/bin/env bash
apt-get update && \
apt-get install -y libfontconfig zip nodejs npm git apt-transport-https ca-certificates curl openssl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -  && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get install -y docker-ce && \
ln -s /usr/bin/nodejs /usr/bin/node && \
npm install && \
node --version && \
npm --version