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的使用和维护有章可循,提升团队协作效率,降低运维成本。