在Ubuntu上进行Node.js持续集成可参考以下方案,以Jenkins和GitLab CI为例:
环境准备
sudo apt update
sudo apt install openjdk-11-jdk nodejs npm git
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt install jenkins
sudo systemctl start jenkins
配置Jenkins
创建Pipeline任务
Jenkinsfile定义流程,示例步骤:pipeline {
    agent any
    tools { nodejs 'NodeJS-18' } // 配置的Node.js工具名
    stages {
        stage('Clone') {
            steps { git branch: 'main', url: 'https://github.com/your-repo.git' }
        }
        stage('Install') {
            steps { sh 'npm install' }
        }
        stage('Test') {
            steps { sh 'npm test' }
        }
        stage('Deploy') {
            steps {
                sshagent(['your-ssh-credential']) {
                    sh 'ssh user@server "cd /app && git pull && npm install && pm2 restart app"'
                }
            }
        }
    }
}
环境准备
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner
sudo gitlab-runner register # 按提示配置URL和token
配置.gitlab-ci.yml
stages:
  - build
  - test
  - deploy
build:
  stage: build
  image: node:18
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - dist/
deploy:
  stage: deploy
  image: alpine
  before_script:
    - apk add --no-cache ssh
  script:
    - ssh user@server "cd /app && git pull && npm install && pm2 restart app"
  only:
    - main
pm2 start app.js启动应用。以上方案可根据项目需求选择,Jenkins适合复杂构建流程,GitLab CI适合与GitLab仓库深度集成的场景。