在Ubuntu上集成Node.js的CI/CD可采用GitHub Actions、Jenkins等工具,以下是基于GitHub Actions的典型方案:
环境准备
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -安装指定版本。创建CI/CD工作流
.github/workflows/ci.yml文件,定义构建、测试、部署流程。name: Node.js CI/CD
on:
push:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- run: npm install
- run: npm test
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- run: npm install
- run: npm run build
- name: Deploy to Server
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
echo "$SSH_PRIVATE_KEY" > private_key.pem
chmod 600 private_key.pem
scp -o StrictHostKeyChecking=no -r dist/* user@server:/var/www/html
actions/setup-node:设置Node.js环境。npm test:运行测试(需提前配置测试脚本)。scp:通过SSH部署到服务器,需在GitHub Secrets中配置私钥。部署到Docker(可选)
- name: Build Docker Image
run: docker build -t your-dockerhub-username/your-repo:tag .
- name: Push to Docker Hub
uses: docker/build-push-action@v2
with:
push: true
tags: your-dockerhub-username/your-repo:tag
需提前创建Dockerfile并登录Docker Hub。工具对比
| 工具 | 适用场景 | 优势 |
|---|---|---|
| GitHub Actions | 云原生、轻量级项目 | 与GitHub深度集成,无需额外服务器 |
| Jenkins | 企业级复杂流水线 | 支持多环境、插件生态丰富 |
| GitLab CI | 自托管Git仓库 | 内置Runner,适合大规模团队 |
注意事项:
matrix策略测试多版本Node.js。