Debian系统下Jenkins自定义构建脚本的完整流程
在Debian系统上,Jenkins的自定义构建脚本主要通过Pipeline(流水线)实现,支持将构建、测试、部署等步骤标准化、可视化。以下是具体操作步骤:
sudo apt update sudo apt install openjdk-11-jdk java -version # 验证安装(输出Java版本信息即成功)
wget -q -O - https://pkg.jenkins.io/debian/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 update sudo apt install jenkins
sudo systemctl start jenkins sudo systemctl enable jenkins # 开机自启
http://<服务器IP>:8080
,通过/var/lib/jenkins/secrets/initialAdminPassword
获取初始密码解锁,完成初始配置(如安装推荐插件)。Manage Jenkins > Plugin Manager
,安装Pipeline(核心插件)、Git(代码托管库集成)、SSH Agent(远程服务器操作)等插件。New Item
,输入任务名称(如my-app-ci
),选择Pipeline
类型,点击OK
。Discard old builds
(避免磁盘空间占用,可设置保留最近10次构建)。Pipeline script from SCM
(从代码仓库获取脚本,推荐方式)。https://github.com/your-repo/my-app.git
)。*/main
,表示main
分支)。Jenkinsfile
,即仓库根目录下的Jenkinsfile
文件)。Jenkinsfile是定义构建流程的核心脚本,采用Groovy语法,需放置在项目根目录下(与代码一起提交到仓库)。以下是一个通用模板(可根据实际需求调整):
pipeline { agent any // 使用任意可用节点执行(若需指定节点,可改为`agent { label 'ubuntu-node' }`) environment { // 定义环境变量(可选) ARTIFACT_DIR = "target" // 构建产物目录 DEPLOY_SERVER = "user@remote-server" // 远程服务器地址 DEPLOY_PATH = "/opt/my-app" // 远程部署路径 } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-repo/my-app.git' // 拉取代码(可直接复用SCM配置,此处为冗余示例) } } stage('Build') { steps { echo '正在构建项目...' sh 'mvn clean package -Dmaven.test.skip=true' // Maven项目构建(跳过测试) // 若为Python项目:sh 'python setup.py build' // 若为Node.js项目:sh 'npm install && npm run build' } } stage('Test') { steps { echo '正在运行测试...' sh 'mvn test' // Maven项目运行单元测试 // 若为Python项目:sh 'python -m pytest tests/' } } stage('Deploy') { steps { echo '正在部署到远程服务器...' sshPublisher( publishers: [ sshPublisherDesc( configName: 'remote-ssh', // 需提前在Jenkins中配置SSH凭据(Manage Jenkins > Credentials) transfers: [ sshTransfer( sourceFiles: "${ARTIFACT_DIR}/*.jar", // 本地构建产物路径 removePrefix: ARTIFACT_DIR, // 移除本地路径前缀 remoteDirectory: DEPLOY_PATH // 远程目标路径 ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true ) ] ) // 若为直接执行脚本:sh 'ssh ${DEPLOY_SERVER} "cd ${DEPLOY_PATH} && ./restart.sh"' } } } post { always { echo '构建完成(无论成功失败都会执行)' junit '**/target/surefire-reports/*.xml' // 发布测试报告(Maven项目) // 若为其他测试框架:junit '**/tests/results/*.xml' } success { echo '构建成功!' mail to: 'team@example.com', subject: "构建成功: ${currentBuild.fullDisplayName}", body: "项目 ${currentBuild.fullDisplayName} 构建成功!" } failure { echo '构建失败!' mail to: 'team@example.com', subject: "构建失败: ${currentBuild.fullDisplayName}", body: "项目 ${currentBuild.fullDisplayName} 构建失败,请检查日志!" } } }
关键说明:
any
表示任意可用节点,生产环境建议指定固定节点)。stage
(阶段),每个stage
代表一个构建步骤(如Checkout
拉取代码、Build
编译、Test
测试、Deploy
部署)。stage
下的具体操作,常用sh
(执行Shell命令)、bat
(Windows批处理)、echo
(打印日志)等。若构建流程需要将产物部署到远程服务器,需提前配置SSH凭据:
Manage Jenkins > Credentials
,点击System
> Global credentials
。Add Credentials
,选择SSH Username with private key
类型: root
、ubuntu
)。Enter directly
,粘贴远程服务器的私钥(需提前生成,如ssh-keygen -t rsa
)。OK
保存。Build Now
即可手动启动构建。Pipeline
配置中添加触发器,如: H/5 * * * *
表示每5分钟检查一次)。http://<Jenkins服务器IP>:8080/git/notifyCommit?url=<仓库URL>
,实现代码提交后自动触发构建。Build History
中的构建编号,可查看: junit
步骤)。target/*.jar
文件,可通过Artifacts
链接下载)。通过以上步骤,即可在Debian系统上完成Jenkins自定义构建脚本的配置。根据项目需求(如语言、部署目标),可调整Jenkinsfile中的steps
和environment
,实现灵活的CI/CD流程。