gitlab-runner中搭建nvm、nrm以及優(yōu)化maven打包方式
gitlab-runner搭建nvm、nrm及優(yōu)化maven打包
因?yàn)間itlab-runner作為服務(wù)器的一個(gè)用戶,所以它是不能具備所有root權(quán)限的,對(duì)于nvm、nrm也是,除非將其安裝到非~目錄下
git、gitlab-runner
CentOS 7上的GitLab Runner,讓你的項(xiàng)目加速奔跑
如何以gitlab-runner執(zhí)行
sudo -u gitlab-runner -i
sudo -u gitlab-runner -i 是一個(gè) Linux 命令,它的含義可以分解如下:
- sudo:表示以超級(jí)用戶(root)的權(quán)限運(yùn)行接下來的命令。sudo 命令允許你以其他用戶的身份運(yùn)行命令。
- -u gitlab-runner:指定要以哪個(gè)用戶的身份來運(yùn)行命令。在這個(gè)例子中,我們指定了 gitlab-runner 用戶。這樣后續(xù)的命令就會(huì)以 gitlab-runner 用戶的權(quán)限來執(zhí)行。
- -i:表示以登錄 shell 模式啟動(dòng)。-i 會(huì)讓你切換到指定用戶的 home 目錄,并讀取該用戶的登錄 shell 配置文件(如 .bash_profile 或 .profile),相當(dāng)于你以該用戶身份登錄了一次系統(tǒng)。
組合的意義
sudo -u gitlab-runner -i 命令的完整含義就是:
- 以 gitlab-runner 用戶的身份,以登錄 shell 模式運(yùn)行一個(gè)交互式會(huì)話(也就是進(jìn)入 gitlab-runner 用戶的 shell)。
- 執(zhí)行這個(gè)命令后,你的命令提示符會(huì)切換到 gitlab-runner 用戶的上下文,并且當(dāng)前目錄也會(huì)切換到 gitlab-runner 用戶的 home 目錄。此時(shí),你就可以以 gitlab-runner 用戶的權(quán)限執(zhí)行接下來的命令,類似于你直接以 gitlab-runner 用戶登錄。
應(yīng)用場景
- 檢查用戶權(quán)限:使用 gitlab-runner 用戶身份來檢查是否能訪問某些文件或執(zhí)行某些命令。
- 配置環(huán)境:在用戶的 home 目錄中配置 .bashrc 或 .bash_profile,以確保用戶登錄后有正確的環(huán)境變量配置。
- 調(diào)試 GitLab Runner 問題:如果 gitlab-runner 用戶在 GitLab CI/CD 中無法正確執(zhí)行一些命令,可以通過切換到該用戶身份來手動(dòng)測試命令的執(zhí)行情況。
nvm、nrm
搭建nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
我用的是0.39.6版本的,目前最新的是0.40.1
加載nvm
在安裝完成后,你需要加載 NVM。
你可以通過以下命令來激活 NVM:
source ~/.nvm/nvm.sh
或者通過添加以下內(nèi)容到 ~/.bashrc 文件中,以便每次啟動(dòng)終端時(shí)自動(dòng)加載:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
保存并退出后,可以通過以下命令來使配置生效:
source ~/.bashrc
下載node
# 其中14.15.1為版本號(hào) nvm install 14.15.1
下載nrm
npm install -g nrm
下載成功截圖
上面雖然是在系統(tǒng)中搭建的,但是在gitlab-runner中搭建方式也是一樣的
注意:在編寫gitlab-ci.yml的時(shí)候要執(zhí)行 source ~/.bashrc
build: stage: build # image: node:16 # 使用 Node.js 14 鏡像作為構(gòu)建環(huán)境 script: - source ~/.bashrc # 自動(dòng)加載配置文件 - npm install # 安裝項(xiàng)目依賴 - npm run build # 執(zhí)行構(gòu)建命令,生成靜態(tài)文件 - tar -czf public.tar.gz -C public . # 將 public 目錄下的內(nèi)容打包為 public.tar.gz artifacts: paths: - public.tar.gz # 將打包后的文件作為 artifacts,以供后續(xù)階段使用 tags: # - saas-linux-small-amd64 - acowbo-node
優(yōu)化maven
優(yōu)化前大概發(fā)一次版本需要三分鐘,優(yōu)化后僅需要不到40s
這里給大家提供一個(gè)思路
優(yōu)化拉依賴(如果你沒有本地倉庫的話,就會(huì)每次都要拉取線上的依賴,非常費(fèi)時(shí)間)優(yōu)化打包(如果你的項(xiàng)目很大,這時(shí)候就要想優(yōu)化打包了,因?yàn)閷?duì)于不同服務(wù)器的文件傳輸,也是很費(fèi)時(shí)間的)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解docker國內(nèi)鏡像拉取和鏡像加速registry-mirrors配置修改
由于國內(nèi)訪問直接訪問Docker hub網(wǎng)速比較慢,拉取鏡像的時(shí)間就會(huì)比較長。一般我們會(huì)使用鏡像加速或者直接從國內(nèi)的一些平臺(tái)鏡像倉庫上拉取2017-05-05使用docker?部署mysql突然連接不上的問題及解決方法
這篇文章主要介紹了使用docker?部署mysql,突然連接不上,要解決這個(gè)問題需要找到根本原因,對(duì)癥治療就好,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06使用Nexus創(chuàng)建Docker倉庫的方法步驟
這篇文章主要介紹了使用Nexus創(chuàng)建Docker倉庫的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12使用Docker部署Tomcat的實(shí)現(xiàn)示例
在本地編寫好了Spring項(xiàng)目,為了實(shí)現(xiàn)能夠隨時(shí)地訪問,所以需要將項(xiàng)目部署到服務(wù)器,本文主要介紹了使用Docker部署Tomcat的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11docker容器添加對(duì)外映射端口的實(shí)現(xiàn)
本文主要介紹了docker容器添加對(duì)外映射端口的實(shí)現(xiàn) ,從而實(shí)現(xiàn)容器與外部網(wǎng)絡(luò)的通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09使用dockerfile構(gòu)建nginx鏡像的方法示例
這篇文章主要介紹了使用dockerfile構(gòu)建nginx鏡像的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09