2016-10-11 63 views
5

有3個階段 - 構建,測試和部署在.gitlab-ci.ymlGitlab有條件地執行階段

每晚迴歸測試階段需要運行 - 以及nightly :)

下面是相關.gitlab-ci.yml代碼:

stages: 
    - build 
    - test 
    - deploy 

build_project: 
    stage: build 
    script: 
    - cd ./some-dir 
    - build-script.sh 
    except: 
    - tags 

#Run this only when say variable 'NIGHTLY_TEST == True'. But HOW? 
nightly_regression_test_project: 
    stage: test 
    script: 
    - cd ./some-dir 
    - execute test-script 

每天標記來only運行test階段是不可取的。

還有其他想法嗎?

回答

0

如果有人正在尋找這個,現在gitlab已經實現了一個帶有可變覆蓋(非常方便)的預定編譯功能。找到文檔here

任何有興趣在此功能的說明給出這個答案的時候,這裏有雲:

使用管道調度

爲了安排一個管道:

  1. 導航到您項目的管線 - >排程並點擊新排程按鈕。
  2. 填寫表格
  3. 點擊保存管道時間表以使更改生效。

我最喜歡的功能是預定的管道變量。

的變量文件可以發現here,但對我來說最有用的信息是優先考慮,我將在這裏重新輸入:

變量的優先

的變量可以被覆蓋,並且他們採取優先順序依次爲:

  1. 觸發變量或預定的管道變量(優先於所有)
  2. 項目層的祕密變量或受保護的祕密變量
  3. 組層的祕密變量或受保護的祕密變量
  4. YAML定義的作業級變量
  5. YAML定義的全局變量
  6. 部署變量
  7. 預定義變量(是鏈中最低的)

希望這會有所幫助。我很高興他們添加了這個功能。

+0

如果你實際上可以把一些東西放在一起來回答它,那麼參考它會很方便,然後去看我想做的文檔 – deepdive

+0

,但我擔心指令會在下個月左右發生變化。我會回去爲當前的方法添加說明,並希望他們不要改變它:) – trueCamelType

+0

如果您發現這有幫助,請注意投票:) – trueCamelType

-1

我剛剛通過以下發現的示例實現了這個「功能」here 使用crontab和curl(我使用Linux,因爲爲什麼不?)引發一個觸發器來運行夜間測試。

30 0 * * * curl --request POST --form token=TOKEN --form ref=master https://gitlab.example.com/api/v3/projects/9/trigger/builds 
8

根據環境變量(您始終可以打開功能請求!),目前沒有辦法運行作業。不過,如果環境變量不存在,您可以使用簡單的Bash命令立即退出。

喜歡的東西:

stages: 
    - build 
    - test 
    - deploy 

build_project: 
    stage: build 
    script: 
    - cd ./some-dir 
    - build-script.sh 
    except: 
    - tags 

# Run this only when NIGHTLY_TEST environment variable exists. 
nightly_regression_test_project: 
    stage: test 
    script: 
    - [ -z "$NIGHTLY_TEST" ] && exit 1; 
    - cd ./some-dir 
    - execute test-script 

如果變量不存在跟隨它不會運行測試。否則,他們會。

希望幫助!