在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。