10分鐘搞定gitlab-ci自動化部署

10分鐘搞定gitlab-ci自動化部署

gitlab-ci 是持續集成工具/自動化部署工具,類似 jenkins。

持續集成 是將代碼集成到共享存儲庫並儘可能早地自動構建/測試每個更改的實踐 - 通常一天幾次。

概述

在編碼完成時都會進行打包發佈過程,如果每次都手動操作這一步驟就會浪費時間,效率低下。所以就有了持續集成。

準備事項

請提前安裝以下軟件,本文不介紹如何安裝。

  • gitlab
  • git

配置SSH Key

這一步至關重要,如果已配置可直接跳過。 如果不配置的話每次git pull都會要求輸入密碼,這樣就做不到自動化了。

輸入以下命令,一直回車即可

ssh-keygen -t rsa -b 4096 -C "你的郵箱@example.com"

查看生成的公鑰, 並複製下來

cat ~/.ssh/id_rsa.pub

在gitlab上添加 SSH Key, 至此完成

10分鐘搞定gitlab-ci自動化部署

新建git倉庫

這一步可選,如果你已經有項目可直接跳過,只是為了照顧新人

1、在gitlab上新建項目

10分鐘搞定gitlab-ci自動化部署

2、克隆倉庫, 服務器和本地機器都要克隆,位置隨意。 我把倉庫克隆到了 /home/test/

git@localhost:root/test.git

安裝 gitlab-runner

1、使用gitlab官方提供的倉庫

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、使用yum進行安裝

sudo yum install gitlab-runner

查看Runners配置信息

將 url 和 token複製保存下來,接下來的配置需要用到這2個。

位置 工程項目 -> Settings -> CI/CD -> Runners(點擊右側Expand展開起來就能看到)

10分鐘搞定gitlab-ci自動化部署

url: http://localhost:8088/

token: LquGyHsNbzB2uBBxQMMj

註冊gitlab-runner

安裝完gitlab-runner還需要進行註冊

1、輸入以下命令進行註冊

sudo gitlab-runner register

2、提示 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

將url粘貼並回車(不要說不知道~)

http://localhost:8088/

3、提示 Please enter the gitlab-ci token for this runner:

token粘貼並回車(不要說不知道~)

LquGyHsNbzB2uBBxQMMj

4、提示 Please enter the gitlab-ci description for this runner:

描述,隨便輸入

test build

5、提示 Please enter the gitlab-ci tags for this runner (comma separated):

輸入標籤, 可隨意輸入, 我就叫做 build

build

6、提示 Please enter the executor: docker, parallels, shell, ssh, docker+machine, custom, docker-ssh, virtualbox, docker-ssh+machine, kubernetes:

這一步根據自己的需求選擇,這裡選擇 shell, 然後回車

shell

註冊完成!~

註冊 gitlab-ci-multi-runner

這一步和註冊 gitlab-runner 一模一樣,輸入同樣的信息即可

sudo gitlab-ci-multi-runner register

運行 gitlab-runner

查看是否運行成功,就在查看配置信息這裡, 綠色圓點表示運行成功

10分鐘搞定gitlab-ci自動化部署

如果上述沒有運行,就執行這一步,否則跳過

gitlab-runner run

編寫 gitlab-ci.yml

在本機項目根目錄新建 .gitlab-ci.yml 然後寫入:

stages:
- build
# task-1 名字隨意,代表一個工作
task-1:
stage: build
# 執行腳本, 這段腳本會在服務器執行
/> - mkdir -p /home/temp_dir
tags:
# 標籤名字,註冊runner時所填寫的tag
- build
only:
# 只有 master 分支才會執行
- master

提交到遠程倉庫, gitlab 會偵測項目根目錄下是否有 .gitlab-ci.yml, 如果有就會執行內容裡面的任務。

查看本次任務是否執行成功, 如果出現 passed 表明成功執行

10分鐘搞定gitlab-ci自動化部署

不過呢,並非都是那麼好運氣的,有以下幾種情況出現:

  • pending 系統資源可能不足
  • canceled 取消執行 或 根目錄沒有 .gitlab-ci.yml
  • failed 任務失敗, 基本上是 .gitlab-ci.yml 編寫有誤

上面的任務只是每次提交會在 home 目錄下新建 temp_dir

10分鐘搞定gitlab-ci自動化部署

如果想每次提交進行自動打包/重啟呢?例如node服務端

只要在 script 字段編寫一系列命令即可, 或者執行 shell 腳本

stages:
- build
# task-1 名字隨意,代表一個工作
task-1:
stage: build
# 執行腳本, 這段腳本會在服務器執行
/> - cd /home/test
- git pull
- npm run build
- pm2 restart all
tags:
# 標籤名字,註冊runner時所填寫的tag
- build
only:
# 只有 master 分支才會執行
- master

.gitlab-ci.yml 配置信息非常多,可參考 官方yaml配置

gitlab-runner其他命令

運行 gitlab-runner

gitlab-runner run

查看 gitlab-runner 狀態

gitlab-runner status 

查看註冊列表

gitlab-ci-multi-runner list

刪除註冊信息

gitlab-ci-multi-runner unregister --name "名稱"

最後

gitlab-ci 基本上是可以滿足大部分自動化部署場景的,如果想功能強大點的可上 jenkins。


分享到:


相關文章: