幫忙改進翻譯html
官方原文檔:https://docs.gitlab.com/ee/ci...node
注:從8.0版本開始,GitLab 持續集成(CI)徹底集成到GitLab中,且默認全部的項目開啓。
GitLab提供持續集成服務。若是添加一個.gitlab-ci.yml
文件到項目根目錄,並配置GitLab項目使用某個Runner,而後每一次提交或者是推送都會觸發CI pipeline.git
.gitlab-ci.yml
文件會告訴GitLab Runner 作什麼。默認狀況下,它運行一個pipeline
,分爲三個階段:build
,test
,deploy
。你並不須要用到全部的階段,沒有job
的階段會被忽略。github
若是一切運行正常(沒有非零的返回值),您將獲得與commit關聯的漂亮的綠色標記。這使得在查看代碼以前,很容易就能看出是否有一個提交致使了測試失敗。sql
大多數項目使用GitLab CI服務來運行測試套件,這樣若是開發人員發現問題就會及時獲得反饋。docker
所以,簡而言之,CI所須要的步驟能夠歸結爲:shell
1. 添加`.gitlab-ci.yml`到項目的根目錄 2. 配置一個Runner
今後刻開始,在每一次push到Git倉庫的過程當中,Runner會自動開啓pipline,pipline將顯示在項目的Pipline頁面中。ruby
本指南要求:工具
讓咱們把它分解成碎片,並致力於解決GitLab CI之謎。gitlab
.gitlab-ci.yml
在建立.gitlab-ci.yml
以前,咱們先對它進行個簡單的解釋。
.gitlab-ci.yml
是什麼.gitlab-ci.yml
是用來配置CI在咱們的項目中作些什麼工做。它位於項目的根目錄。
在任何的push操做,GitLab都會尋找.gitlab-ci.yml
文件,並對這次commit開始jobs,jobs的內容來源於.gitlab-ci.yml
文件。
由於.gitlab-ci.yml
是存在於咱們的項目倉庫中,而且受版本控制的,因此舊版本也能夠執行成功,且使用CI可讓forks更容易,分支可也以擁有不一樣的pipelines和jobs,並且對於CI來講只會擁有單一的來源。你也能夠在咱們的博客中找到咱們爲何使用.gitlab-ci.yml
的緣由。
.gitlab-ci.yml
注意:
.gitlab-ci.yml
是一個
YAML文件,因此必需要格外注意鎖緊。使用空格,而不是tabs。
在項目的根目錄建立一個名爲.gitlab-ci.yml
的文件。下面是一個Ruby on Rails項目的示例。
before_script: - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs - ruby -v - which ruby - gem install bundler --no-ri --no-rdoc - bundle install --jobs $(nproc) "${FLAGS[@]}" rspec: script: - bundle exec rspec rubocop: script: - bundle exec rubocop
這是大多數Ruby應用程序最簡單的配置:
rspec
和rubocop
(名字能夠隨便取),他們執行不一樣的命令。before_script
定義的命令都將會被執行。.gitlab-ci.yml
定義了一系列的jobs,其中包含如何運行和什麼時候運行的限制。jobs必須定義一個名稱(在示例中分別是rspec
和rubocop
)做爲頂級元素,並且老是必須包含script
關鍵字。Jobs被用來建立任務,它們會被Runners接受和環境中的Runner執行。
重要的是,每一個工做都是獨立運行的。
若是你想檢驗.gitlab-ci.yml
文件的語法是否正確,在GitLab實例頁面中有一個命令行工具/ci/lint
。也能夠從項目中的CI/CD ➔ Pipelines and Pipelines ➔ Jobs找到此頁面。
關於更多.gitlab-ci.yml
的信息和語法,請閱讀.gitlab-ci.yml參考文檔。
.gitlab-ci.yml
到GitLab一旦建立了.gitlab-ci.yml
,你應該及時添加到Git倉庫並推送到GitLab。
git add .gitlab-ci.yml git commit -m "Add .gitlab-ci.yml" git push origin master
如今到Pipelines頁面查看,將會看到該Pipline處於等待狀態。
你也能夠到Commits頁面查看,並會發現SHA旁邊的暫停按鈕。
點擊它便可進入到該特定commit的jobs頁面。
在GitLab中,Runners將會運行你在.gitlab-ci.yml
中定義的jobs。Runner能夠是虛擬機,VPS,裸機,docker容器,甚至一堆容器。GitLab和Runners經過API通訊,因此惟一的要求就是運行Runners的機器能夠聯網。
一個Runner能夠服務GitLab中的某個特定的項目或者是多個項目。若是它服務全部的項目,則被稱爲共享的Runner。
在Runners文檔中查閱更多關於不一樣Runners的信息。
你能夠經過Settings->CI/CD查找是否有Runners分配到你的項目中。建立一個Runner是簡單且直接的。官方支持的Runner是用GO語言寫的,它的文檔在這裏https://docs.gitlab.com/runner/。
爲了有一個功能性的Runner,你須要遵循如下步驟:
按照上面的鏈接設置你本身的Runner或者使用下一節介紹的共享Runner。
一旦Runner安裝好,你能夠從項目的Settings->CI/CD找到Runner頁面。
若是你用的是GitLab.com,你可使用GitLab公司提供的共享Runners。
這些是運行在GitLab基礎設置上面的特殊虛擬機,能夠構建任何項目。
你能夠經過項目中的Settings->CI/CD找到Shared Runners,並點擊開啓它。
成功的配置好Runner後,你應該查看最後一次提交後的狀態,從pending、到執行中、成功或失敗。
你能夠經過項目中的Piplines頁面查看全部的piplines。
也能夠經過Piplines->Jobs頁面查看全部的jobs。
經過點擊jobs的狀態,查看該job的日誌。這對於幫助診斷job失敗或者job與預期結果不一樣很重要。
你還能夠查看在GitLab的各類頁面中的任何提交狀態,例如Commits和Merge requests。
在這裏,能夠查看各類語言使用GitLab CI的示例。