使用自动构建构建工作流程

时间:2018-10-17 11:26:41

标签: testing build compilation automation gitlab-ci

我对使用docker和gitlab-ci或一般自动构建的工作流有疑问。

这就是我想象的构建外观的样子↓。
this i what i want

如何使用gitlab-ci进行操作?
我知道如何执行其中一项任务,但我不知道如何做到。
在我的想象中,我将需要多个基本图像。

也许我误会了孔的事。
通常应如何完成此过程?

向您提供四个帮助

1 个答案:

答案 0 :(得分:0)

由于您的问题很笼统,我将举一个例子来回答。

考虑一个虚构的C ++项目,其中包含代码,一个 Makefile ,该文件创建可执行文件“ app”和此Dockerfile:

FROM ubuntu:16.04
ADD ./app /app
CMD ["/app"]

要按照您所说的那样构建应用程序和docker映像,可以使用如下的GitLab CI配置:

stages:
  - test
  - build
  - docker

test:
  stage: test
  script:
    - make test

build:
  stage: build
  script:
    - make
  artifacts:
    paths:
      - ./app

docker:
  stage: docker
  dependencies:
    - build
  script:
    - docker build -t your-repo/image-name:latest .
    - docker push your-repo/image-name:latest

说明

此CI文件创建三个作业:“ test ”,“ build ”和“ docker ”。 “ test”运行“ make test”以执行我们的代码库可能具有的任何假想测试。如果成功,则GitLab运行程序将执行下一个工作“构建”。

“ build”通过调用“ make”来构建应用程序。我们希望 make 在当前目录中创建文件“ app”,这是我们在容器中运行的已编译应用程序。 “工件”部分指出,我们要保留此结果文件,因为我们在下一份工作中需要它。

下一个作业“ docker”具有“ dependencies”部分;在本节中,我们声明该作业取决于名为“ build”的作业的输出,该作业之前创建了文件“ app”。然后,我们首先使用 docker build 构建docker映像,然后像往常一样推送它。


如前所述,这些只是示例,尤其是 script 部分将根据您的项目和运行程序配置而有很大不同。有关所有可能性,请参见official CI documentation