乐闻世界logo
搜索文章和话题

如何在不同的 Gitlab CI 阶段使用 pnpm

6 个月前提问
4 个月前修改
浏览次数93

1个答案

1

当使用 GitLab CI/CD 时,pnpm(Performant npm)可以作为一个高效的包管理工具被整合到不同的阶段以优化构建和部署过程。以下是在 GitLab CI 的不同阶段使用 pnpm 的步骤和示例:

1. 准备阶段:安装 pnpm

在 GitLab CI 的配置文件 .gitlab-ci.yml 中,您可以设置一个初始化阶段用于安装 pnpm。由于 pnpm 更高效地处理依赖和缓存,这能提升后续步骤的速度。

yaml
stages: - setup - build - test - deploy install_pnpm: stage: setup image: node:latest script: - npm install -g pnpm cache: key: ${CI_COMMIT_REF_SLUG} paths: - .pnpm-store

在这个阶段,我们使用了 Node 的官方镜像,并全局安装了 pnpm。此外,我们配置了缓存来存储 pnpm 的存储库,减少后续步骤的下载时间。

2. 构建阶段:使用 pnpm 安装依赖和构建

在构建阶段,我们利用 pnpm 来安装所有必要的依赖,并执行构建脚本。

yaml
build_app: stage: build image: node:latest script: - pnpm install --frozen-lockfile - pnpm run build cache: key: ${CI_COMMIT_REF_SLUG} paths: - .pnpm-store - node_modules/ artifacts: paths: - build/ expire_in: 1 hour

在这里,pnpm install --frozen-lockfile 确保使用锁文件精确安装依赖,而 pnpm run build 则是执行构建过程。我们同样缓存了 node_modules 目录以加速后续步骤,并设置了构建产物作为工件保存。

3. 测试阶段:使用 pnpm 运行测试

在测试阶段,我们使用 pnpm 执行测试脚本。

yaml
test_app: stage: test image: node:latest script: - pnpm install - pnpm test cache: key: ${CI_COMMIT_REF_SLUG} paths: - .pnpm-store - node_modules/ artifacts: when: always reports: junit: test-results.xml

这里,除了安装依赖和运行测试之外,我们还生成了测试报告。使用 artifactsreports 选项可以将测试结果以 JUnit 格式导出,这在 GitLab CI 中用于测试报告的可视化。

4. 部署阶段:使用 pnpm 进行部署

最后,在部署阶段,可以使用 pnpm 来执行部署脚本。

yaml
deploy_app: stage: deploy image: node:latest script: - pnpm install --production - pnpm run deploy cache: paths: - .pnpm-store - node_modules/

在部署时,通过 pnpm install --production 只安装生产依赖,这样可以减少部署包的大小和提高部署效率。然后用 pnpm run deploy 来执行部署过程。

通过在 GitLab CI 的不同阶段合理地使用 pnpm,可以显著提升 CI/CD 流程的效率和性能。

2024年6月29日 12:07 回复

你的答案