Ubuntu环境下Jenkins文档编写指南
# 更新系统包索引 sudo apt update # 安装OpenJDK 11 sudo apt install -y openjdk-11-jdk # 下载并添加Jenkins官方GPG密钥 wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - # 添加Jenkins稳定版仓库 sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' # 更新包索引并安装Jenkins sudo apt update && sudo apt install -y jenkins sudo systemctl start jenkins sudo systemctl enable jenkins /etc/sysconfig/jenkins(或/etc/default/jenkins)中的JENKINS_PORT参数,然后重启服务;开放防火墙端口(若启用):sudo ufw allow 8080/tcp sudo cat /var/lib/jenkins/secrets/initialAdminPassword http://<服务器IP>:8080,输入初始密码完成登录;Jenkins Pipeline是实现持续集成的核心工具,通过代码定义构建、测试、部署流程,支持声明式(结构化、易读)和脚本式(灵活、复杂逻辑)两种语法。Ubuntu环境下,推荐使用声明式Pipeline(与Ubuntu的包管理、脚本风格契合)。
Jenkinsfile置于项目根目录,与代码一同纳入版本控制(如Git),确保流程可追溯;pipeline { // 指定执行节点(Ubuntu服务器标签,如'ubuntu-agent') agent { label 'ubuntu-agent' } // 定义环境变量(避免硬编码敏感信息) environment { API_KEY = credentials('api-key-secret') // 从Jenkins凭证管理读取 MAVEN_OPTS = '-Xmx1024m' } // 定义流水线阶段 stages { stage('Checkout') { steps { // 从Git拉取代码(需提前配置凭据) git branch: 'main', url: 'https://github.com/your-repo/project.git' } } stage('Build') { steps { // 使用Maven构建项目(Ubuntu下需提前安装Maven) sh 'mvn clean package -DskipTests' } } stage('Test') { steps { // 运行单元测试并生成报告 sh 'mvn test' // 发布测试报告(JUnit格式) junit 'target/surefire-reports/*.xml' } } stage('Deploy') { when { branch 'main' } // 仅主分支部署到生产环境 steps { // 通过SCP部署到Ubuntu服务器 sh 'scp target/*.jar ubuntu@deploy-server:/opt/app/' // 执行远程命令重启应用 sh 'ssh ubuntu@deploy-server "systemctl restart app.service"' } } } // 后置操作(构建完成后执行) post { success { echo '构建成功!' // 发送邮件通知(需配置Email Extension插件) emailext body: '构建成功:${BUILD_URL}', subject: 'Jenkins构建成功', to: 'dev-team@example.com' } failure { echo '构建失败!' // 发送失败通知 emailext body: '构建失败:${BUILD_URL}', subject: 'Jenkins构建失败', to: 'dev-team@example.com' } } } credentials函数安全引用;sh命令执行Shell脚本,通过echo输出关键步骤日志,便于排查问题;parameters定义可配置参数(如分支、环境),提升流水线复用性:parameters { choice(name: 'ENVIRONMENT', choices: ['dev', 'staging', 'prod'], description: '部署环境') string(name: 'BRANCH', defaultValue: 'main', description: 'Git分支') } 将通用功能(如部署脚本、构建工具封装)提取为共享库,避免重复代码,提升团队协作效率。Ubuntu环境下,共享库可集中管理Ubuntu相关的操作(如SCP部署、APT安装)。
标准共享库目录结构如下:
my-jenkins-library/ ├── src/ # Groovy源代码(自定义类) │ └── org/ │ └── mycompany/ │ └── utils/ │ └── CommonUtils.groovy ├── vars/ # 全局变量/函数(可直接在Pipeline中调用) │ ├── deployToUbuntu.groovy │ └── installDependencies.groovy ├── resources/ # 资源文件(如配置文件) │ └── config.properties └── tests/ # 测试代码(确保功能稳定性) └── DeployToUbuntuTest.groovy vars/deployToUbuntu.groovy:/** * 部署文件到Ubuntu服务器 * @param sourcePath 本地源文件路径 * @param targetPath 远程目标路径 * @param serverIp 远程服务器IP * @param username 远程服务器用户名 */ def call(String sourcePath, String targetPath, String serverIp, String username = 'ubuntu') { // 使用SCP传输文件 sh "scp ${sourcePath} ${username}@${serverIp}:${targetPath}" // 执行远程命令(如重启服务) sh "ssh ${username}@${serverIp} 'systemctl restart app.service'" } stage('Deploy') { steps { deployToUbuntu(sourcePath: 'target/app.jar', targetPath: '/opt/app/', serverIp: '192.168.1.100') } } v1.0.0);/data/docs/jenkins),设置读写权限(chmod -R 755 /data/docs/jenkins),确保团队成员可访问最新版本。通过以上文档编写规范,可确保Ubuntu环境下Jenkins的使用和维护有章可循,提升团队协作效率,降低运维成本。