2017-06-05 91 views
0

我正在使用Gitlab-CI,我正在考慮所有分支的一項工作,這些工作基本上可以被視爲某種單元測試,而另一項工作則專門負責主分支,例如複製和執行一些實際操作。單元測試工作必須在所有分支上運行。如何設置gitlab-ci作業來重新使用特定主工作中的所有分支作業?

我在想這些腳本是否可以重疊,這樣基本上所有的分支作業都可以作爲一種驗證在主設備之前執行。

這樣做是爲了加強現有兩個條件中的合併請求:

  • 只允許合併請求合併如果管道成功
  • 只允許合併請求合併,如果所有的討論都解決

我簡化了一下.gitlab-ci.yml如下:

job_all_branches: 
    script: 
    - unit-tests 

job_master_branch: 
    script: 
    - copy-files 
    only: 
    - master 

當然,可以提到我們可以將所有分支作業中的單元測試腳本複製並粘貼到job_master_branch中調用的腳本中,但我想知道是否有避免冗餘定義的方法。

+1

不太清楚你問什麼。如果你喜歡,你可以在單元測試中使用'except:master'。 Gitlab支持[要求構建在合併之前傳遞](https://gitlab.mercuria.met/help/user/project/merge_requests/merge_when_pipeline_succeeds#only-allow-merge-requests-to-bemerged- if-該流水線-成功)。 – Matthew

回答

0

找到了一個解決方案,它實際上是超級簡單,我不得不使用階段...:
- https://docs.gitlab.com/ee/ci/yaml/#stages
- https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/

這樣的感覺我還沒有想通這一個完整的白癡之前。
反正這裏是低於我想實現:

stages: 
    - test 
    - deploy 
test_job: 
    stage: test 
    script: 
    - ./my-test-script.sh 
    allow_failure: false 
    tags: 
    - my 
    - lovely 
    - test 
    - runner 


deploy_job: 
    stage: deploy 
    script: 
    - ./my-deploy-script.sh 
    allow_failure: false 
    only: 
    - master 
    tags: 
    - my 
    - lovely 
    - deployment 
    - runner 

因此,他們正在處理順序:)

相關問題