1. 程式人生 > >如何使用GitLab和Rancher構建CI/CD流水線

如何使用GitLab和Rancher構建CI/CD流水線

介紹

GitLab核心是整合管理Git儲存庫的工具。比如你希望建立一個提供服務的平臺,那麼GitLab將提供強大的身份驗證和授權機制、工作組、問題跟蹤、wiki和片段,除此之外還有公有、內部和私有儲存庫。

GitLab強大之處在於,它包含強大的持續整合(CI)引擎和Docker容器映象倉庫,讓使用者從開發到釋出都使用相同的實用工具。它還有兩個更強大的開源軟體實用工具:Prometheus負責監控,Mattermost負責和團隊溝通。該平臺有著堅實的API並能和多個現有第三方系統整合,如:JIRA,Bugzilla,Pivotal,Slack,HipChat,Bamboo等。

這裡就有這樣一個疑問:為什麼使用GitLab而不是直接使用SaaS 服務?答案只是個人品味而已。對大多數人來說,向SaaS提供商購買其提供的服務是一個很好的解決方案。你可以專注於搭建你的應用程式,讓他們去操心維護這些工具。而如果你已擁有的基礎設施有備用容量怎麼辦?如果你只想私有化儲存庫而不想為該許可權付費時該怎麼辦?如果你想運用你的數學頭腦由自己託管來省錢該怎麼辦?如果你只想擁有你自己的資料該怎麼辦?

由內部提供服務可以讓你有更多的時間管理它們並讓它們之間相互通訊來消除風險,這就是GitLab的出眾之處。僅需要一次點選和幾分鐘的配置,你就可以啟動並執行一個完整的解決方案。

部署GitLab

Rancer的Catalog包含了安裝最新版GitLab CE的條目。它假設你有一個主機,希望為HTTP/HTTPS直接開啟80和443埠,並且開啟一個埠對映到容器內的22埠。

Catalog條目會根據你提供的值設定環境變數GITLAB_OMNIBUS_CONFIG。然後GitLab在釋出時將這些值併入配置。對於非常基本的GitLab部署,Catalog提供的選擇是完全足夠的,不過我仍希望向你展示更多的內容…

在本教程中,我們將部署GitLab CE,不過我們不會開啟任何埠。主機埠非常昂貴,因此稍後我們會使用一個負載均衡器。我們將配置HTTPS和Docker Registry,並將其與Rancher配合使用。

  1. 建立一個名為gitlab的新應用
  2. 向gitlab應用新增一個服務 
    • Image: gitlab/gitlab-ce:latest
    • Volumes: 
      gitlab-etc:/etc/gitlab 
      gitlab-opt:/var/opt/gitlab 
      gitlab-log:/var/log/gitlab
    • Networking 
      Set a specific host name: git
    • Health Check 
      HTTP: Port 80 
      Path: GET /HTTP/1.0
  3. 向postfix服務中新增一個配對 
    • Image: tozd/postfix
    • Environment: 
      MY_NETWORKS:10.42.0.0/16, 127.0.0.0/8 
      ROOT_ALIAS: [email protected]
    • Volumes: 
      postfix-log:/var/log/postfix 
      postfix-spool:/var/spool/postfix
    • Health Check: 
      TCP: Port 25

執行之前,你還需完成幾個選項來配置GitLab:

  1. 將所有的GitLab變數新增到GITLAB_OMNIBUS_CONFIG
  2. 稍後設定所有變數

對於首次使用的使用者來說,我建議選擇第二項。GitLab提供的gitlab.rb檔案在預設設定下文件已經很豐富,如果你之前沒有接觸過GitLab,參考這份檔案就可以得到大量功能的說明介紹。

接著,單擊Launch鍵,Rancher將抓取映象並呈現給你。

設定SSL解除安裝

Rancher在抓取映象的時候,我們來用HTTPS新增一個負載均衡器。為此,我們首先要建立一個LetsEncrypt容器,然後將其新增到負載均衡器中,等待證書註冊。註冊完成後,將GitLab的配置新增到負載均衡器上。

在這個例子中,我將使用域名“example.com”,GitLab的主機名設定為“git”,Docker Registry的主機名設定為“regitstry”。在執行下一步前需確保你已經將相應的記錄新增到DNS區域檔案中,且這些記錄均指向執行均衡器的主機。

部署LetsEncrypt

  1. 從Rancher社群Catalog中,選擇LetsEncrypt服務。接受第一個下拉列表中的TOS,然後按以下設定準備HTTP驗證: 
    • 你的Email地址: [email protected]
    • 證書名: gitlab
    • 域名:git.example.com,registry.example.com
    • 域驗證方法: HTTP
  2. 單擊Launch以釋出容器。現在開始你有120秒來完成下一步。

部署負載均衡器

  1. 在gitlab棧中,單擊“新增服務”旁邊的下拉選單,然後選擇新增負載均衡器。給它取個名字,接著新增下面的服務選擇器。另外,如果你已經有了一個負載均衡器的環境,編輯它,新增下面的服務。 
    • Public / HTTP
    • Port: 80
    • Path: /.well-known/acme-challenge
    • Target: letsencrypt
    • Port: 80
  2. 單擊“編輯”儲存你所做的變更。

監控LetsEncryt容器的日誌,兩分鐘後,就可以獲得它已經註冊了兩個域的證書的報告。如果你收到狀態403或503的錯誤報告,那麼需要檢查負載均衡器配置,確認設定無誤。LetsEncrypt容器將重新啟動並繼續嘗試註冊證書。註冊成功後,你就可以在Rancher介面中的基礎設施選項卡中找到該證書。

到這為止我們已經準備好通過負載均衡器向GitLab新增SSL支援:

  1. 編輯負載均衡器
  2. 新增以下服務規則: 
    • Public / HTTP 
      Host: git.example.com 
      Port: 80 
      Target: gitlab 
      Port: 80
    • Public / HTTPS 
      Host: git.example.com 
      Port: 443 
      Target: gitlab 
      Port: 80
    • Public / HTTPS 
      Host: registry.example.com 
      Port: 443 
      Target: gitlab 
      Port: 80
    • Public / TCP 
      Port: 2222 
      Target: gitlab 
      Port: 22
  3. 單擊“編輯”儲存你所做的更改。

配置GitLab

GitLab的配置儲存在容器中的/etc/gitlab/gitlab.rb下。當我們啟動服務時,我們建立了一個Docker卷用於持久化儲存這些資料。在Rancher中,找到你的GitLab容器,使用Execute Shell登入。將儲存地址改為/etc/gitlab,然後編輯gitlab.rb。

在gitlab.rb中有很多變數可以調整GitLab的行為。這裡每一個部分都包含了一個指向GitLab文件的連結,文件描述了該服務的功能以及每個變數的調整。

在本教程中,需要找到以下變數,更改或者取消它們的註釋:

external_url ‘https://git.example.com’
gitlab_rails['gitlab_ssh_host'] = 'git.example.com’
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
gitlab_rails['gravatar_plain_url'] = 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
gitlab_rails['gravatar_ssl_url'] = 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'postfix'
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_domain'] = 'yourdomain.com'
gitlab_rails['smtp_authentication'] = false
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_pg_schema'] = 'public'
gitlab_rails['backup_keep_time'] = 604800
registry_external_url 'https://registry.example.com’
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = 'registry.example.com'
gitlab_rails['registry_api_url'] = 'http://localhost:5000'
gitlab_rails['registry_key_path'] = '/var/opt/gitlab/gitlab-rails/certificate.key'
gitlab_rails['registry_path'] = '/var/opt/gitlab/gitlab-rails/shared/registry'
gitlab_rails['registry_issuer'] = 'omnibus-gitlab-issuer'
registry['enable'] = true
registry['token_realm'] = 'https://git.example.com'
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
 'Host' => '$http_host_with_default',
 'X-Real-IP' => '$remote_addr',
 'X-Forwarded-For' => '$proxy_add_x_forwarded_for',
 'X-Forwarded-Proto' => 'https',
 'X-Forwarded-Ssl' => 'on',
 'Upgrade' => '$http_upgrade',
 'Connection' => '$connection_upgrade'
}
registry_nginx['enable'] = true
registry_nginx['listen_port'] = 80
registry_nginx['listen_https'] = false
registry_nginx['proxy_set_headers'] = {
 'Host' => '$http_host',
 'X-Real-IP' => '$remote_addr',
 'X-Forwarded-For' => '$proxy_add_x_forwarded_for',
 'X-Forwarded-Proto' => 'https',
 'X-Forwarded-Ssl' => 'on'
}
registry_nginx['custom_gitlab_server_config'] = 'proxy_cache_convert_head off;'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

在這些變數變更之後,意味著以下工作你已經完成了:

  1. 為你的Git URLs設定主機名
  2. 配置GitLab將HTTP反向到HTTPS
  3. 啟用HTTP和HTTPS兩者的HTTPS gravatar URLs(在避免內容混合的錯誤時是必要的)
  4. 將報告的SSH埠設為2222
  5. 啟用來自GitLab的郵件
  6. 通過Postfix助手啟動郵件傳遞
  7. 啟用一個星期保留期的夜間備份
  8. 啟用容器registry
  9. 啟用GitLab的配置和必需的標題,讓GitLab知道它是在SSL負載均衡器之後

儲存此檔案,接著輸入gitlab-ctl reconfigure,按Enter鍵重新配置GitLab。GitLab將重建它的配置,重啟那些需要的服務。

登入

現在你已經準備好了!在你的瀏覽器中輸入https://git.example.com,會出現一個要求你輸入密碼的介面。這裡預設使用者是root,如果你設定了密碼,系統將要求你重新登入。

恭喜你!你有了一個正在執行的GitLab例項!

現在還有一些需要我們從GitLab內部做的工作來鞏固它,請你接著讀下去。

鎖定它

我建議你去做以下變更操作:

更改root使用者名稱

以root身份登入任何內容都是不安全的,因為該使用者名稱是一個眾所周知的目標。現在你是以唯一的使用者身份登入進來的,那麼第一件事就是更改你的使用者名稱。

  1. 點選位於右上角、在搜尋欄旁邊的扳手圖示
  2. 在中間列的底部選擇管理員
  3. 選擇右上角的編輯按鈕
  4. 更改你的名字、使用者名稱和郵箱地址
  5. 向下滾動並單擊“儲存更改”

管理員賬戶的舊郵箱地址是[email protected],更改此資訊只是嘗試向該賬戶傳送電子郵件來通知這些更改。我敢相信example.com郵箱的人會吃驚於他們收到的電子郵件數。

  1. 返回Rancher,找到你的postfix容器和Execute Shell
  2. 輸入mailq,按下Enter鍵。你應該看到延遲的郵件在佇列中,注意ID
  3. 輸入postsuper –d,按下Enter鍵,將從佇列中刪除該訊息。

禁止公開註冊

下一步的更改將使Internet不再接管你的新GitLab例項,也不能再將其用於惡意的目的。

  1. 再次點選扳手影象,返回到管理控制檯
  2. 點選右上角齒輪圖示的下拉選單,選擇設定
  3. 你可以根據需要調整其中任意一項,但你需要禁用在Sign-up Restrictions下的Sign-up enabled預設值

檢查你的埠

在這個例子中,我們使用了80、443、2222埠。GitLab不需要主機上的其他埠,不過2222埠並不是通用埠。你需要確認你已經在防火牆中打開了它(2222埠)。

這會有一個很棒的GitLab安裝過程。你可以立即為你的專案啟動它。是的,在GitLab中還有很多事情要做!

新增你的SSH金鑰

儘管你可以通過HTTPS使用GitLab,然而使用SSH指令執行則更為常見。在執行此操作之前,需要將你的SSH公鑰新增到GitLab,這樣它會識別你的身份。如果你沒有SSH金鑰,你可以用下列程式碼製作一個(Linux或Mac系統上):

ssh-keygen -b 2048
  • 1

儘可能使用密碼口令確保安全——你的金鑰有以特權使用者身份登入的許可權,如果膝上型電腦遭到入侵,你也不願為攻擊者提供訪問級別。(如果你不想使用密碼口令或處理SSH代理,請訪問https://krypt.co上優秀的Kryptonite專案)

使用預設值(或選擇新的金鑰名稱)儲存,接著在GitLab中:

  1. 點選右上角的頭像旁邊的下拉選單,選擇設定,然後選擇SSH金鑰
  2. 將你的公鑰(.pub檔案中的內容)貼上到開啟頁面的框中

很快我們將釋出該系列的第二部分,其中將介紹如何使用GitLab CI Multi-Runner構建容器,以及如何使用GitLab容器registry配置專案。除此之外,我們還將涉及如何用GitLab CI建立容器並部署到Rancher上。

這是我們使用GitLab和Rancher構建CI/CD流水線系列教程的第二部分。第一部分的內容介紹瞭如何部署、配置和確保GitLab在Rancher的執行。這一部分中,我們將介紹如何使用GitLab CI Multi-Runner構建容器,以及如何使用GitLab容器registry配置專案。除此之外,我們還將涉及如何用GitLab CI建立容器並部署到Rancher上。

使用GitLab CI Multi-Runner構建容器

GitLab CI是用於持續整合和持續交付的強大工具。它需要和Rancher配合使用,這裡我們將部署一個執行作業的runner。

執行Runner

部署runner有好幾種方式,不過考慮到我們的目的是要從自己的儲存庫中建立容器,我們將執行一個可以直接訪問/var/run/docker.sock的Docker容器,來構建和自身同步的映象。

  1. 在Rancher中,向你的Gitlab棧新增一個服務。
  2. 使用以下配置進行設定: 
    • Name: runner01
    • Image: gitlab/gitlab-runner
    • Console: None
    • Volumes: 
      /var/run/docker.sock:/var/run/docker.sock 
      runner01-etc:/etc/gitlab-runner

容器執行時,它將在/etc/gitlab-runner中建立一個預設配置,該配置對應我們已經建立連線的卷。接下來,用你的Gitlab例項註冊runner。

下面操作中,我設定的配置適用於基本的runner,它可以搭建任意作業。你還可以將runner限制在指定的儲存庫中或是使用其他的映象。這裡你可以閱讀GitLab的文件來了解是最適合你的環境的選項。

配置Runner

  1. 在容器中執行shell
  2. 執行gitlab-ci-multi-runner register開始註冊
  3. 按照提示資訊輸入,參考下列示例(答案是粗體字)

[email protected]:/# gitlab-ci-multi-runner register 
Running in system-mode. 
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): 
 
Please enter the gitlab-ci token for this runner: 
DGQ-J7n0tR33LXB3z_ 
Please enter the gitlab-ci description for this runner: 
4bd974b1c799]: runner01 
Please enter the gitlab-ci tags for this runner (comma separated): 
< press enter> 
Whether to lock Runner to current project [true/false]: 
[false]: < press enter> 
Registering runner… succeeded runner=DGQ-J7dD 
Please enter the executor: docker, parallels, ssh, docker-ssh+machine, kubernetes, docker-ssh, shell, virtualbox, docker+machine: 
docker 
Please enter the default Docker image (e.g. ruby:2.1): 
docker:stable 
Runner registered successfully.

放手去執行它們吧,如果runner已經執行,那麼配置會自動地就重新載入。這裡要著重注意的是:

  • 輸入你的Gitlab例項的URL
  • 輸入runner令牌(在Admin / Runners中找到)
  • 給runner起一個可被識別的名字
  • 選擇runner的docker型別
  • 選擇docker:stable容器映象

在初始的註冊完成後,我們需要編輯/etc/gitlab-runner/config.tom並作出調整:

  • volumes = [“/var/run/docker.sock:/var/run/docker.sock”, “/cache”]

這樣在容器中裝載/var/run/docker.sock,使得構建的容器儲存在主機本身的映象儲存中。這是一個比Docker更好的方法。

config.toml的修改是由Runner自動執行的,因此無需重新啟動。

你可以在Admin/Runners下看到你的runner並與之互動。

使用容器映象倉庫配置專案

GitLab的容器映象倉庫直接和儲存庫繫結,因此無法將容器轉移到任何其他位置。如果你在docker組中有一個名為demo-pho的儲存庫,那麼映象的路徑就是registry.example.com/docker/demo-php ,其中的標籤是根據你如何用GitLab CI建立容器而定義的。

在本教程的餘下部分,我將使用一個儲存庫,該儲存庫的內容可以在github中找到。需要執行以下內容才能在你的GitLab環境中啟動它:

  1. 在GitLab中建立一個專案。在本教程中,我給它命名為example/demo(工作組是example,專案是demo)
  2. 克隆並修改rancher-gitlab-demo儲存庫
$ git clone https://github.com/oskapt/rancher-gitlab-demo.git demo
$ cd demo
$ git remote set-url origin ssh://[email protected].example.com:2222/example/demo.git
$ git push -u origin master
  • 1
  • 2
  • 3
  • 4

該檔案如下所示:

variables:
 REGISTRY_HOST: registry.example.com
 TEST_IMAGE: $REGISTRY_HOST/$CI_PROJECT_PATH:$CI_BUILD_REF_NAME
 RELEASE_IMAGE: $REGISTRY_HOST/$CI_PROJECT_PATH:latest

stages:
 - build
 - release

before_script:
 - docker info
 - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $REGISTRY_HOST

build:
 stage: build
 script:
   - docker build --pull -t $TEST_IMAGE .
   - docker push $TEST_IMAGE

release:
 stage: release
 script:
   - docker pull $TEST_IMAGE
   - docker tag $TEST_IMAGE $RELEASE_IMAGE
   - docker push $RELEASE_IMAGE
 only:
   - master

push_to_docker_hub:
 # in order for this to work you will need to set
 # `HUB_USERNAME` and `HUB_PASSWORD` as CI variables
 # in the Gitlab project
 stage: release
 variables:
   DOCKER_IMAGE: $HUB_USERNAME/$CI_PROJECT_NAME:latest
 script:
   - docker login -u $HUB_USERNAME -p $HUB_PASSWORD
   - docker tag $RELEASE_IMAGE $DOCKER_IMAGE
   - docker push $DOCKER_IMAGE
 only:
   - master
 when: manual
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

我設計的這個CI檔案可以在多個基本的Docker專案中使用而無需任何修改。在將變數部分的專案設定為你想要的數值後,檔案的其餘部分就能適用於任何專案。

這裡有兩個階段——構建和釋出。GitLab有自己的token,可令自己登入到自己的映象倉庫,該操作在before_script部分執行。接下來它在構建階段執行指令碼命令,構建容器並使用TEST_IMAGE變數中指定的格式標記容器。這樣獲得一個有分支名稱的容器,就像我們的develop分支這樣:

registry.example.com/example/demo:develop
  • 1

接下來會推送容器資訊進映象倉庫中。

如果是master分支,它會執行所有這些步驟,並且在釋出階段,它在加進映象倉庫前會繼續使用latest標記映象。這樣你會得到一個同時標記了master和lastest的容器。其中lastest是預設的標籤名,你可以在不指定標籤名的情況下獲取它。

最後,master分支有一個可供使用的手動選項,可將容器推送至Docker Hub。若要實現這一步,首先需要在GitLab專案中的Settings | CI/CD Pipelines | Secret Variables下設定HUB_USERNAME和HUB_PASSWORD。GitLab CI將根據DOCKER_IMAGE的值重新標記master映象,接著將其推送至Docker Hub。因為我們已經指定了when下的manual,GitLab不會自動執行,那麼就必須從GitLab手動執行此階段。

通過GitLab CI搭建容器

在develop分支,你可以提交這些更改並將其推送到你的GitLab專案。如果一切都正常執行,你就可以在專案的pipelines標籤下看到pipeline啟動。你可以選擇status圖示來檢視該階段下的詳細進度日誌。

如果出現了任何錯誤,GitLab CI將報告pipeline失敗,你可以檢視日誌瞭解原因。當解決了問題並推送新的提交時,GitLab CI將啟動新的pipeline。如果錯誤是暫時的(如無法連線到Docker Hub),你可以再次執行該階段的pipeline。

如果只想從現有的程式碼執行pipeline,你可以單擊Run Pipeline並選擇要構建的分支。

當一切都完成之後,管道會顯示Passed,你可以在GitLab專案的Registry標籤下看到你的容器。

建立部署使用者

在使用映象倉庫之前,你需要將部署使用者新增到Rancher。我建議你在你想要部署的專案上建立一個具有Reporter許可權的deploy使用者,而不要使用你的管理員賬戶。

  1. 單擊右上角的扳手圖示進入管理區域
  2. 單擊中間列下端的New User按鈕
  3. 建立一個名為deploy的使用者
  4. 在Access下則說明該使用者是External的。這將給使用者提供GitLab中的限制訪問。
  5. 單擊Create User,進入彙總介面

GitLab預設會為使用者傳送登入電子郵件,因此我們需要編輯使用者並設定密碼。

  1. 在彙總介面上,單擊右上角的Edit
  2. 為使用者設定密碼,接著單擊Save Changes
  3. 在GitLab導航到你的專案,單擊Settings後點擊Members
  4. 在搜尋欄鍵入deploy並選擇deploy使用者
  5. 給使用者Reporter許可權
  6. 點選Add to project儲存更改

現在,deploy使用者有權從你的專案的容器登錄檔訪問容器。

部署容器到Rancher

我們到目前為止的所有步驟都是為了這一步——從你的私有映象倉庫中獲取容器並將它部署到Rancher上。我們需要做的最後一件事是新增映象倉庫,然後做一個新的棧和服務。

  1. 在Rancher中,單擊Infrastructure並選擇Registries
  2. 單擊Add Registry
  3. 選擇Custom
  4. 輸入你的登錄檔URl(例如example.com)
  5. 輸入你的部署使用者的使用者名稱和密碼
  6. 單機Create

把映象倉庫新增到Rancher之後,你已經可以從這些映象中建立服務了。

  1. 建立一個名為demo的棧
  2. 新增一個服務,名字由你決定。讓映象使用你新的容器映象中的develop標籤 
    • example.com/example/demo:develop
  3. 點選Create

恭喜你!你剛剛已經用私有容器映象倉庫部署了專案的開發版本!

從這裡開始可以做什麼

這是一個漫長的教程,但當所有的重要步驟完成後,你可以使用已經安裝好的工具開始工作了。從現在開始你可以做這些事情:

  • 為你其他的專案設定工作組。對於將要包含的專案,可以使用邏輯集合,像docker或者websites一樣。
  • 將其他專案匯入GitLab
  • 設定GitLab CI來構建容器
  • 修改master分支,融合develop分支,引入.gitlab-ci.yml,然後將其推送至GitLab。更新Rancher以獲取lastest映象標籤。
  • 將HUB_USERNAME和HUB_PASSWORD新增到專案中,然後手動將你的映象推送至Docker Hub

相關推薦

如何使用GitLabRancher構建CI/CD流水線 – Part 2

docker 鏡像 gitlab 配置 持續集成 部署 這是我們使用GitLab和Rancher構建CI/CD流水線系列教程的第二部分。第一部分的內容介紹了如何部署、配置和確保GitLab在Rancher的運行。這一部分中,我們將介紹如何使用GitLab CI Multi-Runner

如何使用GitLabRancher構建CI/CD流水線–Part 1

介紹GitLab核心是整合管理Git儲存庫的工具。比如你希望建立一個提供服務的平臺,那麼GitLab將提供強大的身份驗證和授權機制、工作組、問題跟蹤、wiki和片段,除此之外還有公有、內部和私有儲存庫。GitLab強大之處在於,它包含強大的持續整合(CI)引擎和

如何使用GitLabRancher構建CI/CD流水線

介紹 GitLab核心是整合管理Git儲存庫的工具。比如你希望建立一個提供服務的平臺,那麼GitLab將提供強大的身份驗證和授權機制、工作組、問題跟蹤、wiki和片段,除此之外還有公有、內部和私有儲存庫。 GitLab強大之處在於,它包含強大的持續整合(CI)引擎和D

Gitlab CI/CD 流水線配置參考

Gitlab CI/CD 流水線配置參考 .gitlab-ci.yml檔案定義了流水線的結構和順序,並確定: 使用GitLab

Jenkins與Docker/Kubernetes的自動化CI/CD流水線實踐--免費直播課等你來約

發布 cto java項目 註意 ofo 互聯網 雲平臺 等你 新版本 直播老師簡介: 李振良·奇虎360-高級運維工程師,主要負責360瀏覽器業務運維。7年互聯網運維工作經驗,具備豐富的運維實戰經驗,曾主導容器雲平臺建設並將業務容器化部署 老師博客專欄地址:基於Kuber

容器平臺自動化CI/CD流水線實操

界面 float 技術 使用 center file pipe align nbsp CI/CD————(實操說明) CI/CD 持續集成(Continuous Integration, CI): 代碼合並,構建,部署,測試都在

通過Jenkins與Docker構建CI/CD基礎架構

done tin 方法 evo roc 所有 sla bar 網絡 ###前言 提到容器平臺,最早接觸的便是LXC(Linux Container),是2010年剛剛接觸虛擬化平臺的時候,當時開源解決方案是xen的天下(後來KVM才後來者居上),且性能各方面都不弱,價值當時

jenkins+maven+gitlab+harbor+k8s的 CI/CD

安裝k8s  jenkins  maven gitlab harbor 過程略過~ 只寫配置jenkins和gitlab過程: 2.返回首頁 點選新建任務 3.配置jenkins專案 (1)寫好描述 主要是寫上專案名 (2)配置git地址 注:第一

docker與jenkins的自動化CI/CD流水線實戰(svn)

準備 安裝完成以下環境:1、svn2、jdk3、maven4、tomcat5、jenkins 專案程式碼測試(php/java):https://github.com/lizhenliang 配置svn 1、檢視結構 trunk:主幹分支branches:其他分支tags:打標記 將程式碼

全開源方案實現基於Docker的CI/CD流水線

概要        隨著DevOps理念不斷的傳播,大部分IT從業者對於DevOps本身也有了一定的瞭解和認識,然而企業內部想根據DevOps思想實踐,這並不是一件很簡單的事情。一方面由於企業內部的歷史環境以及組織結構問題,另外一方面因為業界並沒有一套標準的開源工具集可以借鑑(關於幾家基於Docke

docker與jenkins的自動化CI/CD流水線實戰(php-svn)

環境需求 編寫dockerfile 備註:內容太長,寫在自己的電腦上了流程:1、yum安裝基礎服務,如gcc,make,openssl2、nginx1.14.0安裝3、php-7.1.19安裝4、supervisord監聽nginx,php服務5、#docker防止中文亂碼6、安裝crontabs 服

持續整合釋出工具(CI/CD)

需要用到的工具:git & gitlab & jenkins gitlab的安裝和部署: 一、gitlab部署 1.gitlab安裝: 首先配置yum源: vim /etc/yum.repos.d/gitlab.repo [gitlab] na

基於 Docker、Kubernetes 實現高效可靠的規模化 CI/CD 流水線的搭建

本文來自作者 邸富傑 在 GitChat 上分享,「閱讀原文」檢視交流實錄 「文末高能」 編輯 | 庫克 高效可靠的 CI/CD 流水線是一個IT組織實現軟體服務快速交付的基礎,現如今大量

基於drone構建CI-CD系統

kubernetes叢集三步安裝 CI 概述 用一個可描述的配置定義整個工作流 程式設計師是很懶的動物,所以想各種辦法解決重複勞動的問題,如果你的工作流中還在重複一些事,那麼可能就得想想如何優化了 持續整合就是可以幫助我們解決重複的程式碼構建,自動化測試,釋出等重複勞動,通過簡單一個提交程式碼的動作,解決接下

「持續整合實踐系列 」Jenkins 2.x 構建CI自動化流水線常見技巧

在上一篇文章中,我們介紹了Jenkins 2.x實現流水線的兩種語法,以及在實際工作中該如何選擇指令碼式語法或宣告式語法。原文可查閱:「持續整合實踐系列」Jenkins 2.x 搭建CI需要掌握的硬核要點(一) 在使用傳統的Jenkins Web介面和專案時,比如自由風格型別的任務,我們對處理流程的控制能

Gitlab CI&CD 在前端專案自動化構建部署中的實踐

引言 現在大部分的公司都搭建了自己的Gitlab,除了Git的程式碼管理能力,Gitlab的CI&CD在專案的持續整合和部署上也盡力提高大家的工作效率。下面用我們專案的例子為大家引薦一下這套工具帶來的便利。 Gitlab CI&CD是什麼 如上

CI/CDGitlab整合Jenkins多分支pipeline實現質量檢測自動釋出

本次實施主要實現: 程式碼提交gitlab,自動觸發Jenkins構建 gitlab發起Merge Request, 需要Jenkins檢查通過才可以merge,實現程式碼review和質量管控 gitlab開發分支merge後自動釋出到test環境 gitlab master分支merge後自動釋出到pr

【乾貨】.NetCore Gitlab-CI/CD實踐排坑指南

引言          看過前文的博友可能注意到我是把 部署dll檔案拷貝到生產機器,之後在生產機器上使用docker-compose即時建立映象, 並沒有完成CI/CD, 只是在原來傳統部署方式下 將部署檔案容器化。      

gitlabCI/CD 配置管理 (二)

bce chm cab 密碼登錄 htm ask bios ces local gitlab 的 CI/CD 配置管理 (二)

centos7下使用gitlab+shell實現CI/CD持續集成持續部署

argument shel tro 項目 rman lob b+ pull 部署過程                   centos7下使用gitlab+shell實現CI/CD持續集成持續部署 流程解釋:第一步ci客戶端向gitlab服務器註冊自己,建立通信,