iT邦幫忙

0

.gitlab-ci.yml寫法: 是否可以寫for loop?

想請問GitLab的CI runner所使用的 .gitlab-ci.yml,是否可以寫for loop每個資料夾呢?

因為我的gitlab 的project裡,不只有一個project,而是有多個,
想要在每個專案(資料夾)都執行同個command,eg. dotnet build

資料夾結構如下:
GitlabProject

  • .gitlab-ci.yml
  • project folder
    • Project1-dotnet build
    • Project2-dotnet build
    • Project3-dotnet build
      .....

我的想法是在forloop(cd 進專案資料夾-> 執行command)
試過直接寫for %L in folder -> L它不認得
也試過在script裡 叫他call 另一個.sh ->它會出現Job succeeded但根本沒執行.sh

我的runner環境是 win7

謝謝:)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-13 02:43:12

想請問GitLab的CI runner所使用的 .gitlab-ci.yml,是否可以寫for loop每個資料夾呢?

.gitlab-ci.yml

stages:
  - build

build:
  stage: build
  script:
    - Get-ChildItem -Directory | %{ cd $_.FullName; dotnet build }

  • Get-ChildItem -Directory 是 PowerShell 中的一個指令,它會遍歷所有子目錄。
  • 管道符號 | 將上一個指令的輸出作為下一個指令的輸入。
  • %{ ... } 是一個使用管道符號的結構,稱為ForEach-Object。

在這個範例中,會對每個目錄執行下面兩個指令:

  1. cd $_.FullName; (指令會將工作目錄變更為每個子目錄的全路徑)
  2. dotnet build

這樣就會for loop所有子目錄並在每個目錄下執行 dotnet build

我要發表回答

立即登入回答