基本概念
1、CI/CD
CI(Continuous Integradtion)持續(xù)集成缎除,在代碼完善過程中持續(xù)地進(jìn)行代碼的繼承膝但、構(gòu)建以及自動(dòng)化測試等。
CD(Continuous Delivery策泣、Continuous Deployment)持續(xù)交互衙傀、持續(xù)部署,當(dāng)代碼完成后萨咕,可以方便地將新版本部署上線统抬,這樣有利于快速迭代并交互產(chǎn)品。
詳細(xì)查看文章——什么是CI/CD
2危队、GitLab中的CI/CD
GitLab CI/CD是一套基于GitLab的CI/CD系統(tǒng)聪建,開發(fā)人員可以通過.gitlab-ci.yml
在項(xiàng)目中配置CI/CD流程,在代碼提交后茫陆,GitLab可以自動(dòng)/手動(dòng)地執(zhí)行任務(wù)金麸,完成CI/CD操作。
在完成GitLab的CI/CD系統(tǒng)時(shí)簿盅,需要安裝gitlab
挥下、gitlab-runner
兩個(gè)應(yīng)用程序。
1挪鹏、安裝gitlab见秽,查看文章——Linux安裝gitlab代碼倉庫
本文主要講述GitLab中 CI/CD 的安裝和配置。
GitLab中CI/CD相關(guān)概念
概念 | 含義 |
---|---|
pipelines管道 | 管道是持續(xù)集成讨盒、交付和部署的頂級(jí)組件解取,包含:任務(wù)(Jobs)和階段(stages) |
Jobs任務(wù) | 定義要做什么,如:編譯或測試代碼的作業(yè) |
Stages階段 | 定義何時(shí)運(yùn)行作業(yè)返顺,如:在編譯代碼的階段之后運(yùn)行測試代碼階段 |
任務(wù)(Jobs)是被runner執(zhí)行的禀苦,當(dāng)有多個(gè)runners并且同一階段(stage)有多個(gè)任務(wù)(Jobs)時(shí),將并行執(zhí)行這些任務(wù)(Jobs)遂鹊。
當(dāng)一個(gè)階段內(nèi)的所有任務(wù)(Jobs)全部成功執(zhí)行后振乏,管道將執(zhí)行下一個(gè)階段(stage)的任務(wù)(Jobs);當(dāng)一個(gè)階段內(nèi)的任意一個(gè)任務(wù)(Jobs)失敗后秉扑,管道將停止執(zhí)行慧邮。
GitLab安裝和注冊CI/CD
GitLab安裝CI/CD
GitLab安裝CI/CD的官方教程
總結(jié)如下:
# 下載到/usr/local/bin中调限,可以直接在控制臺(tái)輸入命令
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 分配運(yùn)行權(quán)限
chmod +x /usr/local/bin/gitlab-runner
# 創(chuàng)建用戶
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# 安裝
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 運(yùn)行
gitlab-runner start
完成上述流程后,沒有發(fā)生錯(cuò)誤即表名安裝成功误澳。
GitLab創(chuàng)建Runner
通過gitlab-runner register
命令進(jìn)行創(chuàng)建Runner即可耻矮,過程如下:
1、輸入gitlab的地址
2忆谓、輸入gitlab中runner的token裆装,這里在gitlab中查看,請看下面截圖倡缠。
3哨免、對runner進(jìn)行描述
4、輸入runner的tag
5昙沦、輸入runner的操作信息
6琢唾、輸入執(zhí)行runner的執(zhí)行器類型
截圖如下:
查看token過程1:
查看token過程2:如果是admin賬號(hào)登錄的GitLab系統(tǒng),可以輸入以下網(wǎng)址:
http://192.168.10.150:8081/admin/runners
Runner與項(xiàng)目進(jìn)行關(guān)聯(lián)
當(dāng)創(chuàng)建Runner時(shí)使用的token為項(xiàng)目token時(shí)桅滋,這一步將忽略慧耍。
當(dāng)創(chuàng)建Runner時(shí)使用的token為gitlab的token時(shí),將需要在頁面將項(xiàng)目和Runner進(jìn)行關(guān)聯(lián)丐谋。
進(jìn)入http://192.168.10.150:8081/admin/runners
關(guān)聯(lián)后的項(xiàng)目中的runner顯示:
GitLab使用CI/CD
GitLab中是通過.gitlab-ci.yml文件使用CI/CD。
.gitlab-ci.yml文件中的內(nèi)容:stages(階段定義)煌珊、variables(變量定義)号俐、cache(緩存定義)、job(任務(wù)定義)定庵、scripts(執(zhí)行內(nèi)容)等吏饿。
詳情見官方文檔。
stages階段
使用階段(stages)來定義包含任務(wù)組的階段蔬浙。在作業(yè)中使用 stage 將作業(yè)配置為在特定階段運(yùn)行猪落。
例如:
stages:
- build
- test
- deploy
在stages階段,表明各個(gè)job畴博。
Jobs階段
Jobs階段常用的
before_script
數(shù)組類型笨忌,在script
之前運(yùn)行的Linux命令。
tags
數(shù)組類型俱病,使用標(biāo)簽從項(xiàng)目可用的所有運(yùn)行器列表中選擇特定運(yùn)行器官疲。
stage
該值為stages
里面的任意一個(gè)值,使用stage來定義一個(gè)job運(yùn)行在哪個(gè)階段亮隙,同一個(gè)stage的job可以并行執(zhí)行
script
數(shù)組類型途凫,使用腳本指定運(yùn)行器要執(zhí)行的命令。
artifacts
使用artifacts組件的作用為保存文件溢吻。
本文介紹前端項(xiàng)目的CI/CD维费,.gitlab-ci.yml
文件如下:
stages: # 定義階段
- install
- build
- deploy
cache: # 定義緩存路徑,node項(xiàng)目中安裝的依賴路徑
paths:
- node_modules
- build
install-job: # 安裝作業(yè)
tags: # 與Runner保持一致
- vue-20200329
stage: install # 階段與工作關(guān)聯(lián),即上述定義的某個(gè)階段
script: # 定義運(yùn)行的shell命令
- pwd
- npm install
build-job:
tags:
- vue-20200329
stage: build
script:
- pwd
- npm run build
only:
- master
artifacts:
paths:
- dist/
deploy-job:
tags:
- vue-20200329
stage: deploy
script:
- echo ${CI_PROJECT_DIR} # 這個(gè)路徑為當(dāng)前的工作目錄犀盟。
- rm -rf /usr/local/nginx/html/dist
- cp -a ./dist/ /usr/local/nginx/html/
運(yùn)行結(jié)果如下: