溫馨提示×

Ubuntu Node.js項目如何進行持續集成

小樊
39
2025-09-21 07:14:18
欄目: 編程語言

Ubuntu Node.js項目持續集成(CI)實現指南
持續集成(CI)是Node.js項目開發中的關鍵環節,通過自動化代碼集成、構建、測試和部署,提升開發效率并減少人為錯誤。以下是基于Ubuntu系統的常見實現方案及詳細步驟:

一、基礎環境準備

在Ubuntu服務器上,需提前安裝以下工具:

  • Node.js與npm:用于Node.js項目運行和依賴管理??赏ㄟ^NodeSource腳本安裝指定版本(如16.x):
    curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    驗證安裝:node -v(顯示版本號)、npm -v(顯示npm版本)。
  • Git:用于代碼版本控制。安裝命令:
    sudo apt install -y git
    
  • Docker(可選):用于容器化部署,確保環境一致性。安裝命令:
    sudo apt update && sudo apt install -y docker.io
    sudo systemctl enable --now docker
    
  • Jenkins(可選):開源自動化服務器,用于構建復雜CI流水線。安裝步驟參考Jenkins Ubuntu部署指南。

二、常用CI工具及配置

1. GitHub Actions(云原生,適合小型項目)

GitHub Actions是GitHub提供的CI/CD服務,無需自建服務器,配置簡單。

  • 步驟1:創建工作流文件
    在項目根目錄下創建.github/workflows/ci.yml(或deploy.yml),定義CI流程。
  • 步驟2:基礎配置示例
    以下示例實現“代碼推送至main分支時,自動安裝依賴、運行測試”:
    name: Node.js CI
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    jobs:
      build-and-test:
        runs-on: ubuntu-latest
        strategy:
          matrix:
            node-version: [16.x]  # 指定Node.js版本
        steps:
        - name: Checkout code
          uses: actions/checkout@v3  # 拉取代碼
        - name: Set up Node.js
          uses: actions/setup-node@v3
          with:
            node-version: ${{ matrix.node-version }}
        - name: Install dependencies
          run: npm install  # 安裝項目依賴
        - name: Run tests
          run: npm test  # 運行測試(需項目中有test腳本)
    
  • 步驟3:擴展功能(部署)
    若需自動部署到Docker Hub或服務器,可添加以下步驟:
    • 部署到Docker Hub
      jobs:
        deploy:
          runs-on: ubuntu-latest
          steps:
          - name: Checkout code
            uses: actions/checkout@v3
          - name: Set up Node.js
            uses: actions/setup-node@v3
            with:
              node-version: 16.x
          - name: Install dependencies
            run: npm install
          - name: Build Docker image
            run: docker build -t your-dockerhub-username/repo-name:latest .
          - name: Login to Docker Hub
            uses: docker/login-action@v2
            with:
              username: ${{ secrets.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKER_PASSWORD }}
          - name: Push Docker image
            run: docker push your-dockerhub-username/repo-name:latest
      
      需在GitHub倉庫Settings → Secrets中添加DOCKER_USERNAME(Docker Hub用戶名)、DOCKER_PASSWORD(Docker Hub訪問令牌)。
    • 部署到Ubuntu服務器(SSH+PM2)
      使用appleboy/ssh-action插件,通過SSH連接到服務器,執行git pull、npm install、pm2 reload等命令:
      jobs:
        deploy:
          runs-on: ubuntu-latest
          steps:
          - name: Checkout code
            uses: actions/checkout@v3
          - name: SSH Deploy
            uses: appleboy/ssh-action@v0.1.10
            with:
              host: ${{ secrets.SERVER_IP }}
              username: root
              key: ${{ secrets.SSH_PRIVATE_KEY }}  # 服務器SSH私鑰
              script: |
                cd /var/www/your-app  # 項目部署路徑
                git pull origin main
                npm install --production
                pm2 reload ecosystem.config.js --env production
      
      需在GitHub Secrets中添加SERVER_IP(服務器公網IP)、SSH_PRIVATE_KEY(服務器SSH私鑰),并在服務器上配置PM2的ecosystem.config.js。

2. Jenkins(自建,適合企業級復雜項目)

Jenkins是開源自動化服務器,支持復雜流水線(如多階段構建、條件觸發)。

  • 步驟1:安裝Jenkins
    參考Jenkins Ubuntu部署指南,安裝完成后啟動服務:
    sudo systemctl start jenkins
    sudo systemctl enable jenkins
    
    訪問http://<服務器IP>:8080,通過初始密碼解鎖并安裝推薦插件(如Pipeline、GitHub Integration、NodeJS)。
  • 步驟2:配置全局工具
    進入Manage Jenkins → Global Tool Configuration,配置以下工具:
    • Node.js:選擇“自動安裝”(指定版本,如16.x)或手動指定安裝路徑。
    • Git:填寫Git安裝路徑(如/usr/bin/git)。
  • 步驟3:創建Pipeline任務
    • 新建Pipeline任務,配置Source Code Management(選擇Git,填寫倉庫URL和憑證)。
    • Pipeline腳本中定義流水線(支持Groovy語法),示例如下:
      pipeline {
        agent any
        environment {
          NODE_ENV = 'production'
        }
        stages {
          stage('Checkout') {
            steps {
              git branch: 'main', url: 'https://github.com/your-username/your-repo.git'
            }
          }
          stage('Install Dependencies') {
            steps {
              sh 'npm install'
            }
          }
          stage('Run Tests') {
            steps {
              sh 'npm test'
            }
          }
          stage('Deploy to Server') {
            steps {
              sshagent(['your-ssh-credential-id']) {  // 關聯Jenkins SSH憑證
                sh '''
                  ssh root@your-server-ip "cd /var/www/your-app && git pull origin main && npm install --production && pm2 reload ecosystem.config.js --env production"
                '''
              }
            }
          }
        }
      }
      
      需在JenkinsCredentials中添加GitHub憑證(用于拉取代碼)和SSH憑證(用于連接服務器)。

三、關鍵注意事項

  • 權限管理:確保GitHub Secrets中的敏感信息(如私鑰、密碼)加密存儲,避免泄露。
  • 環境一致性:使用Docker或actions/setup-node插件,確保開發、測試、生產環境一致。
  • 日志與監控:通過pm2 logs查看應用日志,使用GitHub Actions或Jenkins的構建日志排查問題。
  • 觸發條件:可根據需求配置觸發條件(如push、pull_request、定時觸發),避免頻繁構建。

通過以上步驟,可實現Ubuntu Node.js項目的持續集成,提升開發效率和代碼質量。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女