gitlab-runner运行os依赖脚本

时间:2019-01-02 16:10:03

标签: continuous-integration gitlab

我的项目在Windows和Linux下构建。我在Windows上设置了gitlab-runner,在Linux机器上设置了一个。现在,我想配置“ .gitlab-ci.yml”以便在两台机器上进行构建。但是,根据操作系统,我想为该构建调用其他构建脚本。

示例“ .gitlab-ci.yaml”(不起作用)

mybuild:
  # on linux
  script:
    - ./build-linux.sh
  # on windows
  script
    - buildwin.bat

如何在.gitlab-ci.yml中实现此目标?

2 个答案:

答案 0 :(得分:1)

不能。实现此目标的方法是

  1. 为跑步者提供唯一的标签。例如“ linux-runner”和“ windows-runner”
  2. 复制作业,仅在带有“ linux-runner”标记的跑步者上运行一个作业,而第二个作业仅在带有“ windows-runner”标记的跑步者上运行。

    linux build:
      stage: build
      tags:
       - linux-runner
      script:
        - ./build-linux.sh
    
    windows build:
      stage: build
      tags:
       - windows-runner
      script:
        - buildwin.bat
    

另请参阅https://stackoverflow.com/a/49199201/2779972

答案 1 :(得分:1)

通常建议创建两个作业的解决方案不符合我的需求。我需要的是能够使用Windows或Linux / MacOS运行程序,无论可用的是什么。 我建议的技巧是在call中创建一个/usr/local/bin脚本,以便它可以模仿Windows call命令:

#/bin/bash
./$*

例如,如果要调用Gradle包装器,则只需编写gitlab-ci.yml

script:
- call gradle

它还可以与特定的脚本一起使用(例如,对于Windows为“ build.bat”,对于MacOS / Linux为“ build”):

script:
- call build

我希望这会帮助和我有同样需求的人。