Ubuntu Jenkins如何实现自定义脚本执行
导读:Ubuntu 上实现 Jenkins 自定义脚本执行 一 方式总览与选择 Freestyle 项目:通过构建步骤中的Execute shell直接写命令或调用脚本,适合简单任务与快速落地。 Pipeline 项目:用 **Jenkinsf...
Ubuntu 上实现 Jenkins 自定义脚本执行
一 方式总览与选择
- Freestyle 项目:通过构建步骤中的Execute shell直接写命令或调用脚本,适合简单任务与快速落地。
- Pipeline 项目:用 **Jenkinsfile(Groovy DSL)**编排多阶段流程,可纳入版本控制,适合复杂与可复用场景。
- 远程执行:在 Jenkins 节点上执行脚本,并通过 SSH 免密将产物或变更分发到目标服务器(如 Nginx 静态站点)。
二 前置准备
- 安装与启动:在 Ubuntu 上安装并启动 Jenkins,确保服务可用(默认端口 8080)。
- 基础工具:安装项目所需的解释器与环境,例如 Python 3、构建工具、测试框架等。
- 权限与路径:确保工作空间与脚本具备可执行权限,并在 Jenkins 的构建环境里配置好必要的环境变量与工具路径。
三 方式一 Freestyle 项目执行自定义脚本
- 新建任务:选择Freestyle project,在“构建”中点击Add build step → Execute shell。
- 在命令框中直接写入脚本或调用本地脚本,例如:
#!/usr/bin/env bash set -euo pipefail echo "Running custom script..." chmod +x ./build.sh ./build.sh python3 test.py - 保存并点击Build Now,在控制台输出查看执行结果与日志。
四 方式二 Pipeline 项目执行自定义脚本
- 在代码库根目录创建 Jenkinsfile,示例:
pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/your-org/your-repo.git' } } stage('Build') { steps { sh './build.sh' } } stage('Test') { steps { sh './run-tests.sh' } } stage('Report') { steps { junit '**/test-reports/*.xml' publishHTML(target: [ allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: 'test-reports', reportFiles: 'index.html', reportName: 'Test Report' ]) } } } } - 在 Jenkins 中新建Pipeline任务,选择Pipeline script from SCM → Git,填写仓库 URL 与凭证,指定 Script Path(如 Jenkinsfile),保存并构建。
五 方式三 远程执行与发布示例
- 在 Jenkins 节点生成 SSH 密钥并分发到目标服务器,实现免密登录:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q ssh-copy-id user@target-host - 编写部署脚本(如 deploy.sh),在 Jenkins 中调用以拉取代码并发布到 Nginx:
#!/usr/bin/env bash set -euo pipefail APP="bird" APP_PATH="/var/www/html" HOSTS=("10.0.0.13" "10.0.0.14") download() { rm -rf "$APP" git clone git@your-gitlab.com:dev/"$APP".git } deploy() { for h in "${ HOSTS[@]} "; do scp -r "$APP"/* "$h:$APP_PATH/" done } download deploy - 在 Freestyle 的Execute shell或 Pipeline 的 sh 步骤中执行该脚本,完成拉取与发布。
六 常见问题与最佳实践
- 权限与解释器:脚本需chmod +x;在 shebang 中显式声明(如 #!/usr/bin/env bash),避免环境差异导致失败。
- 环境一致性:在 Jenkins 节点预装并验证 Python 3、依赖与工具链;必要时在构建步骤前显式安装或加载环境。
- 日志与报告:使用 set -euo pipefail 提前暴露错误;结合 JUnit 与 HTML Publisher 输出测试与质量报告,便于回溯。
- 安全与可维护性:优先采用 Pipeline + SCM 管理脚本;涉及远程操作尽量使用SSH 密钥或受控凭据,避免明文密码。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Jenkins如何实现自定义脚本执行
本文地址: https://pptw.com/jishu/749143.html
