在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倉庫深度集成的場景。