Ubuntu Node.js如何进行持续集成
在Ubuntu上进行Node.js持续集成可参考以下方案,以Jenkins和GitLab CI为例:
一、Jenkins方案
-
环境准备
- 安装JDK、Node.js、Git:
sudo apt update sudo apt install openjdk-11-jdk nodejs npm git
- 安装Jenkins并启动:
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
- 安装JDK、Node.js、Git:
-
配置Jenkins
- 安装插件:Pipeline、GitHub Integration、NodeJS、Publish over SSH。
- 配置全局工具:在“Manage Jenkins”→“Global Tool Configuration”中设置Node.js路径。
- 添加GitHub凭证:在“Credentials”中配置仓库访问密钥。
-
创建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"' } } } } }
- 使用
二、GitLab CI方案
-
环境准备
- 安装GitLab Runner:
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 Runner:
-
配置
.gitlab-ci.yml
- 定义CI/CD阶段,示例:
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
- 定义CI/CD阶段,示例:
三、关键工具说明
- PM2:用于生产环境进程管理,支持自动重启和日志监控,可通过
pm2 start app.js
启动应用。 - Docker(可选):可将应用打包为容器,通过Jenkins或GitLab CI部署到服务器,简化环境依赖问题。
四、注意事项
- 敏感信息(如SSH密钥、API密钥)需通过工具变量或密钥管理工具存储,避免硬编码在配置文件中。
- 生产环境建议使用环境变量配置数据库连接等参数,而非直接写入代码。
以上方案可根据项目需求选择,Jenkins适合复杂构建流程,GitLab CI适合与GitLab仓库深度集成的场景。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!