Jenkins如何在Ubuntu上实现自定义脚本执行
导读:在 Ubuntu 上使用 Jenkins 执行自定义脚本的完整指南 一 环境准备与前提 在 Ubuntu 上安装并启动 Jenkins,默认监听 8080 端口;首次访问完成解锁与插件安装。 确保运行 Jenkins 的用户(如 jenk...
在 Ubuntu 上使用 Jenkins 执行自定义脚本的完整指南
一 环境准备与前提
- 在 Ubuntu 上安装并启动 Jenkins,默认监听 8080 端口;首次访问完成解锁与插件安装。
- 确保运行 Jenkins 的用户(如 jenkins)对脚本与工作目录具备读/执行权限。
- 若脚本依赖 Git、Docker、Python 等工具,需在 Jenkins 节点上预先安装并配置好环境变量与凭据。
二 方式一 Pipeline 项目执行脚本
- 新建任务:在 Jenkins 首页选择 New Item → Pipeline,命名并保存。
- 定义脚本来源:
- 直接在页面使用 Pipeline script 编写 Groovy;
- 更推荐 Pipeline script from SCM,从 Git 仓库拉取 Jenkinsfile。
- 示例 Jenkinsfile(放于仓库根目录,路径可在 SCM 步骤中指定):
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './build_script.sh'
}
}
stage('Test') {
steps {
sh './test_script.sh'
}
}
stage('Deploy') {
steps {
sh './deploy_script.sh'
}
}
}
}
- 脚本准备与权限:在项目根目录放置 build_script.sh / test_script.sh / deploy_script.sh,并赋予可执行权限:
chmod +x *.sh
- 保存后点击 Build Now,在控制台输出中查看执行结果与日志。
三 方式二 Freestyle 项目执行脚本
- 新建任务:选择 New Item → Freestyle project。
- 构建步骤:在 Build 区域点击 Add build step → Execute shell,输入要执行的命令或脚本路径,例如:
#!/usr/bin/env bash
set -euo pipefail
echo "Running custom script..."
./your_script.sh
- 保存并构建,查看 Console Output 定位问题。
四 实用场景示例 拉取代码并发布到远程 Web 服务器
- 在 Jenkins 节点生成 SSH 密钥 并配置到目标 Web 服务器的 authorized_keys,实现免密登录:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q
ssh-copy-id 10.0.0.13
ssh-copy-id 10.0.0.14
- 编写发布脚本(示例路径 /yinzhengjie/script/jenkins/deploy-bird-script.sh):
#!/usr/bin/env bash
set -euo pipefail
HOST_LIST="10.0.0.13 10.0.0.14"
APP=bird
APP_PATH=/var/www/html
download() {
rm -rf "${
APP}
"
git clone git@www.yinzhengjie.com:dev/bird.git
}
deploy() {
for i in ${
HOST_LIST}
;
do
scp -r "${
APP}
"/* "${
i}
:${
APP_PATH}
/"
done
}
download
deploy
- 在 Jenkins 中新建任务(Freestyle 或 Pipeline),在构建步骤中执行该脚本或将其纳入 Jenkinsfile 的某个 stage;构建后通过浏览器访问 http://< web_ip> / 验证发布结果。
五 常见问题与最佳实践
- 权限与路径:确保 Jenkins 用户对脚本与工作区有执行/读写权限;脚本首行建议使用 #!/usr/bin/env bash;必要时使用绝对路径。
- 幂等与清理:在脚本开头做好目录清理与锁文件机制,避免并发构建冲突。
- 日志与失败处理:使用 set -euo pipefail 让脚本在错误时立即退出;关键步骤打印日志,便于在 Console Output 排查。
- 凭据与密钥:拉取 Git、登录远程主机或推送镜像时,使用 Jenkins Credentials 管理 SSH 私钥/用户名密码,避免明文存放。
- 容器化运行:若使用 Docker 运行 Jenkins,按需挂载 /var/run/docker.sock 与工具链,确保容器内可调用宿主机 Docker(仅在可信环境下使用)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何在Ubuntu上实现自定义脚本执行
本文地址: https://pptw.com/jishu/766430.html
