gitlab-runner中搭建nvm、nrm以及优化maven打包

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家https://www.captainbed.cn/ntu

因为gitlab-runner作为服务器的一个用户,所以它是不能具备所有root权限的,对于nvm、nrm也是,除非将其安装到非~目录下

git、gitlab-runner

CentOS 7上的GitLab Runner,让你的项目加速奔跑

如何以gitlab-runner执行

sudo -u gitlab-runner -i

sudo -u gitlab-runner -i 是一个 Linux 命令,它的含义可以分解如下:

​ • sudo:表示以超级用户(root)的权限运行接下来的命令。sudo 命令允许你以其他用户的身份运行命令。

​ • -u gitlab-runner:指定要以哪个用户的身份来运行命令。在这个例子中,我们指定了 gitlab-runner 用户。这样后续的命令就会以 gitlab-runner 用户的权限来执行。

​ • -i:表示以登录 shell 模式启动。-i 会让你切换到指定用户的 home 目录,并读取该用户的登录 shell 配置文件(如 .bash_profile 或 .profile),相当于你以该用户身份登录了一次系统。

组合的意义

sudo -u gitlab-runner -i 命令的完整含义就是:

以 gitlab-runner 用户的身份,以登录 shell 模式运行一个交互式会话(也就是进入 gitlab-runner 用户的 shell)。

执行这个命令后,你的命令提示符会切换到 gitlab-runner 用户的上下文,并且当前目录也会切换到 gitlab-runner 用户的 home 目录。此时,你就可以以 gitlab-runner 用户的权限执行接下来的命令,类似于你直接以 gitlab-runner 用户登录。

应用场景

​ • 检查用户权限:使用 gitlab-runner 用户身份来检查是否能访问某些文件或执行某些命令。

​ • 配置环境:在用户的 home 目录中配置 .bashrc 或 .bash_profile,以确保用户登录后有正确的环境变量配置。

​ • 调试 GitLab Runner 问题:如果 gitlab-runner 用户在 GitLab CI/CD 中无法正确执行一些命令,可以通过切换到该用户身份来手动测试命令的执行情况。

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

或者通过添加以下内容到 ~/.bashrc 文件中,以便每次启动终端时自动加载:

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为版本号
nvm install 14.15.1

下载nrm

npm install -g nrm

下载成功截图

image-20241025152640782

上面虽然是在系统中搭建的,但是在gitlab-runner中搭建方式也是一样的

注意:在编写gitlab-ci.yml的时候要执行 source ~/.bashrc

build:
  stage: build
#  image: node:16  # 使用 Node.js 14 镜像作为构建环境
  script:
    - source ~/.bashrc # 自动加载配置文件
    - npm install  # 安装项目依赖
    - npm run build  # 执行构建命令,生成静态文件
    - tar -czf public.tar.gz -C public .  # 将 public 目录下的内容打包为 public.tar.gz
  artifacts:
    paths:
      - public.tar.gz  # 将打包后的文件作为 artifacts,以供后续阶段使用
  tags:
#    - saas-linux-small-amd64
    - acowbo-node

优化maven

image-20241025180444436

优化前大概发一次版本需要三分钟,优化后仅需要不到40s

这里给大家提供一个思路

  • 优化拉依赖(如果你没有本地仓库的话,就会每次都要拉取线上的依赖,非常费时间)优化打包(如果你的项目很大,这时候就要想优化打包了,因为对于不同服务器的文件传输,也是很费时间的)
### 安装和配置 GitLab Runner #### 1. 安装 GitLab Runner 为了在 CentOS 7 上安装 GitLab Runner,可以通过官方 Yum 源完成安装过程。以下是具体的操作: 通过命令获取并添加 GitLab Runner 的 Yum 源: ```bash curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash ``` 接着,使用 `yum` 命令来安装 GitLab Runner: ```bash sudo yum install gitlab-ci-multi-runner ``` 这一步会将 GitLab Runner 成功安装至系统中[^2]。 --- #### 2. 注册 GitLab Runner 注册 GitLab Runner 是将其关联到特定的 GitLab 项目的关键步骤。进入目标项目的 **Settings -> CI/CD** 页面,在 Runners 部分找到 URL 和 Token。 执行以下命令以启动注册流程: ```bash sudo gitlab-runner register ``` 按照提示输入必要的参数,例如项目的 URL、Token、描述以及标签等。对于构建工具的选择,推荐指定 Docker 或 Shell Executor 来支持 Maven 构建环境[^3]。 --- #### 3. 创建 `.gitlab-ci.yml` 文件 `.gitlab-ci.yml` 是定义 CI/CD 流程的核心文件。下面是一个适用于 Maven 项目的简单示例: ```yaml stages: - build - test - deploy variables: MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: paths: - .m2/repository/ build_job: stage: build script: - mvn clean package -DskipTests=true artifacts: paths: - target/*.jar test_job: stage: test script: - mvn test deploy_job: stage: deploy script: - echo "Deploying application..." - scp target/app.jar user@remote-server:/path/to/deploy/ ``` 上述 YAML 文件分为三个阶段:`build`(编译)、`test`(测试)和 `deploy`(部署)。其中,`mvn clean package` 负责生成可执行 JAR 文件;而 `scp` 则用于远程服务器上的应用部署[^4]。 注意:如果需要更复杂的依赖管理或者额外软件的支持,则可能需要自定义 Docker 镜像作为 Runner 的运行环境。 --- #### 4. 修改 Runner 用户权限 默认情况下,GitLab Runner 使用的是低权限账户运行任务。然而某些操作(如访问受限目录或修改系统设置),可能需要更高的权限级别。因此可以考虑切换为 root 用户运行 Runner: 先确认当前用户的实际状态: ```bash ps aux | grep gitlab-runner ``` 卸载现有服务实例后再重新安装,并显式指明工作路径与用户身份: ```bash sudo gitlab-runner uninstall sudo gitlab-runner install --working-directory /home/gitlab-runner --user root sudo gitlab-runner restart ``` 这样能够确保后续脚本顺利执行而不受权限不足的影响。 --- #### 5. 推送配置文件至仓库 最后记得把新创建好的 `.gitlab-ci.yml` 提交回远端代码库以便触发流水线作业: ```bash git add .gitlab-ci.yml git commit -m "Add GitLab CI/CD pipeline definition" git push origin main ``` 一旦推送成功,应该可以在 GitLab Web UI 中观察到对应的 Pipeline 开始运转起来。 --- ### 总结 综上所述,整个过程中涵盖了从基础组件安装直到高级功能定制等多个方面的工作内容。合理利用这些资源可以帮助团队快速建立起一套稳定可靠的持续交付体系结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只牛博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值