当使用 GitLab CI/CD 时,pnpm(Performant npm)可以作为一个高效的包管理工具被整合到不同的阶段以优化构建和部署过程。以下是在 GitLab CI 的不同阶段使用 pnpm 的步骤和示例:
1. 准备阶段:安装 pnpm
在 GitLab CI 的配置文件 .gitlab-ci.yml
中,您可以设置一个初始化阶段用于安装 pnpm。由于 pnpm 更高效地处理依赖和缓存,这能提升后续步骤的速度。
yamlstages: - 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 来安装所有必要的依赖,并执行构建脚本。
yamlbuild_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 执行测试脚本。
yamltest_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
这里,除了安装依赖和运行测试之外,我们还生成了测试报告。使用 artifacts
的 reports
选项可以将测试结果以 JUnit 格式导出,这在 GitLab CI 中用于测试报告的可视化。
4. 部署阶段:使用 pnpm 进行部署
最后,在部署阶段,可以使用 pnpm 来执行部署脚本。
yamldeploy_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 回复