【问题标题】:gitlab-runner run os dependent scriptgitlab-runner 运行 os 依赖脚本
【发布时间】:2019-05-29 06:59:44
【问题描述】:

我的项目在 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 中实现这一点?

【问题讨论】:

    标签: continuous-integration gitlab


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      #/bin/bash
      ./$*
      

      如果你想调用 Gradle 包装器,你可以简单地写在gitlab-ci.yml:

      script:
      - call gradle
      

      它也适用于特定脚本(例如 Windows 的“build.bat”和 MacOS/Linux 的“build”):

      script:
      - call build
      

      希望对跟我有同样需求的人有所帮助。

      【讨论】:

      • 除了脚本,别名也可以提供帮助:script: - ":; alias call=\"\"" 请务必在开头添加这些引号和 :;。它会导致 Windows 忽略它
      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 2020-03-26
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多