
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, 至此完成

新建git倉庫
這一步可選,如果你已經有項目可直接跳過,只是為了照顧新人
1、在gitlab上新建項目
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展開起來就能看到)
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
查看是否運行成功,就在查看配置信息這裡, 綠色圓點表示運行成功
如果上述沒有運行,就執行這一步,否則跳過
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 表明成功執行
不過呢,並非都是那麼好運氣的,有以下幾種情況出現:
- pending 系統資源可能不足
- canceled 取消執行 或 根目錄沒有 .gitlab-ci.yml
- failed 任務失敗, 基本上是 .gitlab-ci.yml 編寫有誤
上面的任務只是每次提交會在 home 目錄下新建 temp_dir
如果想每次提交進行自動打包/重啟呢?例如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。
閱讀更多 我是麥菜 的文章