2017-05-06 37 views
0

我有一個託管在Gitlab上的項目。該項目網站位於pages分支內,是一個基於jekyll的網站。Gitlab CI不調用'pages'作業

.gitlab-ci.yml看起來像

pages: 
    script: 
    - gem install jekyll 
    - jekyll build -d public/ 
    artifacts: 
    paths: 
    - public 
    only: 
    - pages 

image: node:latest 

cache: 
    paths: 
    - node_modules/ 

before_script: 
    - npm install -g gulp-cli 
    - npm install 

test: 
    script: 
    - gulp test 

當我把這個配置文件master,管道只執行test工作,而不是pages工作。我想也許推到master沒有援引這項工作,因爲only指定pages分支。然後我試圖推到pages分店,但無濟於事。

如何觸發pages工作?

+0

何時應該執行頁面作業?在每個分支上? befor,after或simultan與測試? – Rufinus

+0

沒有定義階段的afair https://docs.gitlab.com/ce/ci/yaml/README.html#stages - 頁面作業僅在測試成功完成時運行。 – Rufinus

+0

它應該運行時,我推/合併到頁面分支。即使在測試完成後,它也沒有運行。 –

回答

1

假設only限制使作業僅在only子句中指定的ref'sbranches上運行,這是正確的。

https://docs.gitlab.com/ce/ci/yaml/README.html#only-and-except

這可能是有衝突的,因爲分支和作業具有相同的名稱。你可以嘗試將工作重新命名爲不同的東西來測試嗎?

+0

該文件說'頁面是一個「特殊」的工作。這是什麼意思?改變名稱會影響什麼? https://docs.gitlab.com/ce/ci/yaml/#pages –

+1

@ChiragArora你應該保留作業名稱'pages' - 這就是要用GitLab Pages部署你的網站。如果您更改作業的名稱,則不會部署您的網站。 –

0

我想嘗試幾件事情。 首先,我把這個stages片段在YML的頂部:

stages: 
    - test 
    - pages 

這明確地告訴CI運行pages階段之後test階段是成功的。

如果這不起作用,那麼我會刪除only標籤,看看會發生什麼。

+0

實際上,我必須將.gitlab-ci.yml推送到頁面分支本身而不是主分支。文檔記錄不完整,並沒有明確告訴你這樣做。 –

0

補充@rex回答的:

您可以執行:

pages: 
    script: 
    - gem install jekyll 
    - jekyll build -d public/ 
    artifacts: 
    paths: 
    - public 

這將部署你的網站,無論分行的名稱,或:從master

pages: 
    script: 
    - gem install jekyll 
    - jekyll build -d public/ 
    artifacts: 
    paths: 
    - public 
    only: 
    - master # or whatever branch you want to deploy Pages from 

這將部署頁面。

請讓我知道這是否有助於:)

+0

實際上,我不得不推動.gitlab-ci。yml到頁面分支本身而不是主分支。文檔記錄不完整,並沒有明確告訴你這樣做。 –

+0

GitLab Pages上有很多文檔:https://docs.gitlab.com/ce/user/project/pages/。那麼,在使用Git時,希望您從默認分支(通常是'master')簽出一個新分支。因此,每個分支將包含相同的文件,但從該分支更改的文件除外。 (因此,每個分支都有一個'.gitlab-ci.yml'文件)=>請參閱https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging以供參考。但是你是對的,我不認爲有一個文件明確說明這一點。 ;) –