如何在Gitlab运行程序上执行基本容器

问题描述 投票:0回答:1

我正在使用容器化环境的CI / CD管道上工作。

  • 在我的笔记本电脑上,所有东西都在包含我所有工具的centos容器中运行,而代码和配置则位于共享卷上。
  • 我提交时,该共享卷中的大部分都被推送到主卷。
    • 但是,例如,我从虚拟环境中排除了所有python二进制文件。
  • 同一容器在Gitlab中用作我的“基本”容器,以执行我的某些跑步程序阶段,
    • 对代码和Ansible配置执行静态皮棉测试
    • 使用ansible-bender将最终产品制作为新图像

[为了区分环境,我在容器出现时在entrypoint.sh中使用了一个基本shell,在该shell中,我使用了由Gitlab管理的环境变量:CI_JOB_STAGE。但是,当我在本地运行容器而不是在运行器上运行时,shell脚本的执行效果似乎不同。这是疯狂的,因为不是容器的全部要点吗?

  • 目前尚不清楚Gitlab在什么时候将运行主机和容器之间的份额挂载到该位置
  • 测试值CI_JOB_STAGE的条件似乎不起作用,即使使用和echo打印出来时也显示了这些值>
  • 由于某种原因,入口点在阶段执行之后都在AND
  • 之前执行

    我附上要旨

  • enterpoint.sh脚本
  • 容器本地运行时的输出
    • 在这种情况下,通过检查激活二进制文件的存在,可以看到虚拟环境已经存在,因此可以简单地激活环境
    • 然后检查烧瓶二进制文件以查看是否需要安装要求
    • 我知道这很原始,但这只是POC
  • 跑步者第一阶段的输出
    • 基于shell脚本,不应安装需求,因为无论如何这都是阶段命令的一部分
    • 我不相信它实际上是这样做的,因为它进行得太快了,但是消息表明它已经通过了条件
    • if [[ $CI_JOB_STAGE -eq "locally" ]] && ! test -f "./env/bin/flask"
      • 如果阶段是本地的(错误:我们清楚地看到该阶段是lint_code
      • AND
      • 烧瓶不存在(嗯,不会,但是没关系,因为前半部分已经为假)
  • 这些阶段仍然可以正确运行,但是我发现所有这些都很令人困惑。是否有人对这些跑步者的执行情况有详细的了解?

    要点

    我正在使用容器化环境的CI / CD管道上工作。在我的笔记本电脑上,所有东西都在包含我所有工具的centos容器中运行,而代码和...

    docker gitlab containers gitlab-ci-runner
    1个回答
    0
    投票

    Gitlab支持number of executors,其中每个行为可能略有不同(执行程序可能会装载自定义卷,禁止特权容器)

    © www.soinside.com 2019 - 2024. All rights reserved.