如何自定义Ubuntu Jenkins部署脚本
导读:自定义Ubuntu Jenkins部署脚本的完整步骤 1. 环境准备 在开始自定义脚本前,需确保Ubuntu服务器已完成Jenkins基础环境配置: 安装Jenkins:通过apt添加Jenkins官方仓库并安装(参考搜索结果中“安装Je...
自定义Ubuntu Jenkins部署脚本的完整步骤
1. 环境准备
在开始自定义脚本前,需确保Ubuntu服务器已完成Jenkins基础环境配置:
- 安装Jenkins:通过
apt添加Jenkins官方仓库并安装(参考搜索结果中“安装Jenkins”部分); - 安装依赖工具:根据项目需求安装Java(
openjdk-11-jdk)、Git、Maven/Node.js、Docker等(如使用Docker部署,需授权Jenkins用户操作Docker:sudo usermod -aG docker jenkins); - 配置全局工具:进入Jenkins“Manage Jenkins > Global Tool Configuration”,设置JDK、Git、Maven/Node.js的安装路径。
2. 选择任务类型
Jenkins支持两种任务类型,根据项目复杂度选择:
- Freestyle Project:适合简单脚本,通过“Execute shell”步骤直接运行Shell命令;
- Pipeline:适合复杂项目,使用Groovy语言定义声明式或脚本式流水线,支持阶段(stages)、步骤(steps)、环境变量等特性,推荐用于自定义部署。
3. 配置脚本来源
根据任务类型选择脚本配置方式:
-
Freestyle Project:
- 进入任务配置页面,找到“Build” section;
- 点击“Add build step”,选择“Execute shell”;
- 输入自定义Shell脚本(如拉取代码、编译、部署),例如:
#!/bin/bash echo "开始拉取代码..." git clone https://github.com/your/repo.git cd repo echo "编译项目..." mvn clean package -DskipTests echo "部署到本地服务器..." cp target/*.jar /opt/app/ systemctl restart myapp.service - 保存配置。
-
Pipeline:
- 新建“Pipeline”任务,选择“Pipeline script from SCM”(推荐,便于版本控制);
- 配置代码仓库(如Git)地址、分支及凭据;
- 在项目根目录创建
Jenkinsfile,定义流水线逻辑(示例见下文)。
4. 编写自定义脚本
Freestyle Project脚本示例
若项目为Java应用,脚本可包含拉取代码→编译→打包→部署步骤:
#!/bin/bash
# 拉取最新代码
git -C /opt/repo pull origin main || {
echo "拉取代码失败";
exit 1;
}
# 编译项目
cd /opt/repo
mvn clean package -DskipTests || {
echo "编译失败";
exit 1;
}
# 备份旧jar包
cp /opt/app/app.jar /opt/app/app_backup_$(date +%Y%m%d).jar || {
echo "备份失败";
exit 1;
}
# 部署新jar包
cp target/*.jar /opt/app/app.jar
# 重启服务
systemctl restart myapp.service || {
echo "重启服务失败";
exit 1;
}
echo "部署成功!"
注意:需给脚本添加执行权限(chmod +x /opt/repo/deploy.sh),并在Jenkins中调用该脚本。
Pipeline脚本示例
若项目为Spring Boot+Docker应用,Jenkinsfile可定义代码拉取→构建→Docker镜像→部署流程:
pipeline {
agent any
environment {
DOCKER_IMAGE = "your-dockerhub-username/springboot-app:${
BUILD_NUMBER}
"
DOCKER_REGISTRY = "https://registry.hub.docker.com"
REMOTE_SERVER = "user@deploy-server"
REMOTE_DIR = "/opt/app"
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your/repo.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('Build Docker Image') {
steps {
script {
docker.build(DOCKER_IMAGE)
}
}
}
stage('Push to Docker Hub') {
steps {
script {
docker.withRegistry(DOCKER_REGISTRY, 'dockerhub-credential-id') {
dockerImage.push()
}
}
}
}
stage('Deploy to Remote Server') {
steps {
script {
// 停止旧容器、删除旧镜像、拉取新镜像、启动新容器
sh """
ssh ${
REMOTE_SERVER}
"docker stop springboot-app || true"
ssh ${
REMOTE_SERVER}
"docker rm springboot-app || true"
ssh ${
REMOTE_SERVER}
"docker rmi ${
DOCKER_IMAGE}
|| true"
ssh ${
REMOTE_SERVER}
"docker pull ${
DOCKER_IMAGE}
"
ssh ${
REMOTE_SERVER}
"docker run -d -p 8080:8080 --name springboot-app ${
DOCKER_IMAGE}
"
"""
}
}
}
}
post {
success {
echo "部署成功!"
}
failure {
echo "部署失败,请检查日志!"
}
}
}
说明:
environment:定义全局环境变量(如Docker镜像名称、远程服务器信息);stages:划分构建流程为多个阶段,每个阶段包含具体步骤;script:在Pipeline中嵌入Shell脚本(用于远程部署);post:定义构建完成后的操作(如发送通知)。
5. 配置触发器(可选)
实现代码变更自动触发构建:
- Poll SCM:在Pipeline配置中添加“Poll SCM”,设置cron表达式(如
H/5 * * * *表示每5分钟检查一次代码变更); - Webhook:在Git仓库(如GitHub)配置Webhook,指向Jenkins的
/project/your-job-name接口,当代码推送时自动触发构建。
6. 测试与调试
- 手动触发:点击Jenkins任务页面的“Build Now”,查看控制台输出确认脚本执行情况;
- 日志分析:若构建失败,通过控制台日志定位问题(如权限不足、依赖缺失);
- 权限调整:若遇到权限问题,给Jenkins用户添加相应权限(如Docker组:
sudo usermod -aG docker jenkins)。
通过以上步骤,可完成Ubuntu环境下Jenkins自定义部署脚本的配置。根据项目需求调整脚本内容(如添加测试阶段、通知功能),实现灵活的自动化部署流程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何自定义Ubuntu Jenkins部署脚本
本文地址: https://pptw.com/jishu/742366.html
